Opá, Bom dia ^^, sou novo por aqui,estou utilizando o controle IR para ligar e desliga leds com o arduino, consegui fazer o comando pressionando apenas uma tecla. Porem tentei fazer um código no qual eu conseguisse desligar o led apos ser pressionada 4 teclas, mas não consegui, alguém tem alguma ideia de como posso fazer isso. Obrigado
Aqui segue código para ligar e desligar o led pressionando uma tecla.
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if(results.value==0xFD08F7) { // quando pressionada a tecla 1
apagaled=!apagaled; // troca o valor da variável de 0 para 1
digitalWrite(led,apagaled);// variável led assume o valor 1, led acende
}
Gostaria de agora por exemplo,desliga o led, Se somente for pressionada as teclas 1,2,3 e 4. Alguém teria alguma ideia do código?
Tentei fazer outro código utilizando uma atribuição, na qual,se fosse pressionado por exemplo 2 teclas ,desligasse o led, porem não deu certo, assim que pressiono a 1 tecla ele já desliga .
if(results.value==0xFD08F7&&0xFD0548){// se for pressionada as teclas 1 e 2 desliga led
digitalWrite(led,HIGH);
}
Espero que minha dúvida tenha ficado clara e que possam me ajudar valeu :D
Tags:
Companheiro acho que intendi mais acho que nao seria possivel ele ler os 4 de uma vez... creio que poderia fazer assim...
aperta o 1 e acende,
Ai apertaria 1 ,depois o 2 ,depois o 3 e depois o 4 ai sim acho que da pra fazer , juntos acho meio dificil, mais o pessoal que tem mais experiencia do que eu talvez saiba !
Opá, mas não é tudo de uma vez que quero aperta as teclas Bruno, e sim em uma sequencia de teclas,que desligue somente quando eu aperta essa sequencia.
testa ai
//
//
// CONTROLE DE LAMPADA ATRAVES DE SENHA
//
// Bruno Gonçalves
// 17/07/2014
// 10:16
// Técnico em Eletrônica
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int lampada,senha;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
lampada = 0;
senha = 0;
pinMode(13,OUTPUT);
digitalWrite(13,0);
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX);
irrecv.resume();
}
// VERIFICA O ESTADO DA LAMPADA, SE LAMPADA ==1 > LIGA A LAMPADA E SE LAMPADA==0 > DESLIGA A LAMPADA
if (lampada==1);
{
digitalWrite(13,1);
Serial.println("Lampada Acesa!");
delay(1500);
Serial.println("Para apagar a lampada,digite a seguencia correta!");
}
if (lampada==0)
{
digitalWrite(13,0); // força a manter desligado a lampada
}
//...............................................................................................................................
// RECEBE COMANDO PARA LIGAR A LAMPADA
if(results.value==(botao1)&&lampada==0&&senha==0) // NO LUGAR DO (BOTAO 1) COLOQUE O CODIDO RECEBIDO REFERENTE AO BOTAO 1
{
lampada = 1;delay(100); // Quando pressionado o botao 1 no controle, a lampada=1 e verifica no primeiro if fazendo a lampada ligar!
}
//...............................................................................................................................
// VERIFICANDO A SENHA DE ACORDO COM O BOTAO APERTADO
if(results.value==(botao1)&&lampada==1&&senha==0) // NO LUGAR DO (BOTAO 1) COLOQUE O CODIDO RECEBIDO REFERENTE AO BOTAO 1
{
senha = 1;
Serial.println("Botao 1 pressionado!");
}
if(results.value==(botao2)&&lampada==1&&senha==1) // NO LUGAR DO (BOTAO 2) COLOQUE O CODIDO RECEBIDO REFERENTE AO BOTAO 2
{
senha = 2;
Serial.println("Botao 2 pressionado!");
}
if(results.value==(botao3)&&lampada==1&&senha==2) // NO LUGAR DO (BOTAO 3) COLOQUE O CODIDO RECEBIDO REFERENTE AO BOTAO 3
{
senha = 3;
Serial.println("Botao 3 pressionado!");
}
if(results.value==(botao4)&&lampada==1&&senha==3) // NO LUGAR DO (BOTAO 4) COLOQUE O CODIDO RECEBIDO REFERENTE AO BOTAO 4
{
senha = 4;
Serial.println("Botao 4 pressionado!");
delay(500);
}
if(senha==4) // Sequencia ou senha correta, entao permite que a lampada desligue!
{
digitalWrite(13,0);
delay(50);
Serial.println("Lampada Apagada!");
senha = 0;
lampada = 0;
delay(200);
}
} //fecha o loop
Opá valeo ae mano, vou testar o código e aviso se funcionou ;D
ok , eu nao testei tambem nao, apenas criei ele aqui pois estava no serviço, talvez precise de algum ajuste minimo, mais acho bem provavel funcionar!
abs
Cara, vocÊ já tentou o comando:
if( digitalRead(pino1)==HIGH && digitalRead(pino2)==HIGH && digitalRead(pino)==HIGH && digitalRead(pino1)==HIGH){
digitalWrite(pinodoLed,LOW);
}
Tenta ai e fala se deu certo ok!
Weider Não conseguir entender o Seu código.No caso o arduino não está lendo o valor de (results.value) ?
if(results.value==(Código Hexadecimal)&&(Código Hexadecimal)&& etc...
digitalWrite(led,LOW);
}
Não entendi o porquê iria fazer ele ler os valores dos pinos digitais =\
Desculpa cara,
Eu não li direito e falei merda, pensei que você queria saber como criar uma função em uma montagem que quando pressionado 4 botões ligados cada botão em uma porta digital do arduino, ele faria algo programado pro você, no caso apagar leds.
Pensei que fosse tipo, se precionar o botão 1 que esta ligado ao pino digital 1 ele acende o led 1, e assim sucessivamente com outros botões, pinos e leds, dai pra apagar tudo de uma só vez utilizaria o codigo que coloquei.
Essa parte de comunicação IR eu ainda não tive necessidade de aprender.
Há tranquilo pow UHEUHE Mas valeo Ae =D
Putz Luis Farias,
PARABENS PELAS PALAVRAS !!!
Muita gente acha que porque todo mundo que tá no mundo arduino vive repetindo: é facil! é facil! a coisa realmente é facil.
Um amigo comprou o kit master do arduino, comprou raspbery só porque queria montar um analisador sismico, detalhe ele é geologo, resultado: é facil, mas tem que estudar.
Consequencia foi que acabou ele me dando todo o material e eu montando pra ele o analisador sismico que ele queria.
Como tenho a filosofia de compartilhar, imediatamente cedi o rapberry pra outros amigos que estão querendo aprender ele, já que não tenho esse foco, vei de graça, cedi de graça e fico feliz.
Pessoalmente estou tentanto aprender sobre comunicação entre arduino e Xbee em modo API a mais de 4 meses e estou com enormes dificuldades.
Resumindo: É facil! mas somente se estudar.
testa aews....
/*
* IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*/
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long senha_acende[4] = {botao1, botao2, botao3, botao4};
unsigned long senha_apaga[4] = {botao2, botao3, botao4, botao1};
byte certo = 0;
byte ligado = LOW;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode(8, OUTPUT);
digitalWrite(8, LOW);
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if(ligado) {
if(results.value == senha_apaga[certo]) {
certo++;
} else {
certo = 0;
}
Serial.println(certo);
if(certo == 4) {
ligado = LOW;
digitalWrite(8, ligado);
certo = 0;
}
} else {
if(results.value == senha_acende[certo]) {
certo++;
} else {
certo = 0;
}
Serial.println(certo);
if(certo == 4) {
ligado = HIGH;
digitalWrite(8, ligado);
certo = 0;
}
}
irrecv.resume(); // Receive the next value
}
}
Opá Boa pessoal, enfim conseguir criar um código no qual apagasse o led quando apertasse as 4 teclas simultaneamente, agradeço de coração a todos que tentaram ajudar com o código Valeo mesmo :DD
Aqui segue o código, Apenas atribui uma variável e fui criando algumas condições
void loop()
{
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
if(results.value==0xFD00FF){//TECLA Liga
digitalWrite(led,HIGH);//Led liga
}
if(results.value==0xFD48B7){//Se pressionada a TECLA 3 estado=1
estado1=1;
Serial.println(estado1);
}
if(results.value==0xFD8877){// Se pressionada a TECLA 2 e se O estado1==1 estado1=2
if(estado1==1){
estado1=2;
Serial.println(estado1);
}
}
else{ (led,HIGH);
}
if(results.value==0xFD28D7){// Se pressionada a TECLA 4 e o estado1==2 estado1=3
if(estado1==2){
estado1=3;
Serial.println(estado1);
}
}
else{ (led,HIGH);
}
if(results.value==0xFD08F7){// Se pressionada a TECLA 1 e estado1==3 estado1=4
if(estado1==3){
estado1=4;
Serial.println(estado1);
}
}
else{ (led,HIGH);
}
if(estado1==4){
digitalWrite(led,LOW);//Se estado1==4 desliga led,
delay(1000);
}
if(estado1==4){// Apos o estadi1==4 estado1=0 para que o led possa ser acesso novamente
estado1=0;
delay(1000);
}
irrecv.resume(); // Receive the next value
}
}
Eu apenas fui guardando as informações nas variáveis até que fosse verdadeiro o estado após ser pressionada as 4 teclas, acho que deu para entender, valeo ae a todos
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por