“MCookie-LEGOShield/zh”的版本间的差异
(Created page with "{{Language|mCookie-Motor}} {| style="width: 800px;" |- | 400px|thumb|right|mCookie-Motor mCookie-Motor是一款直流电机(马达)控制器...") |
Zhangfengfeng(讨论 | 贡献) (→文档) |
||
(未显示2个用户的16个中间版本) | |||
第3行: | 第3行: | ||
|- | |- | ||
| | | | ||
− | [[File: | + | [[File:mCookie-LEGOShield.jpg|400px|thumb|right|mCookie-LEGOShield]] |
− | mCookie- | + | |
+ | mCookie-LEGOShield(下文中简称shield)是一款乐高兼容底板,在兼容乐高NXT接口传感器和电机的同时,能够继续堆叠mCookie模块,让乐高更加智能。 | ||
第12行: | 第13行: | ||
==特色== | ==特色== | ||
− | * | + | *4路电机接口,兼容乐高NXT电机; |
− | * | + | *4路普通传感器接口,兼容NXT接口的按键、声音传感器等; |
− | * | + | *2路全功能传感器接口,除了能兼容普通传感器接口的所有传感器之外,兼容NXT接口的超声波传感器和颜色传感器; |
− | * | + | *IIC接口通讯,不占用其他多余IO口 |
==规格== | ==规格== | ||
− | * | + | *供电:使用2S航模锂电池供电,7.4V。 |
− | * | + | *主控:MCookie-LEGOShield采用Atmega328p主控,独立运行驱动程序。 |
+ | *通讯:IIC通讯,地址0x08(可自定义) | ||
+ | *接口:4个NXT电机接口,6个NXT传感器接口(其中只有S1、S2支持超声波传感器和颜色传感器) | ||
{|class="wikitable" | {|class="wikitable" | ||
− | ! rowspan="1" |mCookie引脚|| | + | ! rowspan="1" |mCookie引脚||shield芯片引脚||功能 |
|- | |- | ||
− | | | + | | SDA||SDA|| IIC接口SDA引脚 |
|- | |- | ||
− | | | + | | SCL||SCL|| IIC接口SCL引脚 |
|- | |- | ||
− | | | + | | D0|| D1||mCookie的Serial1 RX(可选悍,默认不连接) |
|- | |- | ||
− | | | + | | D1|| D0||mCookie的Serial1 TX (可选悍,默认不连接) |
|- | |- | ||
− | | | + | | 5V||5V||可以用shield给mCookie供电 |
|- | |- | ||
| GND||GND||共地 | | GND||GND||共地 | ||
第37行: | 第40行: | ||
*注意: | *注意: | ||
− | ** | + | **shield的IIC从机地址位可调节,需要重新烧写固件。 |
− | ** | + | **如果使用shield供电,由于shield固件初始化需要一定时间,所以在mCookie写控制程序的时候需要上点延迟一会再运行(delay一段时间) |
− | |||
− | |||
− | |||
− | |||
+ | [[File:mCookie-LEGOShield-TOP.jpg|800px|thumb|center]] | ||
+ | [[File:mCookie-LEGOShield-BUT.jpg|800px|thumb|center]] | ||
==开发== | ==开发== | ||
+ | shield采用IIC接口通讯,IIC地址默认为0x08,就像其他芯片一样读写寄存器地址。 | ||
+ | API接口说明.pdf | ||
+ | *针对各个传感器和电机已经做了常用的驱动封装,不需要关注底层的API | ||
+ | *直接调用库里的方法就可以操作,具体的协议在shield自己的主控里已经实现 | ||
+ | *在开始使用各种传感器和电机直前,要先设置传感器的类型和每个接口的连接与否 | ||
+ | *只有S1和S2支持超声波和颜色传感器 | ||
+ | ===使用乐高NXT接口按键=== | ||
+ | 常用方法: | ||
+ | ====判断是否按下==== | ||
+ | ====判断是否释放==== | ||
+ | <source lang="cpp"> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</source> | </source> | ||
− | === | + | ===使用乐高NXT接口电机=== |
− | + | 常用方法: | |
− | + | ====设置固定的速度==== | |
− | + | 速度范围:-255~255 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<source lang="cpp"> | <source lang="cpp"> | ||
− | # | + | #include <mCookieLEGO.h> |
− | # | + | #include "Wire.h" |
− | |||
− | |||
− | void setup() | + | mCookieLEGO m; |
− | { | + | void setup(){ |
− | + | Wire.begin(); | |
− | + | m.configConnection(0xFFFF); //设置每个接口的连接情况 | |
− | |||
− | |||
} | } | ||
− | void loop() | + | void loop(){ |
− | { | + | m.motor_setFixedDrive(mCookieLEGO::M1, 50); |
− | + | delay(1); // very important | |
− | delay( | + | m.motor_setFixedDrive(mCookieLEGO::M2, 50); |
− | + | delay(1); // very important | |
− | delay( | + | m.motor_setFixedDrive(mCookieLEGO::M3, 50); |
− | + | delay(1); // very important | |
− | delay( | + | m.motor_setFixedDrive(mCookieLEGO::M4, 50); |
− | + | delay(2000); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
</source> | </source> | ||
+ | ===使用乐高NXT接口超声波=== | ||
+ | 常用方法: | ||
+ | ====获取当前的距离==== | ||
+ | <source lang="cpp"> | ||
+ | #include <mCookieLEGO.h> | ||
+ | #include "Wire.h" | ||
− | + | mCookieLEGO m; | |
− | + | void setup(){ | |
− | + | Wire.begin(); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | m.configSensorType(mCookieLEGO::S1, mCookieLEGO::SENSOR_ULTRA); // 把S1设置为超声波传感器 | |
− | + | m.configConnection(0xFFFF); | |
− | |||
− | |||
− | |||
− | |||
} | } | ||
− | void loop() | + | uint8_t dis; |
− | { | + | |
− | + | void loop(){ | |
− | + | dis = m.sensor_ultra_getDistance(mCookieLEGO::S1); | |
− | + | Serial.print("dis: "); | |
− | + | Serial.println(dis); | |
− | + | delay(1000); | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
</source> | </source> | ||
==应用== | ==应用== | ||
+ | [[乐高遥控小车]] | ||
− | |||
− | |||
==图库== | ==图库== | ||
− | [[File:mCookie- | + | [[File:mCookie-LEGOShield-pic1.jpg|800px|thumb|center]] |
− | |||
− | |||
|} | |} |
2017年4月21日 (五) 06:11的最新版本
Language | English |
---|
目录特色
规格
开发shield采用IIC接口通讯,IIC地址默认为0x08,就像其他芯片一样读写寄存器地址。 API接口说明.pdf
使用乐高NXT接口按键常用方法: 判断是否按下判断是否释放
使用乐高NXT接口电机常用方法: 设置固定的速度速度范围:-255~255 #include <mCookieLEGO.h>
#include "Wire.h"
mCookieLEGO m;
void setup(){
Wire.begin();
m.configConnection(0xFFFF); //设置每个接口的连接情况
}
void loop(){
m.motor_setFixedDrive(mCookieLEGO::M1, 50);
delay(1); // very important
m.motor_setFixedDrive(mCookieLEGO::M2, 50);
delay(1); // very important
m.motor_setFixedDrive(mCookieLEGO::M3, 50);
delay(1); // very important
m.motor_setFixedDrive(mCookieLEGO::M4, 50);
delay(2000);
}
使用乐高NXT接口超声波常用方法: 获取当前的距离#include <mCookieLEGO.h>
#include "Wire.h"
mCookieLEGO m;
void setup(){
Wire.begin();
m.configSensorType(mCookieLEGO::S1, mCookieLEGO::SENSOR_ULTRA); // 把S1设置为超声波传感器
m.configConnection(0xFFFF);
}
uint8_t dis;
void loop(){
dis = m.sensor_ultra_getDistance(mCookieLEGO::S1);
Serial.print("dis: ");
Serial.println(dis);
delay(1000);
}
应用
图库
|