Problem performing commands from switch case

0

I have a IR remote and a IR receiver hooked up to my arduino (uno). When I receive a command from that remote, I want to turn one pin high and another low. Can someone tell me what I'm doing wrong? I know that after you hold a button on the remote down for more than half a second, it sends a different (blank) code. Could this be what's wrong?

#include "IRremote.h"
int receiver = 11; // Signal Pin of IR receiver to Arduino Digital Pin 11
int emagpos = 7; //electro magnet positive direction on pin 7
int emagneg = 8; // electro magenet negative direction on pin 8
/*-----( Declare objects )-----*/
IRrecv irrecv(receiver);     // create instance of 'irrecv'
decode_results results;      // create instance of 'decode_results'
/*-----( Function )-----*/
void translateIR() // takes action based on IR code received
// describing Remote IR codes 
{
  switch(results.value)
  {
  case 0xFFA25D: Serial.println("POWER"); break;
  case 0xFFE21D: Serial.println("FUNC/STOP"); break;
  case 0xFF629D: Serial.println("VOL+"); break;
  case 0xFF22DD: Serial.println("FAST BACK");    break;
  case 0xFF02FD: Serial.println("PAUSE");    break;
  case 0xFFC23D: Serial.println("FAST FORWARD");   break;
  case 0xFFE01F: Serial.println("DOWN");    break;
  case 0xFFA857: Serial.println("VOL-");    break;
  case 0xFF906F: Serial.println("UP");    break;
  case 0xFF9867: Serial.println("EQ");    break;
  case 0xFFB04F: Serial.println("ST/REPT");    break;
  case 0xFF6897: Serial.println("Magnet+");    digitalWrite(emagneg, LOW);    digitalWrite(emagpos, HIGH); break;
  case 0xFF30CF: Serial.println("Magnet-");    digitalWrite(emagpos, LOW);    digitalWrite(emagneg, HIGH); break;
  case 0xFF18E7: Serial.println("Magnet off");  digitalWrite(emagpos, LOW);    digitalWrite(emagpos, LOW); break;
  case 0xFF7A85: Serial.println("3");    break;
  case 0xFF10EF: Serial.println("4");    break;
  case 0xFF38C7: Serial.println("5");    break;
  case 0xFF5AA5: Serial.println("6");    break;
  case 0xFF42BD: Serial.println("7");    break;
  case 0xFF4AB5: Serial.println("8");    break;
  case 0xFF52AD: Serial.println("9");    break;
  case 0xFFFFFFFF: Serial.println(" REPEAT");  digitalWrite(emagneg, LOW);    digitalWrite(emagpos, HIGH);  break;  
  default: 
    Serial.println(" other button   ");
  }// End Case
  delay(500); // Do not get immediate repeat
} //END translateIR
void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  Serial.begin(9600);
  Serial.println("IR Receiver Button Decode"); 
  irrecv.enableIRIn(); // Start the receiver
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
}/*--(end setup )---*/
void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
{
  if (irrecv.decode(&results)) // have we received an IR signal?
  {
    translateIR(); 
    irrecv.resume(); // receive the next value
  }  
}/* --(end main loop )-- */
arduino
arduino-uno
asked on Stack Overflow Sep 17, 2018 by Ki Albinson • edited Sep 17, 2018 by Brian Tompsett - 汤莱恩

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0