完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我一直在努力让 wemos 处理来自多个按钮的按钮按下。我正在使用 MQTT 构建远程控制单元。
我读取按钮的代码只是一系列 if 语句,但 Wemos 一直崩溃,所以我将其更改为 do-while 循环。 现在的问题是它似乎只是使用了有效载荷的初始化,而不是发送我想要的东西。 String ButtonReading() { String payload = "NULL"; 做 { if(digitalRead(ButtonUp) == PRESSED) { String payload = "forward"; 按钮状态=按下; } if(digitalRead(ButtonDown) == PRESSED) { String payload = "backwards"; 按钮状态=按下; } if(digitalRead(ButtonLeft) == PRESSED) { String payload = "left"; 按钮状态=按下; } if(digitalRead(ButtonStop) == PRESSED) { String payload = "stop"; 按钮状态=按下; } 延迟(500); } while (Button_State == NOT_PRESSED); 返回有效载荷; } 以及作用于它的位: void loop() { // 确认仍然连接到 mqtt 服务器 if (!client.connected()) { Serial.println("重新连接"); 重新连接(); } 客户端循环(); Serial.println("读取按钮"); 字符串有效载荷 = ButtonReading(); // lcd.setCursor(1,2); // lcd.print("有效载荷:"); // lcd.setCursor(10,2); // lcd.print(有效载荷); 如果(Button_State == PRESSED) { lcd.setCursor(1,2); // 显示 lcd.print("payload:"); lcd.setCursor(10,2); // 显示 lcd.print(payload); 现在很长时间=毫秒(); if (now - lastMsg > timeBetweenMessages) { lastMsg = now; ++价值; 字符串 pubTopic = 主题; client.publish( (char*) pubTopic.c_str() , (char*) payload.c_str(), true ); } Button_State = NOT_PRESSED ; Serial.println("按钮清除"); // 液晶显示器.clear(); 延迟(0); } 延迟(0.2); 一些 额外的位用于调试目的。 |
|
相关推荐
1个回答
|
|
问题出在您在循环中声明了一个名为"payload"的新变量。在循环的每次迭代中,它都会重新定义为"NULL"。因此,您不会看到任何真正的按钮读数,因为它们只是在循环内部被定义并且在循环之外不可访问。
为了解决这个问题,请修改您的代码,以便在循环之外声明payload变量,然后在循环内部不要再重新对它进行赋值: String ButtonReading() { String payload = "NULL"; do { if(digitalRead(ButtonUp) == PRESSED) { payload = "forward"; buttonState = PRESSED; } // ... } while(buttonState == PRESSED); return payload; } 这样您就可以在循环完成后返回正确的按钮读数,并且不会重新定义"payload"变量。 |
|
|
|
只有小组成员才能发言,加入小组>>
545浏览 6评论
457浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
438浏览 5评论
441浏览 4评论
411浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 10:01 , Processed in 0.828690 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号