Помогите пожалуйста с циклом на ардуино иде. По задумке серво должен вращаться тогда, когда влажность < 200. Но он вращается при любом значении. Что делать? Код (C++): #include <Servo.h> #include <LiquidCrystal.h> #define DT_MIN 200 #define DT_MAX 700 #define INTERVAL 30000 * 1 unsigned int humidity = 0; unsigned long waitTime = 0; int analogInput = A0; int value = 0; LiquidCrystal lcd(4, 5, 10, 11, 12, 13); Servo DTS; void setup() { DTS.attach(6); pinMode(analogInput, INPUT); Serial.begin(9600); lcd.begin(16, 2); lcd.print("Vlazhnost"); } void loop() { // считывание аналогового значения value = analogRead(analogInput); Serial.println("INPUT"); Serial.println(value); lcd.setCursor(0, 1); lcd.print("______"); lcd.print(value); delay(500); if ((waitTime == 0 || millis() - waitTime > INTERVAL) && humidity > DT_MIN ){ DTS.write(90); waitTime = millis(); }else if ((waitTime == 0 || millis() - waitTime > INTERVAL) && humidity < DT_MIN ) { DTS.write(90); delay(500); DTS.write(180); waitTime = millis(); } }
Потому что влажность у вас всегда нуль, а считанное значение нигде не используется. И причем тут цикл? Лечится в одном месте одним исправлением.
Немного не понял чем измеряется влажность?В смысле каким устройством?И второе влажность больше 100% не бывает. Код измеряет напряжение на А0 и выводит его в порт.Нормальный Вольтметер ostrov Лечиться другим скетчем.Другим от слова "совсем".
Вот именно что вольтметр. Измеряется, пишется в порт, все. А программа работает с другой переменной, которая всегда == 0.