Arduino教程中级 项目十 芝麻开门
项目十 芝麻开门
本系列教程为DF创客社区版权所有,配套硬件套件:新版Arduino中级套件上一课:项目九 实时温湿度检测器
所谓芝麻开门,就是这门不是轻易能打开的,存在着某些玄关需要你去破解。我们这里设计的这个门,是通过不断晃动手中的传感器才能开。有人会说,传感器我知道是那个数字震动传感器,那门呢?你没看错就是舵机,它能控制角度。所以,所谓的门的转动,是靠舵机来完成的。做个来看下效果就知道了~
所需材料l1×数字震动传感器
image001.jpg (14.07 KB, 下载次数: 3)
下载附件
保存到相册
2016-1-27 16:53 上传
l1×TowerPro SG50舵机
image003.jpg (13.57 KB, 下载次数: 3)
下载附件
保存到相册
2016-1-27 16:53 上传
硬件连接TowerProSG50 →数字口9数字震动传感器 → 数字口3
image005.jpg (88.56 KB, 下载次数: 5)
下载附件
保存到相册
2016-1-27 16:53 上传
输入代码
#include<Servo.h> int sensorPin = 3; //震动传感器 – Digital 3Servo myservo; int pos = 0; void setup() { Serial.begin(9600); pinMode(sensorPin, INPUT); myservo.attach(9); //舵机 – Digital 9} void loop() {int sensorState = digitalRead(sensorPin);//读取震动传感器的状态Serial.println(sensorState);if(!sensorState){//一旦状态发生变化,舵机加2°,直到加到180° pos = pos +2; if(pos >=180){ pos = 180; } myservo.write(pos); //写入舵机的角度 Serial.println(pos); //串口同时输出角度值 delay(100);} else{ //状态不发生变化,舵机减2°,直到减到0° pos = pos - 2; if(pos <=0){ pos = 0; } myservo.write(pos); Serial.println(pos); delay(100); }delay(1); } 不断的晃动震动传感器,可以看到舵机的角度会随之变大。停止晃动后,舵机角度又开始慢慢减小。好比一扇门慢慢打开,合上。
代码回顾
代码的开始先调用<Servo.h>库#include <Servo.h> 这个库已经在Arduino IDE中了,可以打开Arduino-1.0.5/ libraries/ Servo/ Servo.h,这就是Servo库所在位置。 如果要在代码中用库中函数,是不能直接调用的,需要给库找个中介,让“他”建立代码和库中间的关系:Servo myservo; 这里的myservo起到的就是这个作用。建立联系,之后调用库中的函数的话,就要按照下面这个模式进行:myservo.函数名();中间那“.”不要漏了! 如何定义舵机是接到那个引脚呢?用到就是attach()函数了。attach(pin);attach(pin)函数有一个参数——pin, 任意一个数字引脚(不建议使用数字0,1)。我们这里选择数字引脚9。myservo.attach(9); 知道了如何定义一个舵机之后,如何把对应的角度写进去呢? write(pos); pos就是写入的角度值。 ※ 在之后的Arduino学习之旅中,不管你遇到奇奇怪怪的问题,都希望你与我们交流,欢迎登陆我们的DFRobot创客社区!www.dfrobot.com.cn下一课:项目十一 夜光宝盒