“MCookie-LEGOShield/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
特色
文档
 
(未显示2个用户的14个中间版本)
第6行: 第6行:
  
  
mCookie-LEGOShield是一款乐高兼容底板,在兼容乐高NXT接口传感器和电机的同时,能够继续堆叠mCookie模块,让乐高更加智能。
+
mCookie-LEGOShield(下文中简称shield)是一款乐高兼容底板,在兼容乐高NXT接口传感器和电机的同时,能够继续堆叠mCookie模块,让乐高更加智能。
  
  
第19行: 第19行:
  
 
==规格==
 
==规格==
*外部供电:BM模块供电。
+
*供电:使用2S航模锂电池供电,7.4V。
*引脚说明
+
*主控:MCookie-LEGOShield采用Atmega328p主控,独立运行驱动程序。
 +
*通讯:IIC通讯,地址0x08(可自定义)
 +
*接口:4个NXT电机接口,6个NXT传感器接口(其中只有S1、S2支持超声波传感器和颜色传感器)
 
{|class="wikitable"
 
{|class="wikitable"
! rowspan="1" |mCookie引脚||Motor芯片引脚||功能
+
! rowspan="1" |mCookie引脚||shield芯片引脚||功能
 
|-
 
|-
| D6|| 1A||控制1A高电平,顺时针转
+
| SDA||SDA|| IIC接口SDA引脚
 
|-
 
|-
| D8|| 1B||控制1B高电平,逆时针转
+
| SCL||SCL|| IIC接口SCL引脚
 
|-
 
|-
| D5|| 2A||控制2A高电平,顺时针转
+
| D0|| D1||mCookie的Serial1 RX(可选悍,默认不连接)
 
|-
 
|-
| D7|| 2B||控制2A高电平,顺时针转
+
| D1|| D0||mCookie的Serial1 TX (可选悍,默认不连接)
 
|-
 
|-
| VMOT||BM模块||供电
+
| 5V||5V||可以用shield给mCookie供电
 
|-
 
|-
 
| GND||GND||共地
 
| GND||GND||共地
第38行: 第40行:
  
 
*注意:
 
*注意:
**使用Motor模块驱动电机5,6,7,8这几个引脚不能被其他传感器占用,否则会出现问题。
+
**shield的IIC从机地址位可调节,需要重新烧写固件。
**Motor模块必须通过[[mCookie-BM/zh]]模块进行供电,不能直接通过CoreUSB连接电脑供电否则可能导致应用无法工作
+
**如果使用shield供电,由于shield固件初始化需要一定时间,所以在mCookie写控制程序的时候需要上点延迟一会再运行(delay一段时间)
 
 
[[File:motor-Pinout-1Big.jpg|800px|thumb|center]]
 
 
 
==文档==
 
  
 +
[[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">
  
===直流电机接线===
 
*将一个直流电机接(OUT1A,OUT1B),另外一个直流电机接(OUT2A,OUT2B);
 
*直流电机控制引脚:
 
<source lang="cpp">
 
//D6,D8控制1A,1B的电机
 
#define OUT1A 6
 
#define OUT1B 8
 
//D5,D7控制2A,2B的电机
 
#define OUT2A 5
 
#define OUT2B 7
 
 
</source>
 
</source>
  
===通断控制===
+
===使用乐高NXT接口电机===
{|class="wikitable"
+
常用方法:
! rowspan="1" |6||8||5||7||1A||1B||2A||2B||功能
+
====设置固定的速度====
|-
+
速度范围:-255~255
|Low||Low||Low||Low||Off||Off||Off||Off||关闭(惯性停下)
 
|-
 
|High||Low||High||Low||High||Low||High||Low||顺时针转
 
|-
 
|Low||High||Low||High||Low||High||Low||High||逆时针转
 
|-
 
|High||High||High||High||Low||Low||Low||Low||急停
 
|}
 
 
 
 
<source lang="cpp">
 
<source lang="cpp">
#define OUT1A 6
+
#include <mCookieLEGO.h>
#define OUT1B 8
+
#include "Wire.h"
#define OUT2A 5
 
#define OUT2B 7
 
  
void setup()
+
mCookieLEGO m;
{
+
void setup(){
  pinMode(OUT1A, OUTPUT);
+
Wire.begin();
  pinMode(OUT1B, OUTPUT);
+
m.configConnection(0xFFFF); //设置每个接口的连接情况
  pinMode(OUT2A, OUTPUT);
 
  pinMode(OUT2B, OUTPUT);
 
 
}
 
}
  
void loop()
+
void loop(){
{
+
m.motor_setFixedDrive(mCookieLEGO::M1, 50);
head();
+
delay(1); // very important
delay(2000);
+
m.motor_setFixedDrive(mCookieLEGO::M2, 50);
back();
+
delay(1); // very important
delay(1000);
+
m.motor_setFixedDrive(mCookieLEGO::M3, 50);
stop();
+
delay(1); // very important
delay(500);
+
m.motor_setFixedDrive(mCookieLEGO::M4, 50);
}
+
delay(2000);
 
 
void head()
 
{
 
  digitalWrite(OUT1A, HIGH);
 
  digitalWrite(OUT1B, LOW);
 
  digitalWrite(OUT2A, HIGH);
 
  digitalWrite(OUT2B, LOW);
 
}
 
void back()
 
{
 
  digitalWrite(OUT1A, LOW);
 
  digitalWrite(OUT1B, HIGH);
 
  digitalWrite(OUT2A, LOW);
 
  digitalWrite(OUT2B, HIGH);
 
}
 
void stop()
 
{
 
  digitalWrite(OUT1A, LOW);
 
  digitalWrite(OUT1B, LOW);
 
  digitalWrite(OUT2A, LOW);
 
  digitalWrite(OUT2B, LOW);
 
 
}
 
}
 
</source>
 
</source>
 +
===使用乐高NXT接口超声波===
 +
常用方法:
 +
====获取当前的距离====
 +
<source lang="cpp">
 +
#include <mCookieLEGO.h>
 +
#include "Wire.h"
  
===PWM调速控制===
+
mCookieLEGO m;
<source lang="cpp">
+
void setup(){
//D6,D8控制1A,1B的电机
+
    Wire.begin();
#define OUT1A 6
 
#define OUT1B 8
 
//D5,D7控制2A,2B的电机
 
#define OUT2A 5
 
#define OUT2B 7
 
  
void setup()
+
    m.configSensorType(mCookieLEGO::S1, mCookieLEGO::SENSOR_ULTRA); // 把S1设置为超声波传感器
{
+
    m.configConnection(0xFFFF);
  pinMode(OUT1A, OUTPUT);
 
  pinMode(OUT1B, OUTPUT);
 
  pinMode(OUT2A, OUTPUT);
 
  pinMode(OUT2B, OUTPUT);
 
 
}
 
}
  
void loop()
+
uint8_t dis;
{
+
 
  for (int fadeValue = 0; fadeValue <= 255; fadeValue += 5)
+
void loop(){
    //循环语句,控制PWM速度增加,控制fadeValue的变化大小可以控制亮度级别
+
dis = m.sensor_ultra_getDistance(mCookieLEGO::S1);
  {
+
Serial.print("dis: ");
    analogWrite(OUT1A, fadeValue);  //将速度级别写入电机
+
Serial.println(dis);
    digitalWrite(OUT1B, LOW);
+
delay(1000);
    analogWrite(OUT2A, fadeValue);
 
    digitalWrite(OUT2B, LOW);
 
    delay(100);                       //速度度级别维持的时间,单位毫秒
 
  }
 
  for (int fadeValue = 255; fadeValue >= 0; fadeValue -= 5)
 
    //循环语句,控制PWM速度减小,控制fadeValue的变化大小可以控制亮度级别
 
  {
 
    digitalWrite(OUT1A, LOW);
 
    analogWrite(OUT1B, fadeValue);  //将速度级别写入电机
 
    digitalWrite(OUT2A, LOW);
 
    analogWrite(OUT2B, fadeValue);
 
    delay(100);                    //速度度级别级别维持的时间,单位毫秒
 
  }
 
  delay(1000);
 
 
}
 
}
 
</source>
 
</source>
  
 
==应用==
 
==应用==
 +
[[乐高遥控小车]]
  
==购买==
 
  
==历史==
 
  
 
==图库==
 
==图库==
[[File:mCookie-Motor-t1.jpg|thumb|600px|center]]
+
[[File:mCookie-LEGOShield-pic1.jpg|800px|thumb|center]]
[[File:mCookie-Motor-b1.jpg|thumb|600px|center]]
 
  
==视频==
 
  
 
|}
 
|}

2017年4月21日 (五) 06:11的最新版本

Language English
mCookie-LEGOShield


mCookie-LEGOShield(下文中简称shield)是一款乐高兼容底板,在兼容乐高NXT接口传感器和电机的同时,能够继续堆叠mCookie模块,让乐高更加智能。



特色

  • 4路电机接口,兼容乐高NXT电机;
  • 4路普通传感器接口,兼容NXT接口的按键、声音传感器等;
  • 2路全功能传感器接口,除了能兼容普通传感器接口的所有传感器之外,兼容NXT接口的超声波传感器和颜色传感器;
  • IIC接口通讯,不占用其他多余IO口

规格

  • 供电:使用2S航模锂电池供电,7.4V。
  • 主控:MCookie-LEGOShield采用Atmega328p主控,独立运行驱动程序。
  • 通讯:IIC通讯,地址0x08(可自定义)
  • 接口:4个NXT电机接口,6个NXT传感器接口(其中只有S1、S2支持超声波传感器和颜色传感器)
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 共地
  • 注意:
    • shield的IIC从机地址位可调节,需要重新烧写固件。
    • 如果使用shield供电,由于shield固件初始化需要一定时间,所以在mCookie写控制程序的时候需要上点延迟一会再运行(delay一段时间)
MCookie-LEGOShield-TOP.jpg
MCookie-LEGOShield-BUT.jpg

开发

shield采用IIC接口通讯,IIC地址默认为0x08,就像其他芯片一样读写寄存器地址。 API接口说明.pdf

  • 针对各个传感器和电机已经做了常用的驱动封装,不需要关注底层的API
  • 直接调用库里的方法就可以操作,具体的协议在shield自己的主控里已经实现
  • 在开始使用各种传感器和电机直前,要先设置传感器的类型和每个接口的连接与否
  • 只有S1和S2支持超声波和颜色传感器

使用乐高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);
}

应用

乐高遥控小车


图库

MCookie-LEGOShield-pic1.jpg