删除打印语句会导致针脚停止像打印语句一样工作

时间:2019-05-03 14:23:51

标签: arduino

如果第57行的text_view_text_size语句被注释掉,led将不会更新预期的方式。但是,否则。

基本思想是,如果输入在短时间内变为1,则LED在2秒钟内变为红色。一个简单的延迟将无法完成任务,因为该arduino还需要为我的项目做其他事情。

这可能与VirtualWire库以及与Serial.println("something");方法结合使用的计时器有关吗?但是,这只是一个猜测。

VirtualWire库是用于基本无线电通信的库,有关https://www.airspayce.com/mikem/arduino/VirtualWire/的更多信息

millis()

如果第57行上的#include <VirtualWire.h> const int ledPin[4] = {7, 6, 5, 4}; //format: R, G, B, GND const bool ledGreen[4] = {0, 1, 0, 0}; const bool ledRed[4] = {1, 0, 0, 0}; bool holdBtnStatus = 0; long holdStartTime; int holdTime = 2000; bool readRF() { uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)) { return (bool) buf[0]; } else { return 0; //if there is nothing in buffer return 0 } } void updateLed(bool btnStatus) { if (btnStatus == 0) { for (int i = 0; i < sizeof(ledPin); i++) { digitalWrite(ledPin[i], ledGreen[i]); } } else { for (int i = 0; i < sizeof(ledPin); i++) { digitalWrite(ledPin[i], ledRed[i]); } } } void setup() { vw_set_rx_pin(11); vw_setup(1000); vw_rx_start(); //only for testing Serial.begin(9600); pinMode(ledPin[0], OUTPUT); pinMode(ledPin[1], OUTPUT); pinMode(ledPin[2], OUTPUT); pinMode(ledPin[3], OUTPUT); } void loop() { bool btnInput; if (holdBtnStatus == 0) { btnInput = readRF(); if (btnInput == 1) { holdBtnStatus = 1; holdStartTime = millis(); } } else if (millis() - holdStartTime >= holdTime) { holdBtnStatus = 0; } Serial.println("something"); //commenting out this line wil keep the led from becoming red updateLed(btnInput); delay(10); } 未注释掉,则Serial.println("something");变为1后,led保持红色2秒钟。

如果注释了第57行上的btnInput ,则保持绿色,但有少量红色闪烁。

0 个答案:

没有答案