Con questo progetto vorrei mostrarvi come usare arduino come presenter multimediale.
Usando un comunissimo telecomando tv e premendo tasti ben definiti (tipo next o back), arduino riceve i comandi e scrive sulla seriale le stringe NEXT e BACK.
Un programma in running sul proprio pc, si mette in ascolto sulla porta seriale dell’arduino e quando intercetta le stringe NEXT e BACK simula pressione dei tasti AVANTI o INDIETRO del proprio pc in modo tale da cambiare le slide durante la vostra presentazione.
Il codice relativo ad arduino è davvero minimale, ora sto scrivendo il programmino che mi permette di simulare la pressione dei tasti sul pc.
Attualmente sto a metà dell’opera, devo solo limare alcune cosette.
Ho usato la stessa pcb della scorsa volta (trasformandola in un modulto/breakout), un ricevitore IR e un led bicolore.
Un pò di foto:
Per il momento il codice relativo ad arduino è il seguente:
/* Arduino presenter receiver By Andrea Esposito Site: blackstufflabs.com For: The Fritzmas challenge - http://fritzing.org 17/12/2011 IRremote.h from: http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html IR Receiver pcb taked from an old divx player TV Remote control Button - INT Next - 16746615 Back - 16750695 NN - 4294967295 */ #include <IRremote.h> #define next 16746615 #define back 16750695 #define NN 4294967295 #define red 9 #define green 10 int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver pinMode(green, OUTPUT); // Green led pinMode(red, OUTPUT); // Red led irrecv.enableIRIn(); Serial.println (" Arduino Presenter"); Serial.println ("Coding by: "); Serial.println (" Andrea Esposito"); Serial.println ("blackstufflabs.com"); } void loop() { digitalWrite(green, HIGH); if (irrecv.decode(&results)) { if (results.value != NN){ if (results.value == next) Serial.println("NEXT"); if (results.value == back) Serial.println("BACK"); digitalWrite(green, LOW); digitalWrite(red, HIGH); // set the LED on delay(100); // wait for a second digitalWrite(red, LOW); // set the LED off delay(100); digitalWrite(green, HIGH); } irrecv.resume(); } delay(200); }