SparkFun Forums 

Where electronics enthusiasts find answers.

For the discussion of Arduino related topics.
By Swish
#193480
Hy ! :)

This is my first post about arduino, so hello everyone !

I'm trying to display the string of the buttons of my IR remote.
When I push "POWER" for exemple it shows "POWER" (on the arduino serial monitor),SO it's working.

But, I want to shows the string only when I decide.

SO I wrote that it only shows the values when I enter "g".

BUT It keep the value of the first button I pressed. Let's imagine I press first "POWER" but i don't want to display it, so I repressed another button like "PAUSE" and I enter "g". The problem is that in this case , it won't show "PAUSE" but "POWER".

How can program in order to continually receiving the latest value of the button ? SO If press 10 buttons and I enter "g" after the 10th, it shows the value of the 10th buttton.(And not the first)

If press on "POWER" then on "PAUSE" and if I enter "g", it shows "POWER". But I want to show the last button that I have pressed, so "PAUSE".
Code: Select all
#include "IRremote.h"

char userInput;

int receiver = 11; // Signal Pin of IR receiver to Arduino Digital Pin 11

/*-----( 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("0");    break;
  case 0xFF30CF: Serial.println("1");    break;
  case 0xFF18E7: Serial.println("2");    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 ");break;  

  default: 
    Serial.println(" other button   ");

  }// End Case

  delay(500); // Do not get immediate repeat


} //END translateIR
void setup()
{
  Serial.begin(9600);
  Serial.println("IR Receiver Button Decode"); 
  irrecv.enableIRIn(); // Start the receiver

}/*--(end setup )---*/


void loop()
{
  if (irrecv.decode(&results)) // have we received an IR signal?
  {
    if(Serial.available()> 0)
    {
      userInput=Serial.read();
      if(userInput == 'g')
        {
          translateIR(); 
          irrecv.resume();// receive the next value
        }
    } 
   }  
}
And I don't want to press the button after that I have enter "g", I want my last value recorded, and when I enter "g" it shows the value.

Thanks a lot, I hope that someone will replie :)