Ir ao conteúdo
  • Cadastre-se

ThigerX

Membro Júnior
  • Posts

    3
  • Cadastrado em

  • Última visita

Reputação

1
  1. Boa noite. Estou tentando escrever um firmware para controle de uma luminária usando um controle remoto IR, porém estou com dificuldade para implementar a leitura do controle quando acionado através de uma interrupção, pois se implementado no loop principal a função para a leitura do controle, esta pode acabar não ler o sinal do controle, uma vez que no loop principal possui o restante do código. Segue o código para teste: // Programa : Teste Controle Remoto IR //1 - FFA25D //2 - FF629D //3 - FFE21D //4 - FF22DD //5 - FF02FD //6 - FFC23D //7 - FFE01F //8 - FFA857 //9 - FF906F //0 - FF9867 //* - FF6897 //# - FFB04F // //cima - FF18E7 //esquerda - FF10EF //baixo - FF4AB5 //direita - FF5AA5 //ok - FF38C7 #include <IRremote.h> int RECV_PIN = 3; int tecla; IRrecv irrecv(RECV_PIN); decode_results results; void Controle_IR(){ Serial.println("Desativado Interrupção"); detachInterrupt(digitalPinToInterrupt(3)); if (irrecv.decode(&results)){ Serial.print("Valor lido : "); Serial.println(results.value, HEX); irrecv.resume(); Serial.print("Tecla: "); tecla = results.value; switch (tecla) { case 0xFF9867: Serial.println("0"); break; case 0xFFA25D: Serial.println("1"); break; case 0xFF629D: Serial.println("2"); break; case 0xFFE21D: Serial.println("3"); break; case 0xFF22DD: Serial.println("4"); break; case 0xFF02FD: Serial.println("5"); break; case 0xFFC23D: Serial.println("6"); break; case 0xFFE01F: Serial.println("7"); break; case 0xFFA857: Serial.println("8"); break; case 0xFF906F: Serial.println("9"); break; case 0xFF6897: Serial.println("*"); break; case 0xFFB04F: Serial.println("#"); break; case 0xFF18E7: Serial.println("Cima"); break; case 0xFF10EF: Serial.println("Esquerda"); break; case 0xFF4AB5: Serial.println("Baixo"); break; case 0xFF5AA5: Serial.println("Direita"); break; case 0xFF38C7: Serial.println("OK"); break; } } Serial.println("Ativada Interrupção"); attachInterrupt(digitalPinToInterrupt(3), Controle_IR,FALLING); } void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Inicializa o receptor IR pinMode(3, INPUT); attachInterrupt(digitalPinToInterrupt(3),Controle_IR,FALLING); } void loop() { Serial.println("."); delay(1000); } Se alguém tiver uma ideia para resolver este problema ou até mesmo outro tipo de solução ficaria muito agradecido.
  2. @ilovepic Se você quer aprender rapidamente programação de PIC sugiro as vídeo aulas de Programação de PIC em linguagem C do canal do youtube WR Kits. Sugiro ainda mais você aprender estruturar programa de maneira a usar funções de configuração para que sua aprendizagem seja mais rápida.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!