第二课:输出设备的使用

来自Microduino Wikipedia
Zhangfengfeng讨论 | 贡献2017年6月8日 (四) 06:25的版本 编程
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

所需物料

名称 数量 说明
ColorLED 1 全彩LED
Core 1 核心模块
Hub 1 接口模块
USB线 1 连接USBTTL模块和电脑
传感器线 1 连接传感器到接口模块

ColorLED连接

  • 把灯接在数字信号的接口上,引脚默认为前面那个值,比如如果接到6/7管脚上,引脚就是6
 注意将连接线接到ColorLED的IN管脚
  • 如果要接多个灯,按下图所示方式连接

文件:ColorLED connection.png

 最多可以连接6个彩灯

程序说明

打开_01_ColorLED_01_blink.ino

 #include<Adafruit_NeoPixel.h>
//大部分传感器和设备都有自己的库文件,要想使用这个设备,就需要调用这些文件内容,调用语法就是 #include<库文件名称>
 Adafruit_NeoPixel ColorLED=Adafruit_NeoPixel(2, 6, NEO_GRB+NEO_KHZ800);
 //这一句是定义彩灯的命令,用到了之前定义的两个值,一个是引脚”PIN“,另一个是灯的个数”PIN_NUM,按之前的定义,分别为“6”和“2”, 另外ColorLED为定义的彩灯名称,这个名称可以自行修改,但后面使用时要保持一致。
 void loop(){
 ColorLED.setPixelColor(0, ColorLED.Color(255,0,0));
 //这段代码控制哪盏灯亮,以及灯的颜色,当前灯的编号为0,即第一盏灯亮,如果接了两盏灯,想让第二盏灯亮,那编号就为1。后面的三个数字对应的是颜色的RGB值,当前255,0,0对应的是红色。
 ColorLED.show();
 //显示灯的效果
 delay(1000);
 //当前状态保持1000毫秒
 ColorLED.setPixelColor(0,ColorLED.Color(0,0,0));
 //再将灯的颜色设置成黑色(0,0,0),延时1000毫秒,循环起来,灯光就会亮1秒后,再暗1秒,循环往复,就形成了灯光闪烁的效果。
 ColorLED,show();
 delay(1000);
 }
  • 要想使用彩灯,首先要调用库文件“Adafruit_NeoPixel.h",设置灯的名称,引脚以及灯的个数,并输入那一大段定义,灯的名称要统一。
  • 之后,在void setup()中要输入”LEDname.begin();", 用来初始化彩灯。
  • 最后记得要显示彩灯的状态,这几个固定形式记住,彩灯的使用就掌握了。

其他输出设备

舵机

对舵机的控制主要是通过程序对旋转角度以及速度进行控制。

舵机连接

  • 舵机通过舵机转接板与接口板连接,连接方法如图所示

文件:Servo connection.png

 舵机上有三根线,黑色的那根是负极(GND), 与转接板上的GND对应连接

文件:Servo GND.png

  • 舵机转接板可以连接两个舵机,上面一排对应引脚的前一个编号,下面对应后一个编号,例如图中连接6/7,接上面一排引脚就为6,下面一排就为7

文件:Two servo.png

编程

打开_02_Servo_01_Basic.ino

 #include<Servo.h> //调用舵机的库文件
 Servo myservo; //定义舵机名称为myservo
 void setup(){
 myservo.attach(6); //初始化舵机,定义引脚为6
 }
 void loop(){
 myservo.write(180); //舵机旋转到180度
 delay(1000); //保持1秒
 myservo.write(0); //舵机旋转到0度
 delay(1000); //保持1秒
 }

动手时间

尝试用for循环写一个舵机在0-180度之间来回摇摆的程序

蜂鸣器

控制蜂鸣器主要是控制发声频率,从而实现不同的音调。

编程

打开_03_Buzzer_01_basic.ino

 void setup(){
 pinMode(2, OUTPUT); //用pinMode()命令定义引脚为输出状态
 }
 void loop(){
 tone(buzzer_pin,200); //tone(a,b)是控制蜂鸣器的基本语法,其中"a"为引脚,”b“为输出的频率值,人耳可以听到的频率在20~20000Hz之间
 delay(1000); //当前声音保持1秒
 noTone(buzzer_pin); //noTone()顾名思义就是静音
 delay(1000); //静音保持1秒,可以刷进核心模块,听听效果
 }

动手时间

尝试用for循环做一个警报的音效