quarta-feira, 26 de junho de 2013

Placa Program-ME ligando uma TV Sony e controlando troca de canais

No primeiro encontro do Arduino Team não sabíamos muito bem o que desenvolvedor. Por acaso encontramos este vídeo na internet (link aqui), onde uma placa arduino liga um aparelho de TV conforme o valor de sensor de proximidade. Neste momento decidimos qual seria nosso foco.

O primeiro link indica o site onde toda a criação do projeto é explicada (link aqui). A imagem da ligação do sensor da protoboard foi essencial para nosso desenvolvimento. Exceto pelo fato de não possuírmos (ainda) o receptor de IR, somente o sensor IR LED. Mas o achado mais importante neste texto foi a indicação da biblioteca que foi utilizada no projeto, a IRemote.

No site oficial da biblioteca tem um link para um texto chamado "A Multi-Protocol Infrared Remote Library for the Arduino".

Depois que ligamos o sensor LED IR na protoboard e esta na Program-ME 2.0, testamos o seguinte trecho de código:

 
#include <IRremote.h>
IRsend irsend;

void setup()
{
  Serial.begin(9600);
}

void loop() {
  if (Serial.read() != -1) {
    for (int i = 0; i < 3; i++) {
      irsend.sendSony(0xa90, 12); // Sony TV power code
      delay(100);
    }
  }
}


Quando testamos a TV realmente ligou, festa geral na Arduino Team. No mesmo link tem uma foto de como deve ficar a protoboard. Seguimos a representação fielmente.

O próximo passo era descobrir como trocar os canais. Em uma busca rápida no Google chegamos a este link.

Infelizmente nosso tempo estava acabando e não poderíamos fazer algo mais elaborado, como ligar mais botões a placa para termos uma ação específica para trocar de canal para cima e, outra para troca de canal para baixo. Logo, nosso código ficou assim:

/*
 * IRremote: IRsendDemo - demonstrates sending IR codes with IRsend
 * An IR LED must be connected to Arduino PWM pin 3.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include <IRremote.h>

IRsend irsend;
int botao = 2;


void setup()
{
  pinMode(botao, INPUT);
  Serial.begin(9600);
}

void loop() {
  int estadoBotao = digitalRead(botao);
 
  delay(500);
 
  int luz = analogRead(3);

  if (luz < 200){
    for (int i = 0; i < 3; i++) {
      irsend.sendSony(2704, 12); // Sony TV power code
      delay(40);
    }
  }
/*  if (estadoBotao == LOW){
    for (int i = 0; i < 3; i++) {
      irsend.sendSony(0x90, 12); //channel up
      delay(40);
    }
  }*/
 
  if (estadoBotao == LOW){
    for (int i = 0; i < 3; i++) {
      irsend.sendSony(0x890, 12); //channel down
      delay(40);
    }
  }
}



Dependendo do if comentado, o código trocará o canal para cima ou para baixo.

Como próximo passo, almejamos a compra do sensor receptor de infrared. A busca no google já resultou nesta ótima fonte: o código para leitura dos códigos IR através do sensor receptor (link aqui).

Até a próxima.

Nenhum comentário:

Postar um comentário