#include<LiquidCrystal.h>
int NumDispCount = 0;
int NumberToBeDisplayed = 0;
long int TempNum;
LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);
long int ans,var1,var2;
long int i,Index_of_Operator,j,k;
static int CurrentIndexOfArray = -1;
char ArrayforNum1[10]={0};
char ArrayforNum2[10]={0};
char LCD_Data_String[25]={0};
void setup()
{
Serial.begin(9600);
pinMode(4,OUTPUT); //LCD RW
pinMode(6,OUTPUT); //RC-5 Decoder GND
pinMode(7,OUTPUT); //RC-5 Decoder +Vcc
digitalWrite(4,0);
digitalWrite(6,0);
digitalWrite(7,1);
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print(“–RC-5 REMOTE—“);
lcd.setCursor(0,1);
lcd.print(“ROHIT DHARAVIYA-“);
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“–RC-5 REMOTE—“);
lcd.setCursor(0,1);
}
void loop()
{
String str;
int num,n;
if(Serial.available() > 0)
{
delay(50);
str = Serial.readString();
if(str == “IR”)
{
return;
}
num = str.toInt();
n = num;
switch(n)
{
case 380:
case 300:
{
NumberToBeDisplayed = 0;
LCD_Data_String[0] = ‘\0’;
CurrentIndexOfArray = -1;
lcd.clear();
lcd.setCursor(0,0);//column,row
lcd.print(“–RC-5 REMOTE—“);
lcd.setCursor(0,1);
break;
}
case 302:
case 382:
{
NumberToBeDisplayed = 0;
lcd.clear();
lcd.setCursor(0,0);//column,row
lcd.print(“1] CONVERT NUM -“);
lcd.setCursor(0,1);
lcd.print(“2] CACLCULATOR -“);
delay(3000);
NumberToBeDisplayed = 0;
LCD_Data_String[0] = ‘\0’;
CurrentIndexOfArray = -1;
lcd.clear();
lcd.setCursor(0,0);//column,row
lcd.print(“–RC-5 REMOTE—“);
lcd.setCursor(0,1);
break;
}
case 3823:
case 3023:
{
if(NumDispCount == 4)
NumDispCount = 1;
else
NumDispCount++;LCD_Data_String[0] = ‘\0’;
CurrentIndexOfArray = -1;
lcd.clear();
lcd.setCursor(0,0);//column,row
if(NumDispCount == 1)
{
lcd.clear();
lcd.print(“—- OCTAL —–“);
lcd.setCursor(0,1);
TempNum = ConvertDecimalToBase(NumberToBeDisplayed,8);
lcd.print(TempNum);
}
else if(NumDispCount == 2)
{
lcd.clear();
lcd.print(“—- BINARY —-“);
lcd.setCursor(0,1);
for(int i=15;i>=0;i–)
{
lcd.print((NumberToBeDisplayed >> i & 1));
}
}
else if(NumDispCount == 3)
{
lcd.clear();
lcd.print(“— DECIMAL —-“);
lcd.setCursor(0,1);
lcd.print(NumberToBeDisplayed);
}
else if(NumDispCount == 4)
{
lcd.clear();
lcd.print(“- HEXADECIMAL –“);
lcd.setCursor(0,1);
TempNum = NumberToBeDisplayed;
ConvertDecimalToHex(TempNum);
}
break;
}
case 3811:
case 3011:
{
CurrentIndexOfArray++;
LCD_Data_String[CurrentIndexOfArray] = ‘-‘;
lcd.print(“-“);
break;
}
case 3821:
case 3021:
{
CurrentIndexOfArray++;
LCD_Data_String[CurrentIndexOfArray] = ‘*’;
lcd.print(“*”);
break;
}
case 3810:
case 3010:
{
CurrentIndexOfArray++;
LCD_Data_String[CurrentIndexOfArray] = ‘+’;
lcd.print(“+”);
break;
}
case 3820:
case 3020:
{
CurrentIndexOfArray++;
LCD_Data_String[CurrentIndexOfArray] = ‘/’;
lcd.print(“/”);
break;
}
case 3824:
case 3024:
{
LCD_Data_String[++CurrentIndexOfArray] = ‘\0’;
lcd.print(“=”);
CurrentIndexOfArray = -1;
ans = 0;
for(i=0;LCD_Data_String[i];i++)
{
if(LCD_Data_String[i] == ‘+’ || LCD_Data_String[i] == ‘-‘ || LCD_Data_String[i] == ‘*’ || LCD_Data_String[i] == ‘/’)
{
Index_of_Operator= i;
break;
}
}
for(i=0,j=0,k=0;LCD_Data_String[i];i++)
{
if(i < Index_of_Operator)
ArrayforNum1[j++] = LCD_Data_String[i];
if(i>Index_of_Operator)
ArrayforNum2[k++] = LCD_Data_String[i];
}
ArrayforNum1[j] = ‘\0’;
ArrayforNum2[k] = ‘\0’;
var1 = atoi_number(ArrayforNum1);
var2 = atoi_number(ArrayforNum2);
if(LCD_Data_String[Index_of_Operator] == ‘+’)
ans = var1 + var2;
if(LCD_Data_String[Index_of_Operator] == ‘-‘)
ans = var1 – var2;
if(LCD_Data_String[Index_of_Operator] == ‘*’)
ans = var1 * var2;
if(LCD_Data_String[Index_of_Operator] == ‘/’)
ans = var1 / var2;
NumberToBeDisplayed = ans;
lcd.print(ans);
CurrentIndexOfArray = -1;break;
}
case 3800:
case 3000:
{
NumberToBeDisplayed = (NumberToBeDisplayed*10) + 0;
CurrentIndexOfArray++;
LCD_Data_String[CurrentIndexOfArray] = ‘0’;
lcd.print(“0”);
break;
}
case 3801:
case 3001:
{
NumberToBeDisplayed = (NumberToBeDisplayed*10) + 1;
CurrentIndexOfArray++;
LCD_Data_String[CurrentIndexOfArray] = ‘1’;
lcd.print(“1”);
break;
}
case 3802:
case 3002:
{
NumberToBeDisplayed = (NumberToBeDisplayed*10) + 2;
CurrentIndexOfArray++;
LCD_Data_String[CurrentIndexOfArray] = ‘2’;
lcd.print(“2”);
break;
}
case 3803:
case 3003:
{
NumberToBeDisplayed = (NumberToBeDisplayed*10) + 3;
CurrentIndexOfArray++;
LCD_Data_String[CurrentIndexOfArray] = ‘3’;
lcd.print(“3”);
break;
}
case 3804:
case 3004:
{
NumberToBeDisplayed = (NumberToBeDisplayed*10) + 4;
CurrentIndexOfArray++;
LCD_Data_String[CurrentIndexOfArray] = ‘4’;
lcd.print(“4”);
break;
}
case 3805:
case 3005:
{
NumberToBeDisplayed = (NumberToBeDisplayed*10) + 5;
CurrentIndexOfArray++;
LCD_Data_String[CurrentIndexOfArray] = ‘5’;
lcd.print(“5”);
break;
}
case 3806:
case 3006:
{
NumberToBeDisplayed = (NumberToBeDisplayed*10) + 6;
CurrentIndexOfArray++;
LCD_Data_String[CurrentIndexOfArray] = ‘6’;
lcd.print(“6”);
break;
}
case 3807:
case 3007:
{
NumberToBeDisplayed = (NumberToBeDisplayed*10) + 7;
CurrentIndexOfArray++;
LCD_Data_String[CurrentIndexOfArray] = ‘7’;
lcd.print(“7”);
break;
}
case 3808:
case 3008:
{
NumberToBeDisplayed = (NumberToBeDisplayed*10) + 8;
CurrentIndexOfArray++;
LCD_Data_String[CurrentIndexOfArray] = ‘8’;
lcd.print(“8”);
break;
}
case 3809:
case 3009:
{
NumberToBeDisplayed = (NumberToBeDisplayed*10) + 9;
CurrentIndexOfArray++;
LCD_Data_String[CurrentIndexOfArray] = ‘9’;
lcd.print(“9”);
break;
}
}
}
}
int atoi_number(char *p)
{
int num=0,i;for(i=0;p[i];i++)
{
if((p[i] >= ‘0’) && (p[i] <= ‘9’))
num = num * 10 + p[i] – 48;
}
return num;
}
int ConvertDecimalToBase(int n, int b)
{
int r=0, digitPos=1;while (n)
{
r += (n%b)*digitPos;
n /= b;
digitPos *= 10;
}
return r;
}
void ConvertDecimalToHex(long int num)
{
long int rem[50],i=0,length=0;while(num>0)
{
rem[i]=num%16;
num=num/16;
i++;
length++;
}
for(i=length-1;i>=0;i–)
{
switch(rem[i])
{
case 10:
lcd.print(“A”);
break;
case 11:
lcd.print(“B”);
break;
case 12:
lcd.print(“C”);
break;
case 13:
lcd.print(“D”);
break;
case 14:
lcd.print(“E”);
break;
case 15:
lcd.print(“F”);
break;
default :
lcd.print(rem[i]);
}
}
}
سلام خسته نباشید،چطور میشه هر کدام از این کد های ریموت کنترل را به فرمت hex format یا decimal format قابل درک برای نرم افزار گوشی آندروید Galaxy Universal Remote تبدیل کرد؟ (با حالت دسیمال و هگزادسیمال معمولی متفاوت می باشد).
سلام
روال نوشتن برنامه برای یه سیستم عاملی مثل اندرویید خیلی متفاوته به برنامه ای که برای اندرویید نوشته میشه
مطمئنا برای گوشی هایی که IRدارند برنامه های سمپل زیادی برای ارسال کد RC5 وجود داره که میتونید از اونها استفاده کنید
سلام’ در کنسولهای بازی قدیمی معروف به میکرو علاوه بر دسته بازی یک عدد تفنگ هم وجود داشت که دستگاهو به هر تلویزیونی وصل میکردین با شلیک این تفنگ به هر قسمت از صفحه تلویزیون دستگاه یا تلویزیون تشخیص میداد که آیا به پرنده در حال پرواز داخل بازی تیر خورده یا نه’ مکانیزم و عملکرد این سیستم چه جوریه?آیا با آردوینو میشه همچین چیزی ساخت?ممنون میشم کمک کنید’ لطفا طرز کارشو شرح بدین ‘سپاسگذارم
خوب خیلی ساده است ، همونطور که مشخصه تصویر داره توسط کنسول بازی ایجاد میشه ، اگر دقت کرده باشید اردک مورد نظر از درخشندگی بالایی برخورداره ، وقتی که شما تفنگ رو به سمتش گرفته باشید با توجه به درخشندگی اون قسمت از تصویر سنسور تفنگ عمل خواهد کرد
بله کار پیچیده ای نیست و فکر میکنم با آردوینو هم بشه همچین الگویی پیاده سازی کرد.