У меня есть следующий фрагмент кода, который я смог проверить и убедиться, что он работает правильно.set Таймер не работает в замкнутом контуре() arduino
По сути, вызов myThread.setInterval(5000);
делает водить начинает мигать после 5 секунд.
#include <Thread.h>
Thread myThread = Thread();
char powerValue;
int ledPin1 = 2;
boolean flag = false;
void myThreadCallback() {
digitalWrite(ledPin1, HIGH);
}
void setup() {
pinMode(ledPin1, OUTPUT);
digitalWrite(ledPin1, LOW);
Serial.begin(9600);
myThread.onRun(myThreadCallback);
flag = true;
myThread.setInterval(5000);
}
void loop() {
if (Serial.available()) {
powerValue = Serial.read();
Serial.println(powerValue);
}
if (powerValue == 'A') {
} else if (powerValue == 'a') {
digitalWrite(ledPin1, LOW);
}
if (myThread.shouldRun() && flag == true)
myThread.run();
powerValue = 'Z';
}
я написал небольшое изменение этого кода, который толкает , которые называют в петли() кода, который показан ниже.
Однако, по некоторым причинам, которые мне неизвестны, с этим кодом привел огней прямо с самого начала, а не ждать 5 секунд.
#include <Thread.h>
Thread myThread = Thread();
char powerValue;
int ledPin1 = 2;
boolean flag = false;
void myThreadCallback() {
digitalWrite(ledPin1, HIGH);
}
void setup() {
pinMode(ledPin1, OUTPUT);
digitalWrite(ledPin1, LOW);
Serial.begin(9600);
myThread.onRun(myThreadCallback);
}
void loop() {
if (Serial.available()) {
powerValue = Serial.read();
Serial.println(powerValue);
}
if (powerValue == 'A') {
flag = true;
myThread.setInterval(5000);
// checks if thread should run
} else if (powerValue == 'a') {
digitalWrite(ledPin1, LOW);
}
if (myThread.shouldRun() && flag == true)
myThread.run();
powerValue = 'Z';
}
Вопрос. Может ли кто-нибудь помочь мне понять, почему поведение отличается от двух источников?