SkullKeep píše: ↑14 kvě 2019, 14:45
Jestli se nepletu tak dálkové ovládání vysíla víc než jeden kód po stisknutí talčítka. Možná toto video
Using IR Remote Controls with the Arduino pomůže s problémem. Nejjednodužší řešení je posílat kódy co posílá ovladač vypisovat na seriový port a tam zjistit kde je chyba.
Měl jsem IR přijímač (vadný), co odesílal různá hex/dec data po zmáčknutí stejného tlačítka. Po výměně IR přijímače, problém zmizel. Po zmáčknutí tlačítka je kód stejný. Samozřejmě narazil jsem na pář případů na zahraničních fórech, kde skutečně přijali několik 32 bit HEX kódu na dané tlačítko. V mém případě to tak není.
Asi jsem to špatně napsal: Vše funguje, jen nevím, jak vypadá napsaný code pro danou funkci, kdy mám tlačítko na ovladač hex: 0xE0E0629B a ovládám s tím různé barvy. Jde mi o ten "code". Kdyby byl někdo ochoten mi napsat úryvek, jak to má vypadat...
Níže uvádím příklad pro různá tlačítka na dálkovém ovladači. Jak to upravit pro jedno tlačítko na různé barvy (zacyklení: counter++,) ?
Kód: Vybrat vše
#include <IRremote.h>
int RECV_PIN = 11;
int REDLED = 3;
int GREENLED = 5;
int BLUELED = 6;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
pinMode(REDLED,OUTPUT);
pinMode(GREENLED,OUTPUT);
pinMode(BLUELED,OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
translateIR();
for (int z=0; z<2; z++) // ignore 2nd and 3rd signal repeat
{
irrecv.resume(); // receive the next value
}
}
}
void translateIR() // takes action based on IR code received
// describing Sony IR codes on LCD module
{
switch(results.value)
{
case 0xFF30CF: // TLAČÍTKO A
digitalWrite(REDLED,LOW);
break;
case 0xFF18E7: // TLAČÍTKO B
digitalWrite(GREENLED,LOW);
break;
case 0xFF7A85: //TLAČÍTKO C
digitalWrite(BLUELED,LOW);
break;
case 0xFFA25D: //TLAČÍTKO D
digitalWrite(REDLED,HIGH);
digitalWrite(GREENLED,HIGH);
digitalWrite(BLUELED,HIGH);
break;
default:
Serial.println("OTHER");
}
delay(500);
}