在这种情况下,如何对红外遥控器进行编码,以便 + 和 - 按钮控制代码中列出的温度? Arduino (TinkerCAD)

问题描述

我需要使用无线方式(红外遥控)远程设置室温

这是一个智能电表,蓝色和红色的 LED 分别代表风扇和加热器。我需要遥控器使用 + 和 - 按钮选择目标温度。这是帮助的代码

我需要红外线遥控器来列出类似这样的内容

  • 如果按下向上按钮

    将目标温度增加一些值

  • 否则如果按下向下按钮

    将目标温度降低一些值

我需要对红外遥控器进行编程以上下改变“温度”变量。 应该添加什么代码来做到这一点?遥控器目前仅被编程为打开和关闭 LED 灯。我需要帮助对其进行编程以更改 tinkerCAD 中的周围温度。温度在源码中标注为“temp”

#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),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;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)