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

来自Microduino Wikipedia
跳转至: 导航搜索
开发
开发
第50行: 第50行:
  
 
==开发==
 
==开发==
 
+
shield采用IIC接口通讯,IIC地址默认为0x08,就像其他芯片一样读写寄存器地址。
 +
API接口说明.pdf
 +
*针对各个传感器和电机已经做了常用的驱动封装,不需要关注底层的API
 +
*直接调用库里的方法就可以操作,具体的协议在shield自己的主控里已经实现
 
===使用乐高NXT接口按键===
 
===使用乐高NXT接口按键===
*将一个直流电机接(OUT1A,OUT1B),另外一个直流电机接(OUT2A,OUT2B);
 
*直流电机控制引脚:
 
 
<source lang="cpp">
 
<source lang="cpp">
 
//D6,D8控制1A,1B的电机
 
//D6,D8控制1A,1B的电机
第64行: 第65行:
  
 
===使用乐高NXT接口电机===
 
===使用乐高NXT接口电机===
 +
常用方法:
 +
====设置固定的速度====
 +
 
===使用乐高NXT接口超声波===
 
===使用乐高NXT接口超声波===
{|class="wikitable"
+
常用方法:
! rowspan="1" |6||8||5||7||1A||1B||2A||2B||功能
+
====获取当前的距离====
|-
 
|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
 
#define OUT1A 6

2016年4月22日 (五) 15: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(可自定义)
mCookie引脚 shield芯片引脚 功能
A4 A4 IIC接口SDA引脚
A5 A5 IIC接口SCL引脚
D0 D1 mCookie的Serial1 RX(可选悍,默认不连接)
D1 D0 mCookie的Serial1 TX (可选悍,默认不连接)
5V 5V 可以用shield给mCookie供电
GND GND 共地
  • 注意:
    • shield的IIC从机地址位可调节,需要重新烧写固件。
    • 如果使用shield供电,由于shield固件初始化需要一定时间,所以在mCookie写控制程序的时候需要上点延迟一会再运行(delay一段时间)
Motor-Pinout-1Big.jpg

文档

mcps17 A3906 Atmega328p

开发

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

  • 针对各个传感器和电机已经做了常用的驱动封装,不需要关注底层的API
  • 直接调用库里的方法就可以操作,具体的协议在shield自己的主控里已经实现

使用乐高NXT接口按键

//D6,D8控制1A,1B的电机
#define OUT1A 6
#define OUT1B 8
//D5,D7控制2A,2B的电机
#define OUT2A 5
#define OUT2B 7

使用乐高NXT接口电机

常用方法:

设置固定的速度

使用乐高NXT接口超声波

常用方法:

获取当前的距离

#define OUT1A 6
#define OUT1B 8
#define OUT2A 5
#define OUT2B 7

void setup()
{
  pinMode(OUT1A, OUTPUT);
  pinMode(OUT1B, OUTPUT);
  pinMode(OUT2A, OUTPUT);
  pinMode(OUT2B, OUTPUT);
}

void loop()
{
head();
delay(2000);
back();
delay(1000);
stop();
delay(500);
}

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);
}

PWM调速控制

//D6,D8控制1A,1B的电机
#define OUT1A 6
#define OUT1B 8
//D5,D7控制2A,2B的电机
#define OUT2A 5
#define OUT2B 7

void setup()
{
  pinMode(OUT1A, OUTPUT);
  pinMode(OUT1B, OUTPUT);
  pinMode(OUT2A, OUTPUT);
  pinMode(OUT2B, OUTPUT);
}

void loop()
{
  for (int fadeValue = 0; fadeValue <= 255; fadeValue += 5)
    //循环语句,控制PWM速度增加,控制fadeValue的变化大小可以控制亮度级别
  {
    analogWrite(OUT1A, fadeValue);  //将速度级别写入电机
    digitalWrite(OUT1B, LOW);
    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);
}

应用

乐高遥控小车

购买

暂不开放购买

历史

图库

MCookie-Motor-t1.jpg
MCookie-Motor-b1.jpg

视频