- 简要说明
通过Arduino接收遥控信号,来控制舵机,实现展示牌打开和关闭效果。
-
成品视频
http://v.youku.com/v_show/id_XMzU1MDEzMDQzNg==.html
- 成品照片

1.接线:
红外接收模块和舵机均接到Arduino上。(不需连接红外发射头),具体接到哪个口参见以下代码中注释。
2.代码:
#include <IRremote.h> // IRremote库声明
#include <Servo.h> // 声明调用Servo.h库
Servo myservo; // 创建一个舵机对象
int pos = 0; // 变量pos用来存储舵机位置
int RECV_PIN = 10; //定义红外接收器的引脚为10
int led_pin = 13; //定义LED针脚以便关闭板载LED灯
IRrecv irrecv(RECV_PIN);
decode_results results;
bool open_status=false;
void setup() {
myservo.attach(9); // 将引脚9上的舵机与声明的舵机对象连接起来
Serial.begin(9600);
irrecv.enableIRIn(); // 启动接收器
pinMode(led_pin, OUTPUT);
digitalWrite(led_pin, LOW);
myservo.write(0);
delay(15);
}
void loop() {
if (irrecv.decode(&results)){
//Serial.println(results.value);
if ((results.value==16718055)and(open_status==false)){
for(pos = 0; pos < 170; pos += 1){ // 舵机从0°转到180°,每次增加1°
myservo.write(pos); // 给舵机写入角度
open_status=true;
delay(15); // 延时15ms让舵机转到指定位置
}
}
if ((results.value==16730805)and(open_status==true)){
//for(pos = 170; pos>=1; pos-=1) { // 舵机从180°转回到0°,每次减小1°
myservo.write(0); // 写角度到舵机
open_status=false;
delay(15); // 延时15ms让舵机转到指定位置
//}
}
irrecv.resume(); // 接收下一个值
delay(1000);
}
}
3.车辆取电
从保险盒取,注意,一般取ACC,不要用常电;有些车说明书上有写哪个保险是ACC哪个是常电,有些车说明书没有写,用万用表测一下就知道了。