Компилируется без ошибок, но во время работы не удается выйти из цикла(то есть при первом нажатии кнопки светодиод моргает, а когда жмешь второй раз не чего не происходит). Код (C++): const int b1 = 3; void setup() { pinMode(b1, INPUT_PULLUP); pinMode(13, OUTPUT); } void loop(){ digitalWrite(13, LOW ); boolean bn = digitalRead(b1); if (!bn){ delay(10); bn = digitalRead(b1); if(!bn){ for(int i = 0; ; ++i){ digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW); delay(500); boolean bn2 = digitalRead(b1); if(bn2 == LOW){ break; } } } } }
Я уже много что перебрал. Вот без bn2 Код (C++): const int b1 = 3; void setup() { pinMode(b1, INPUT_PULLUP); pinMode(13, OUTPUT); } void loop(){ boolean bn = digitalRead(b1); if (!bn){ delay(10); bn = digitalRead(b1); if(!bn){ for(int i = 0; ; ++i){ digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW); delay(500); if(!digitalRead(b1)){ break; } } } } digitalWrite(13, LOW ); }
Я нашел ошибку)))))))) Не хватало задержки после второго нажатия, и получалась так будто я два раза нажимал на кнопку) Код (C++): const int b1 = 3; void setup() { pinMode(b1, INPUT_PULLUP); pinMode(13, OUTPUT); } void loop(){ boolean bn = digitalRead(b1); if (!bn){ delay(10); bn = digitalRead(b1); if(!bn){ for(int i = 0; ; ++i){ digitalWrite(13, HIGH); delay(250); //digitalWrite(13, LOW); //delay(500); if(!digitalRead(b1)){ delay(10); if(!digitalRead(b1)){ break; } } } } } delay(250); //вот её и не хватало!!!) digitalWrite(13, LOW ); }
Ну это мне вообще не для светодиода надо был) Просто в этом бы коде ни кто не захотел бы капаться) Код (C++): #include <RTC.h> #include <LiquidCrystal.h> #include "DHT.h" #define DHTPIN 2 const int b1 = 3; boolean b1WU = false; #define DHTTYPE DHT22 RTC time; LiquidCrystal lcd(13, 12, 11, 10, 9, 8); DHT dht(DHTPIN, DHTTYPE); void setup() { pinMode(b1, INPUT_PULLUP); delay(300); lcd.begin(16, 2); time.begin(RTC_DS1307); time.settime(30,46,23,24,01,16,0); // 0 сек, 51 мин, 21 час, 27, октября, 2015 года, вторник dht.begin(); } void loop(){ float h = dht.readHumidity(); float t = dht.readTemperature(); boolean bn = digitalRead(b1); if (!bn){ delay(10); bn = digitalRead(b1); if(!bn){ for(int i = 0; ; ++i){ lcd.clear(); lcd.print("Temp:"); lcd.print(t); lcd.print("\x99"); lcd.print("C"); lcd.setCursor(0, 1); lcd.print("Humid:"); lcd.print(h); lcd.print("%"); delay(200); if(!digitalRead(b1)){ delay(10); if(!digitalRead(b1)){ break; } } } } } lcd.clear(); lcd.print(time.gettime("d-m-Y, D")); lcd.setCursor(0, 1); lcd.print(time.gettime("H:i:s")); delay(500); lcd.setCursor(0, 0); }