#include <IRremote.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
int TempPin = A0;
float realTemp = 0;
int FakeTemp = 0;
int target = 20;
int IRPin = 11;
IRrecv irrecv(IRPin);
decode_results results;
void setup() {
// put your setup code here, to run once:
lcd.begin(16, 2);
Serial.begin(9600);
while (! Serial);
irrecv.enableIRIn(); //enables ir receiver
}
void loop() {
FakeTemp = analogRead(TempPin);
realTemp = (5.0 * FakeTemp * 1000.0) / (1024 * 10); // math for the temperature
Serial.println(realTemp);
lcd.print("Temperature");
lcd.setCursor(0, 13);
lcd.print(realTemp); //prints the temperature
delay(3000);
lcd.clear();
if (irrecv.decode(16754775)) { //input from ir remote
lcd.clear();
lcd.print("Target=");
lcd.print(target + 1);
delay(3000);
irrecv.resume();
lcd.clear();
target = target + 1;
// adds to target
}
if (irrecv.decode(16769055)) { //this is were everything goes wrong
lcd.clear();
lcd.print("Target=");
lcd.print(target - 1);
delay(3000);
irrecv.resume();
lcd.clear();
target = target - 1;
}
}
Я занимаюсь этим уже довольно давно, и я не знаю, что не так, когда я добавляю этот оператор if, он будет отображать временную температуру на ЖК-дисплее один раз. Но потом он не будет делать это снова, я вижу на последовательном мониторе, что он все еще захватывает темп, но не печатает его на ЖК-дисплее.