Ciao a tutti.
Sto tentando di mettere insieme 3 progetti funzionanti ma che insieme non funzionano:
1° Ho recuperato il sensore ir da un ricevitore satellitare rotto, l'ho collegato e funziona, stampa su seriale i codici del telecomando.
2° Ho collegato un display con chip HD44780, ho provato prima con la libreria LiquidCrystal e funziona, poi mi sono scritto il codice da 0 leggendomi il datasheet e funziona anche così.
3° Ho messo un 74HC595 tra l'arduino e l' lcd, ho modificato il codice che ho scritto e usando shiftout sono riuscito a farlo funzionare.
Ora ho collegato il 1° schema (il ricevitore ir) a quello con lcd (3°)
I pin sono così:
IR out -> pin 6
74HC595 DS -> pin 4
74HC595 STcp -> pin 2
74HC595 SHcp -> pin 7
void setup()
{
lcd.Init();
lcd.CursorOn(false);
last_time = millis();
irrecv.enableIRIn(); // Start the receiver
irrecv.blink13(true);
Serial.begin(9600);
}
if (irrecv.decode(&results))
{
if ((millis() - last_time) > 1000)
{
last_time = millis();
for(int i = 0; i < (sizeof(Codes)/sizeof(int)); i++)
{
if (Codes[i] == results.value)
{
Serial.println(Names[i]);
if (results.value == 0xA8B92)
{
int X = 250;
lcd.w1(" "); delay(X);
lcd.w1(" 1"); delay(X);
lcd.w1(" 12"); delay(X);
lcd.w1(" 123"); delay(X);
lcd.w1(" 1234"); delay(X);
lcd.w1(" 12345"); delay(X);
lcd.w1(" 123456"); delay(X);
lcd.w1(" 1234567"); delay(X);
lcd.w1(" 12345678"); delay(X);
lcd.w1(" 123456789"); delay(X);
lcd.w1(" 1234567890"); delay(X);
lcd.w1(" 12345678901"); delay(X);
lcd.w1(" 123456789012"); delay(X);
lcd.w1(" 1234567890123"); delay(X);
lcd.w1(" 12345678901234"); delay(X);
lcd.w1(" 123456789012345"); delay(X);
lcd.w1("1234567890123456"); delay(X);
lcd.w2(false, "2012 2012 2012"); delay(X);
lcd.w2(true, " "); delay(X);
lcd.w2(false, "2012 2012 2012"); delay(X);
lcd.w2(true, " "); delay(X);
lcd.w2(false, "2012 2012 2012"); delay(X);
}
i = 9001; // esce dal loop
}
}
}
irrecv.resume();
}
il codice senza if (results.value == 0xA8B92) { .... } è lo stesso del 1° schetch quindi funziona, quello dentro l'if è lo stesso del 3° e funziona anche quello
Premendo tutti i tasti del telecomando tranne 0xA8B92 tutto funziona come dovrebbe, vedo sulla seriale quello che ho premuto, premendo 0xA8B92 entra dentro l'if e inizia a scrivere sul'lcd però si blocca a metà circa, l'lcd si svuota e non vedo piu niente sulla seriale premendo gli altri tasti, però il led sul pin 13 si accende...
Sono ore che controllo ma mi sembra tutto giusto, possibile che IRremote dia problemi a shiftout ?