#include<IRremote.h>
#include <LCD.h>
#include<LiquidCrystal.h>
LCD lcd(31, 32, 33);
const int Pin =2;
IRrecv irrecv(Pin);
decode_results results;
int temp=0;
int sum=0;
double as;
int n1;
int b[10000];
int check;
int first,second;
void setup() {
lcd.initial_LCD1602();
Serial.begin(9600);
irrecv.enableIRIn();
}
int fun(int num) {
switch(num) {
case 0x01:return 0;break;
case 0x02:return 1;break;
case 0x03:return 2;break;
case 0x04:return 3;break;
case 0x05:return 4;break;
case 0x06:return 5;break;
case 0x07:return 6;break;
case 0x08:return 7;break;
case 0x09:return 8;break;
case 0x0A:return 9;break;
case 0x0B:return 1000;break;//+
case 0x0C:return 1001;break;//-
case 0x0D:return 1002;break;// /
case 0x0E:return 1003;break;//*
case 0x0F:return 1004;break;//=
case 0x1A:return 1005;break;//end
}
}
int po(int n) {
int nu=1;
while(n--) {
nu*=10;
}
return nu;
}
int uni() {
int i=0;
int num;
while(i<=temp) {
num=b[i];
num*=po(temp+1-i);
sum+=num;
i++;
}
return sum;
}
void loop() {
if(irrecv.decode(&results)) {
n1=fun(results.value);
if(n1>=0&&n1<=9) {
lcd.Write_data(n1);
temp++;
b[temp]=n1;
}else if(n1==1000){
first=uni();
first/=10;
temp=0;
sum=0;
check=1;
lcd.Write_Char('+');
}else if(n1==1001){
first=uni();
first/=10;
temp=0;
sum=0;
check=2;
lcd.Write_Char('-');
}else if(n1==1002) {
first=uni();
first/=10;
temp=0;
sum=0;
check=3;
lcd.Write_Char('/');
}else if(n1==1003) {
first=uni();
first/=10;
temp=0;
sum=0;
check=4;
lcd.Write_Char('*');
}else if(n1==1004) {
second=uni();
second/=10;
lcd.Write_Char('=');
if(check==1) {
as=second+first;
}else if(check==2) {
as=first-second;
}else if(check==3) {
as=first*second;
}else {
as=first/second;
}
lcd.Write_data(as,2);
}else if(n1==1005) {
lcd.clear();
memset(b,0,sizeof(b));
}
irrecv.resume();
}
delay(600);
}
arduino实现红外遥控计算器
最新推荐文章于 2023-01-30 19:11:13 发布
这个程序使用红外遥控器控制LCD1602显示屏进行数字输入,实现了基本的加减乘除运算。用户可以逐个输入数字,选择运算符,最后按下等号键得到计算结果。程序通过IRremote库解析遥控器信号,将按键值转换为操作数或运算符,并通过LiquidCrystal库显示在LCD上。
摘要由CSDN通过智能技术生成