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.
Tags:
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por