BOA NOITE !

 Galera,  sou novo aqui no Laboratório de garagem,  meu arduino duemilanove chegou hoje, e ja   começei a brincar, então eu estava fazendo alguns tutorias na net, até que eu conseguir fazer um led

acender via o controle remoto universal, usando o Sensor infravermelho, quando eu aperto o botão de power do controle remoto o led liga, porem eu não estou conseguindo fazer ele apagar.eu ja tentei modificar o codigo de programação mais ainda não conseguir, o codigo que eu estou usando é o seguinte : 

boolean desligado = false;
 
void setup() {
  Serial.begin(9600);
  pinMode(2, INPUT);
  pinMode(13, OUTPUT);
}
 
void loop() {
  if  (desligado == false) {
      digitalWrite(13, LOW);
 }
 int sensorvalue = digitalRead(2);
 Serial.println(sensorvalue, DEC);
 if (sensorvalue == 0) {
    digitalWrite(13, HIGH);
    desligado = true;

  Desculpa pela minha  noobiçe,  quem poder me ajudar agradeço.

Exibições: 7692

Responder esta

Respostas a este tópico

Olá Arlei, como vai?

Recentemente tive um problema semelhante ao seu, consegui achar um exemplo na net que resolveu o meu problema.

Primeiramente você terá que instalar a biblioteca IRremote, segue o link:IRremote

Lembrando que a biblioteca deverá ser descompactada e colocada na pasta: \arduino-1.0\libraries.

Depois de instalar a biblioteca você devera usar o exemplo desta biblioteca chamado IRrecvDemo ( File, Examples, IRremote,  IRrecvDemo) para mapear seu controle. Após enviar esse exemplo para o arduino você clica em "Tools, Serial Monitor" e em seguida aponte o controle para o receptor e aperte uma tecla e seu valor ira aparecer na tela em Hexadecimal, depois de saber qual o valor de cada tecla você pode colocar esses valores substituindo os do codigo abaixo:

#include <IRremote.h>
int RECV_PIN = 2; // Diz que o receptor IR esta conectado no pino 2
IRrecv irrecv(RECV_PIN); // cria a biblioteca IR
decode_results results; // dados IR vão ser armazenados em results

void setup()
{
Serial.begin(9600); // Abre a porta serial.
pinMode(5, OUTPUT); // Define o pino 5 como saida.
pinMode(6, OUTPUT); // Define o pino 6 como saida.
irrecv.enableIRIn(); // Inicia o receptor IR.
}

void loop(){
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX); // Envia o codigo do botão pressionado para a porta serial.
//Se você quizer usar valores decimais é so mudar o HEX por DEC e abaixo colocar os valores em decimal
irrecv.resume();
}
if (results.value == fd08f7){ digitalWrite(5,HIGH);} // Se o receptor IR receber o codigo "fd08f7" Aciona o led 1.

if (results.value == fd8877){ digitalWrite(5,LOW);} // Se o receptor IR receber o codigo "fd8877" Desliga o led 1.

if (results.value == fd28d7){ digitalWrite(6,HIGH);} // Se o receptor IR receber o codigo "fd28d7" Aciona o led 2.

if (results.value == fda857){ digitalWrite(6,LOW);} // Se o receptor IR receber o codigo "fda857" Desligar o led 2.
}

// Caso queira converter o valor obtido no IRcevDemo de Hexadecimal para decimal você pode usar

// esse programa em java que eu criei: Conversor de bases

Esses codigos que vc coloca como:"fd08f7","fd8877" etc.São valores que vem do controle?ou seja cada controle remoto tem uma configuração de código diferente?

Sim, cada controle tem um código diferente para cada tecla. Se for igual, é só coincidência. Vc tem que rodar um "pograminha' de teste para testar o código, veja abaixo. Ele lê a tecla pressionada e escreve na serial, de maneira que vc pode ver qual o código. Nota: tem controle que a gente não consegue ler todas as teclas, eu não sei porque.

#include <WProgram.h>
#include <NECIRrcv.h>

// look for IR codes and print them as they are received

#define IRPIN 2 // pin that IR detector is connected to

NECIRrcv ir(IRPIN) ;

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

void loop()
{
unsigned long ircode ;
while (ir.available()) {
ircode = ir.read() ;
Serial.println(ircode,HEX) ;
}
}

Arlei,

Você deu uma olhada na área técnica da rede social?? Lá temos tutoriais, projetos e etc... Temos um tutorial utilizando emissor e receptor de IR. Temos um projeto controlando um robô com controle remoto IR.... Dá uma olhada: http://labdegaragem.com/profiles/blogs/projeto-robo-com-arduino-e-c...

