本帖最后由 珜羽 于 2018-12-11 23:05 编辑
先放代码再讲解:
cat_MQTT.zip
(1.46 KB, 下载次数: 3, 售价: 1 金币)
代码直接在示例->blinker库->blinkerHELLO->hello_mqtt上面改的。
先定义开关输入脚D12,以及电机驱动脚D13。还有一个电机运行时间的变量:
[mw_shl_code=arduino,true]#define key D12
#define moto D13
long timetmp = 0;[/mw_shl_code]
接着在step里面初始化:
[mw_shl_code=arduino,true] pinMode(key, INPUT_PULLUP);
digitalWrite(moto, LOW);
pinMode(moto, OUTPUT);[/mw_shl_code]
接着在按键触发绑定的回调函数里面修改:
判断电机驱动脚已经高电平那就不再驱动,不让重复触发。
如果电机没驱动那么驱动电机,并记下时间,顺带返回喂粮次数。
[mw_shl_code=arduino,true] if (digitalRead(moto) == 0) {
digitalWrite(moto, HIGH);
timetmp = millis();
counter++;
Number1.print(counter);
}[/mw_shl_code]
最后在loop里面添加:
如果电机驱动了,并且驱动的时间已经超过2秒,那么判断开关已经释放的情况下停止电机驱动。
(跳过2秒是因为上一次转到位的时候开关还是释放状态,要跳过这个时间)
[mw_shl_code=arduino,true] if (digitalRead(moto) == 1) {
if ((millis() - timetmp) > 2000) {
if ((digitalRead(key) == 1)) digitalWrite(moto, LOW);
}
}[/mw_shl_code]
最后不要忘记添上从app里面获取的key和家里wifi名和密码。
编译运行。
|