Archivi tag: ir receiver

Arduino come presenter multimediale

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:

header

capture3

IMG_20111216_155059

IMG_20111217_173201

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);
}