Abraços!

Equipe LdG

// Descobri uma maneira de controlar diretamente um led diretamente via qualquer controle infravermelho
// É possivel usar esse código para obter os valores decimais de cada tecla do controle infravermelho e usar estas teclas para controlar Leds por exemplo.

// O Sensor tem 3 pinos. Um vai pro terra do arduino, outro para o 5v e outro para o pino 2 digital.

#include <IRremote.h>
int RECV_PIN = 2; // Diz que o receptor IR esta conectado no pino 2
IRrecv irrecv(RECV_PIN); // cria a biblioteca IR
decode_results results; // dados IR vão ser armazenados em results

void setup()
{
Serial.begin(9600); // Abre a porta serial.
pinMode(9, OUTPUT); // Define o pino como saida para um LED.
pinMode(10, OUTPUT); // Define o pino como saida para um LED.
pinMode(11, OUTPUT); // Define o pino como saida para um LED.
irrecv.enableIRIn(); // Inicia o receptor IR.
}

void loop(){
if (irrecv.decode(&results)) {

Serial.println(results.value, DEC);// Os valores encontrados em cada botão do controle vao ser exibidos no "Serial Monitor"
irrecv.resume();

}

//Os valores abaixo após results.value devem estar em decimal e não em hexadecimal
if (results.value == 16){ digitalWrite(11,HIGH);} // botao 1 do controle sony ativa o led na porta 11
if (results.value == 2064){ digitalWrite(10,HIGH);}//botao 2 do controle sony ativa o led na porta 10
if (results.value == 1040){ digitalWrite(9,HIGH);}//botao 3 do controle sony ativa o led na porta 9

if (results.value == 528){//botao 5 do controle sony desliga os 3 leds.
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
}
}

boa tarde cara, eu não entendo muito sobre isso, mais sei dizer que quebrei muito minha cabeça ate conseguir, uns dos problemas é que cada tecla fornece um código hexadecimal, para vc saber esse código va ate  serial monitor que fica no canto superior direito e clique la , assim abrira um tela ai vc aponta o controle para o IR e aperte  por exemplo no controle que tenho aperto a  tecla 1  e irar aparecer um código ex 5500675 esse sera o numero que deverar colocar no ,

if (irrecv.value == 5500675) e esse ira acender o led depois vc cria outro com outro botão para desligar e assim por diante

Bom dia, primeiramente você tem que ter a biblioteca IRremote (http://www.4shared.com/rar/Ko2R_91J/IRremote.html) instalada para poder trabalhar com códigos do controle perfeitamente.

Depois você precisa descobrir o código de cada tecla que você quer usar de seu controle, para isso com a biblioteca instalada ( \arduino-1.0\libraries) basata usar o exemplo que vem com ela para descobrir os códigos, ex:


#include <IRremote.h>

int RECV_PIN = 11; //Pino ligado no sensor IR

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, DEC);
    irrecv.resume(); // Receive the next value
  }
}

 

Depois que você tiver os códigos das teclas que pretender usar você pode usar esse outro código para realizar determinada tarefa caso alguma tecla seja pressionada:

 


#include <IRremote.h>
int RECV_PIN = 11; // Diz que o receptor IR esta conectado no pino 11
IRrecv irrecv(RECV_PIN); // cria a biblioteca IR
decode_results results; // dados IR vão ser armazenados em results
void setup()
{
Serial.begin(9600); // Abre a porta serial.
pinMode(2, OUTPUT); // Define o pino 2 como saida.
pinMode(3, OUTPUT); // Define o pino 3 como saida.
irrecv.enableIRIn(); // Inicia o receptor IR.
}
void loop(){
if (irrecv.decode(&results)) {
Serial.println(results.value, DEC); // Envia o codigo do botão pressionado para a porta serial.
irrecv.resume();
}
//Coloque os valores em decimal para evitar erros de compilação
if (results.value == 551494365){
digitalWrite(2,HIGH);
} // Se o receptor IR receber o codigo "551494365" Aciona o led 1.

  if (results.value == 551514255){
    digitalWrite(2,LOW);
  } // Se o receptor IR receber o codigo "551514255" Desliga o led 1.

  if (results.value == 551535165){
    digitalWrite(3,HIGH);
  } // Se o receptor IR receber o codigo "551535165" Aciona o led 2.

  if (results.value == 551525475){
    digitalWrite(3,LOW);
  } // Se o receptor IR receber o codigo "551525475" Desligar o led 2.
}

Essa biblioteca foi testada na versão do compilador 1.0.5, tive problemas com versões mais recentes. Estou usando no windows 7 x64.

Espero ter ajudado.

Abraço.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço