TTwar 2019-11-20 16:09 采纳率: 0%
浏览 629

arduino基于红外线控制

例如红外遥控小车,红外空调遥控器,遥控器上的按键对应着一个功能,如何通过模式切换使相同按键拥有两个不同的功能
下面的代码是基于红外线控制LCD1602
设置了两个功能按键,输入文字和输入数字,声明和调用了两个函数但是无法运行,希望大家能给出建议

#include <IRremoteInt.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(11,10,9,8,7,6);
#define RECV_PIN 13
IRrecv irrecv(RECV_PIN);
decode_results results;
void words();
void number();

void setup() 
{
  Serial.begin(9600);
  lcd.begin(16,2);
  Serial.println("Enabling IRin");
  irrecv.enableIRIn();
  Serial.println("Enabled IRin");
  lcd.clear();
  lcd.setCursor(0,0);
 }


void words()
{
   if (irrecv.decode(&results))
    {
      if(results.value==0xFF30CF)
      {lcd.setCursor(2,0);lcd.print("Hello World!");delay(2000);lcd.clear();}
      else if(results.value==0xFF18E7)
      {lcd.setCursor(3,0);lcd.print("Tian Ji");delay(2000);lcd.clear();}
      else if(results.value==0xFF7A85)
      {lcd.setCursor(3,0);lcd.print("Da Xue");delay(2000);lcd.clear();}
      else if(results.value==0xFF10EF)
      {lcd.setCursor(3,0);lcd.print("Ren Ai");delay(2000);lcd.clear();}
      else if(results.value==0xFF38C7)
      {lcd.setCursor(3,0);lcd.print("Xue Yuan");delay(2000);lcd.clear();}
      else if(results.value==0xFF5AA5)
      {lcd.setCursor(3,0);lcd.print("Welcome!");delay(2000);lcd.clear();}
      else if(results.value==0xFF42BD)
      {lcd.setCursor(3,0);lcd.print("Ni Hao!");delay(2000);lcd.clear();}
      else if(results.value==0xFF4AB5)
      {lcd.write("Nice to meet you");delay(2000);lcd.clear();}
      else if(results.value==0xFF52AD)
      {lcd.setCursor(4,0);lcd.print("Bye-bye");delay(2000);lcd.clear();}
    }
}
void number()
{
    lcd.leftToRight();
    if(irrecv.decode(&results))
  {
    if(results.value==0xFF30CF)
      {lcd.print("1");delay(100);}
    else if(results.value==0xFF18E7)
      {lcd.print("2");delay(100);}
    else if(results.value==0xFF7A85)
      {lcd.print("3");delay(100);}
    else if(results.value==0xFF10EF)
      {lcd.print("4");delay(100);}
    else if(results.value==0xFF38C7)
      {lcd.print("5");delay(100);}
    else if(results.value==0xFF5AA5)
      {lcd.print("6");delay(100);}
    else if(results.value==0xFF42BD)
      {lcd.print("7");delay(100);}
    else if(results.value==0xFF4AB5)
      {lcd.print("8");delay(100);}
    else if(results.value==0xFF52AD)
      {lcd.print("9");delay(100);}
    else if ( results.value==0xFF6897)
      {lcd.print("0");delay(100);}
    }
}

void loop() 
{
   if (irrecv.decode(&results)) 
   {
     Serial.println(results.value, HEX); 
    if  (results.value==0xFFE21D)
       {delay(1000);lcd.clear();lcd.print("screen opening...");delay(1000);lcd.clear();}
  else if (results.value==0xFFA25D)
       {lcd.setCursor(3,0);lcd.print("screen off");delay(1000);lcd.clear();}
  else if (results.value==0xFF629D)
       {lcd.clear();}
  else if (results.value==0xFF22DD)
       {lcd.setCursor(3,0);lcd.print("Input words:");delay(1000);lcd.clear();words();}
  else if (results.value==0xFF02FD)
       {lcd.setCursor(3,0);lcd.print("Input number:");delay(1000);lcd.clear();number();}
        irrecv.resume();
   } 
    delay(1000);
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 15:28
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记