Simple IR to RS232 (w RS232 shield) unstable

Here is the Code im using.

Im not good at this at all.. so. Can anyone spot anything that will cause this to work only sporadically?

Thanks!

*/

// Include IR Remote Library by Ken Shirriff
#include <IRremote.h>
#include <SoftwareSerial.h>

// Define myserial RX & TX
// SoftwareSerial mySerial(10, 11); // RX, TX

// Define TX pin
const int tx = 1;

// Define RX pin
const int rx = 0;

// Define sensor pin
const int RECV_PIN = 4;

// Define LED pin constants
const int redPin = 8; 

// Define integer to remember toggle state
int togglestate = 0;

// Define IR Receiver and Results Objects
IRrecv irrecv(RECV_PIN);
decode_results results;

// Lagrer forrige IR-kode mottatt
// unsigned long lastCode; 


void setup(){
 // Enable the IR Receiver
 irrecv.enableIRIn();
 // Set LED pins as Outputs
//  pinMode(redPin, OUTPUT);
 //start the serial communication
 Serial.begin(115200);
//   mySerial.begin(115200);
}


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

   //      if(results.value == 0xFFFFFFFF)   // if repeat command (button held down)
   // {
   //   results.value = lastCode;      // replace FFFF with last good code
   // }

       switch(results.value){
         case 0xFD00FF: //POWER KNAPP
       // lastCode = results.value;     // registrer koden for gjentakelse
       // mySerial.print("[DEVIALET>POWER=1]");
       Serial.println("[DEVIALET>POWER=1]");
       break;
       
  
         case 0xFD40BF: //FUNC/STOP KNAPP
       // lastCode = results.value;     // registrer koden for gjentakelse
       // mySerial.print("[DEVIALET>POWER=0]");
       Serial.println("[DEVIALET>POWER=0]");
       break;

         case 0xFD807F: //VOL+ KNAPP
       // lastCode = results.value;     // registrer koden for gjentakelse 
       // mySerial.print("[DEVIALET>VOLUME=++]");
       Serial.println("[DEVIALET>VOLUME=++]");
       break;

          case 0xFD906F: //VOL- KNAPP
       //   lastCode = results.value;     // registrer koden for gjentakelse
       // mySerial.print("[DEVIALET>VOLUME=--]");
       Serial.println("[DEVIALET>VOLUME=--]");
       break;

          case 0xFD20DF: //PREV-KNAPP
       //   lastCode = results.value;     // registrer koden for gjentakelse
       // mySerial.print("[DEVIALET>SOURCE=--]");
       Serial.println("[DEVIALET>SOURCE=--]");
       break;

          case 0xFD609F: //NEXT-KNAPP
       //   lastCode = results.value;     // registrer koden for gjentakelse
       // mySerial.print("[DEVIALET>SOURCE=++]");
       Serial.println("[DEVIALET>SOURCE=++]");
       break;

          case 0xFDA05F: //PLAY/PAUSE
       //   lastCode = results.value;     // registrer koden for gjentakelse
       // mySerial.print("[DEVIALET>MUTE=!]");
       Serial.println("[DEVIALET>MUTE=!]");
       delay(200);
       break;

          case 0xFD30CF: //0-knapp
       //   lastCode = results.value;     // registrer koden for gjentakelse
       // mySerial.print("[DEVIALET>SOURCE=USB]");
       Serial.println("[DEVIALET>SOURCE=USB]");
       break;

          case 0xFD08F7: //1-knapp
       //   lastCode = results.value;     // registrer koden for gjentakelse
       // mySerial.print("[DEVIALET>SOURCE=Optical1]");
       Serial.println("[DEVIALET>SOURCE=Opt 1]");
       delay(200);
       Serial.println("[DEVIALET>SOURCE=Optical1]");
       break;

          case 0xFD8877: //2-knapp
       //   lastCode = results.value;     // registrer koden for gjentakelse
       // mySerial.print("[DEVIALET>SOURCE=Opt 2]");
       Serial.println("[DEVIALET>SOURCE=Optical 2]");
       break;

          case 0xFD48B7: //3-knapp
       //   lastCode = results.value;     // registrer koden for gjentakelse
       // mySerial.print("[DEVIALET>SOURCE=Line 1]");
       Serial.println("[DEVIALET>SOURCE=Line 1]");
       break;

          case 0xFD28D7: //4-knapp
       //   lastCode = results.value;     // registrer koden for gjentakelse
       // mySerial.print("[DEVIALET>SOURCE=Line 2]");
       Serial.println("[DEVIALET>SOURCE=Line 2]");
       break;

          case 0xFD50AF: //OPP-knapp
       //   lastCode = results.value;     // registrer koden for gjentakelse
       // mySerial.print("[DEVIALET>SAM=1]");
       Serial.println("[DEVIALET>SAM=1]");
       break;

          case 0xFD10EF: //NED-knapp
       //   lastCode = results.value;     // registrer koden for gjentakelse
       // Turn on LED for 20Ms
       // digitalWrite(redPin, LOW);
       // delay(200);
       // digitalWrite(redPin, HIGH);
       // mySerial.print("[DEVIALET>SAM=0]");
       Serial.println("[DEVIALET>SAM=0]");
       break;

   }
   irrecv.resume(); 
 }
   

}
1 Like