0
我想在我的atTiny循环,直到我得到一个特定的输入读取或达到最大时间。阅读来自Arduino。atTiny85循环直到没有从arduino读取或超时
这里是我的示例代码,但它似乎没有工作,代码直接跳出循环。
void openGate()
{
//Set Read Gate to Pullup will LOW when closed and HIGH when open
pinMode(readGate,INPUT_PULLUP);
//We want this PIN to output for the time the loop runs
digitalWrite(pinGate, HIGH);
whileCounter = 0;
//Wait for Reading HIGH when the Arduino Opens the Output Pin
//Or Exit when a certain time is reached
while(digitalRead(readGate) == LOW || whileCounter >= waitTime) {
delay(1);
whileCounter++;
}
digitalWrite(pinGate, LOW);
}
在Arduino中我做了简单的PIN更改为OUTPUT,这部分工作正常。
pinMode(2, OUTPUT);
digitalWrite(2,LOW);
在此先感谢! 干杯
改变代码告诉记者,在注释到主循环
void loop(){
if (f_wdt==1) { // wait for timed out watchdog/flag is set when a watchdog timeout occurs
if(circles <= count){
//Start Setup our PINS and the millis to compare
if(f_start==0){
pinMode(pinGate,OUTPUT); //Set Gate as Output
pinMode(readGate,INPUT_PULLUP); //Set Read Gate to Pullup will LOW when closed and HIGH when open
unsigned long startMillis = millis(); //Snapshot of time
f_start = 1;
}
if(f_start==1){
digitalWrite(pinGate, HIGH); //Output High to MOSFET to open the gate
if(digitalRead(readGate) == LOW) f_done = 1; //We got a signal, lets start new sleep circle
unsigned long currentMillis = millis(); //Our current Millis
if ((unsigned long)(currentMillis - startMillis) >= waitTime) f_done = 1; //Timeout time is reached, lets start new sleep circle
}
if(f_done==1){
digitalWrite(pinGate, LOW);
pinMode(pinGate,INPUT); // set all used port to intput to save power
pinMode(readGate,INPUT);
f_start = 0; // reset setup flag
f_done = 0; // reset open circle flag
count = 0; // reset sleep cycle count
f_wdt=0; // reset watchdog flag
system_sleep(); // back to sleep little tiny
}
} else {
count++;
f_wdt=0; // reset watchdog flag
system_sleep(); // back to sleep little tiny
}
}
}
应该是:'while(digitalRead(readGate)== LOW && whileCounter
Pawel
是的,谢谢,digitalRead也是HIGH,因为我使用INPUT_PULLUP –
1. delay(1)建立超时计数器相当糟糕。检查并了解BlinkWithoutDelay示例。 2.通常,如果你的代码根本不需要while循环,那么你最好。主循环()应该为你做所有这些东西。 – datafiddler