Elettro Esperienze

Come riutilizzare un vecchio telecomando da tv?


Come riutilizzare un vecchio telecomando da tv, per pilotare due motori elettrici, e far muovere un piccolo robot? Basta un ricevitore IR, un driver per i motori, e ovviamente Arduino!  Lo schema a blocchi è semplice:
 Il telecomando invia un codice binario al ricevitore Infrarossi. Arduino utilizzando la libreria IRremote converte questi codici in un segnale di comando per il driver L298 che pilota i moroti DC.Il collegamento tra il driver L298, motori, arduino è il seguente:
Questo è il codice utilizzato:   #include int RECV_PIN = 11; int motore1 = 4; int motore2 = 5; int motore3 = 6; int motore4 = 7; int ledPin= 13; IRrecv irrecv(RECV_PIN);decode_results results; void setup(){ Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver pinMode(motore1, OUTPUT); pinMode(motore2, OUTPUT); pinMode(motore3, OUTPUT); pinMode(motore4, OUTPUT); pinMode(ledPin, OUTPUT);  digitalWrite(motore1, LOW); digitalWrite(motore2, LOW); digitalWrite(motore3, LOW); digitalWrite(motore4, LOW);  digitalWrite(ledPin, HIGH);} void loop() { if (irrecv.decode(&results)) {Serial.println(results.value, DEC); //Restituisce il codice in esadecimale. irrecv.resume();}  if (results.value == 1988706750) // VAI AVANTI {digitalWrite(motore1, HIGH); digitalWrite(motore2, LOW); digitalWrite(motore3, HIGH); digitalWrite(motore4, LOW); delay(200);}  if (results.value == 1988727150) // VAI INDIETRO {digitalWrite(motore1, LOW); digitalWrite(motore2, HIGH); digitalWrite(motore3, LOW); digitalWrite(motore4, HIGH); delay(200);}  if (results.value == 1988692470) //VAI A DX {digitalWrite(motore1, HIGH); digitalWrite(motore2, LOW); digitalWrite(motore3, LOW); digitalWrite(motore4, LOW); delay(200);}  if (results.value == 1988739390) // VAI A SX {digitalWrite(motore1, LOW); digitalWrite(motore2, LOW); digitalWrite(motore3, HIGH); digitalWrite(motore4, LOW); delay(200);}  if (results.value == 1988718990) // STAI FERMO {digitalWrite(motore1, LOW); digitalWrite(motore2, LOW); digitalWrite(motore3, LOW); digitalWrite(motore4, LOW); delay(200);}  }