例如红外遥控小车,红外空调遥控器,遥控器上的按键对应着一个功能,如何通过模式切换使相同按键拥有两个不同的功能
下面的代码是基于红外线控制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);
}