Как я могу запрограммировать ИК-пульт в tinkercad, чтобы изменить такую ​​переменную, как «целевая температура», при использовании датчика температуры T36? [закрыто]

Мне нужно установить температуру в помещении удаленно с помощью беспроводного метода (ИК-пульт)

Это умный счетчик, а синий и красный светодиоды уважительно представляют вентилятор и обогреватель. Мне нужен пульт для выбора целевой температуры с помощью кнопок + и -. Вот код, который поможет

Мне нужен ИК-пульт, чтобы перечислить что-то вроде этого:

  • Если нажата кнопка вверх

    Увеличьте заданную температуру на некоторое значение

    В противном случае, если нажата кнопка вниз

    Уменьшить заданную температуру на некоторое значение

Но я не могу понять это правильно. Какой код я могу использовать, чтобы настроить кнопки для изменения целевой температуры

      #include <IRremote.h>
int temp = 0;
int RECV_PIN = 11;
int ledState=0;
int ledPin=10;
int buttonPin=2;
int buttonStateNew;
int buttonStateOld=1;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  pinMode(A0, INPUT);
  pinMode(11, INPUT);
  Serial.begin(9600);
  irrecv.enableIRIn();

  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(ledPin,OUTPUT);
  pinMode(buttonPin,INPUT);
}

void loop()
{
    if (irrecv.decode(&results)) {
        switch(results.value)
      {        
        case 16582903:  Serial.println("1");  // Button 1
                digitalWrite(10,HIGH);
                 break;
          
        case 16615543:  Serial.println("2"); // Button 2  
                        digitalWrite(10,LOW);
                        break;
          default: Serial.println(results.value);     
      }  
    irrecv.resume(); // Receive the next value
  }

  temp = map(((analogRead(A0) - 20) * 3.04), 0, 1023, -40, 125);
  Serial.println(temp);
  if (temp < 25) {
    digitalWrite(6, HIGH);
    digitalWrite(5, LOW);
  }
  if (temp > 25 && temp < 125) {
    digitalWrite(6, LOW);
    digitalWrite(5, HIGH);
  }
  delay(100); // Delay a little bit to improve simulation performance
  
  buttonStateNew= digitalRead(buttonPin);

  if(buttonStateOld == 0 && buttonStateNew == 1)
{
if (ledState==0){
  digitalWrite(ledPin,HIGH);
  ledState=1;
}
else
{ 
  digitalWrite(ledPin,LOW);
  ledState=0;
}
}
buttonStateOld=buttonStateNew;
}

0 ответов

Другие вопросы по тегам