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.

O que é o Arduino Team



Histórico
O Arduino Team surgiu no final do Arduino Hacking Weekend, que ocorreu no mês de Julho, na sede da Globalcode em São Paulo. A iniciativa ocorreu tendo em vista o interesse dos quatro principais membros do grupo pela área de eletrônica, robótica, domótica e similares. Inicialmente o grupo foi formado por:


Jaci Nunes
Pedro Padilha Farroco
Ricardo da Silva Ogliari
Ryoji Kuwae Neto


Objetivo Central
O objetivo do grupo é unir o conhecimento de todos componentes, visando o crescimento individual e do time.


Objetivos Gerais
Como um grupo de estudos, porém, mais práticos do que teóricos, visamos a criação de qualquer tecnologia no final de cada, seja com participação de todos membros (preferencialmente) ou, parcialmente, no caso de alguma eventualidade.


Inicialmente o corpo diretivo é formado pelos quatro membros originais (Jaci, Pedro, Ricardo e Ryoji). Porém, almejamos a participação de mais pessoas que possam contribuir de alguma maneira. Nosso foco é contar com pessoas interessadas em serem nós ativos na rede e, não apenas fazer parte da grande maioria que apenas absorve conteúdo da rede.
As principais decisões do grupo sempre serão tomadas pelo corpo diretivo.


Novas participações
Como dito anteriormente, somos abertos a mentes positivas e interessadas em aprender e compartilhar o que sabem, independente de nível de conhecimento ou área de domínio.