接上一篇帖子【Makeblock使用】发现了个问题-Arduino中文社区 http://www.arduino.cn/thread-21504-1-1.html参考【新提醒】手机与Arduino蓝牙串口通讯实验及完整例程-Arduino中文社区 http://www.arduino.cn/thread-16311-1-1.html
想玩玩无线调光,那就来做吧
接线参考之前的帖子
串口数据记录,该试验可通过串口发送指令和手机发送指令控制
发送101X,LED点亮
发送102X,熄灭
发送020X,LED没之前亮
发送005X,LED微暗
附程序
[mw_shl_code=bash,true]int p;
void setup() {
Serial.begin(9600);
pinMode(13,OUTPUT);
}
void loop() {
while (Serial.available() > 0) {
p = Serial.parseInt();
if (Serial.read() == 'X') {
switch (p) {
case 101:
digitalWrite(13,HIGH); // 点亮LED。
Serial.println(p); // 回传数据。
break;
case 102:
digitalWrite(13,LOW); // 熄灭LED。
Serial.println(p);
break;
default:
p = map(p,0,100,0,255);
analogWrite(13,p); // 调整LED亮度
}
}
}
}[/mw_shl_code]
接收指令格式:“101X”点亮,“102X"熄灭,”000X"调整亮度。(000为0-100的整数,表示亮度值,X是结束符。)
串口是异步接收的,用parseInt()查找第一个有效整数,检测到结束符后开始处理。用pringln()函数,数据后面加了"\r"和"\n"两个字符,可以用作结束符。
|