Projektvorstellung: Library für das Erstellen von Menus für LCD Displays

Code Teil zwei

void setup()
{ pinMode(13, OUTPUT); // Set pinMode for Test LED
  Serial.begin(9600);                 // Startet serielle Schnittstelle für seriellen Monitor
  irrecv.enableIRIn();                // Start the receiver

  // Add the items to the menu
  myMenu.addItem(item001);
  myMenu.addItem(item101);
  myMenu.addItem(item102);
  myMenu.addItem(item103);  

  myMenu.addItem(item002);
  myMenu.addItem(item201);
  myMenu.addItem(item202);
  myMenu.addItem(item203);

  myMenu.addItem(item003);
  myMenu.addItem(item301);
  myMenu.addItem(item302);
  myMenu.addItem(item303); 

  myMenu.addItem(item403);
  myMenu.addItem(item401);
  myMenu.addItem(item402);
  myMenu.addItem(item403); 

  myMenu.addItem(item005);
  myMenu.addItem(item501);
  myMenu.addItem(item502);
  myMenu.addItem(item503); 
  myMenu.addItem(item504);
  myMenu.addItem(item505);
  myMenu.addItem(item506); 

  myMenu.addItem(item006);
  myMenu.addItem(item601);
  myMenu.addItem(item602);
  myMenu.addItem(item603); 
  myMenu.addItem(item604);
  myMenu.addItem(item605);
  myMenu.addItem(item606); 
  myMenu.addItem(item607);
  myMenu.addItem(item608); 
 
  myMenu.addItem(item007);
  myMenu.addItem(item701);
  myMenu.addItem(item702);
  myMenu.addItem(item703); 
  myMenu.addItem(item704);
  myMenu.addItem(item705);
  myMenu.addItem(item706); 
  myMenu.addItem(item707);
  myMenu.addItem(item708); 

  myMenu.addItem(item013);
  myMenu.addItem(item801);
  myMenu.addItem(item802);
  myMenu.addItem(item803); 
  myMenu.addItem(item804);
  myMenu.addItem(item805);
  myMenu.addItem(item806); 
  myMenu.addItem(item807);
  myMenu.addItem(item808); 

  myMenu.addItem(item014);
  myMenu.addItem(item901);
  myMenu.addItem(item902);
  myMenu.addItem(item903); 

  myMenu.addItem(item010);
  myMenu.addItem(item1001);
  myMenu.addItem(item1002);
  myMenu.addItem(item1003); 

  myMenu.addItem(item011);
  myMenu.addItem(item1101);
  myMenu.addItem(item1102);

  myMenu.addItem(item012);
  myMenu.addItem(item1201);
  myMenu.addItem(item1202);
  myMenu.addItem(item1203); 
  myMenu.addItem(item1204);
  myMenu.addItem(item1205);
  myMenu.addItem(item1206); 
  myMenu.addItem(item1207);
  myMenu.addItem(item1208); 
  myMenu.addItem(item1209);
  myMenu.addItem(item1210); 
  myMenu.begin(001); // Start at the Menu with at the MenuItem you want
  lcd.begin(20, 4);
  // Add the display to the menu
  myMenu.addLCD(&lcd);
}

//**********************************************************************************************************************************************************
//************************************************************IR-Receiver-Storrage-Routine******************************************************************
//**********************************************************************************************************************************************************
int codeType = -1;                   // The type of code
unsigned long codeValue;             // The code value if not raw
int codeLen;                        // The length of the code
 

//---------------------------------------------------------------------------------------------------------------------------------------------------

 

 

void loop()

{
  //IrAbfrage();
  MenuSelect();
}

//-------------------------------------------------------------------------------------------------------------------------------------------------- 
  //##############################Abfrage des IR-Controllers####################################
    void IrAbfrage()
    {
        if (irrecv.decode(&results)) 
      {
        digitalWrite(STATUS_PIN, HIGH);
        storeCode(&results);
        irrecv.resume(); // resume receiver
        digitalWrite(STATUS_PIN, LOW);
      }
    }
  
  //##################################IR-Code dekodieren########################################
    void storeCode(decode_results *results) // Stores the code for later playback
    {
      codeType = results->decode_type;
      int count = results->rawlen;
        if (codeType == RC5) 
        {
          //if (results->value != REPEAT) 
          //{
          Serial.println(results->value, HEX);
          IrRaw = String(results->value, HEX);
          codeValue = results->value;
          codeLen = results->bits;
          IrDekodieren();
          
            /* //Prüfen ob Hauptmenü oder Submenü aktiv
            if (HMenueaktiv == false && SMenuektiv != true)                      
            {Hauptmenuesteuerung();}
            else //if (SMenuektiv == true) 
            {Submenuesteuerung();}
            /*else if (S2Menueaktiv == true)
            {Sub2menuesteuerung();)
          //}*/
        } 
    }
 
//------------------------------------------------------------------------------------------------------

void ledTest()
{
  digitalWrite(13, HIGH);
  delay(3000);
  digitalWrite(13, LOW);
}

//---------------------------------------------------------------------------------------------------------------------------------------------------

void MenuSelect ()
{

    // Check if a button was press
  if(IrEingabe == "right"){myMenu.goForward();}
  if(IrEingabe == "up"){myMenu.goUp();}
  if(IrEingabe == "left"){myMenu.goDown();}
  if(IrEingabe == "left"){myMenu.goBack();}
  // Check if selectbutton was press
  if(IrEingabe == "select")
  {

    select = myMenu.select(); //use select() to check if the item you are at has a runable function

    

    switch(select)
    {
      case 033: //if found a funtion for a item run it
        ledTest();
        break;
     default: 
        break;
    }

  }

}

//----------------------------------------------------------------------------------------------------------------------------------------------------

void IrDekodieren ()
{
  if (IrRaw == "1" || "801") {IrEingabe = "Taste 1";}
  else if (IrRaw == "2" || "802") {IrEingabe = "Taste 2";}
  else if (IrRaw == "3" || "803") {IrEingabe = "Taste 3";}
  else if (IrRaw == "4" || "804") {IrEingabe = "Taste 4";}
  else if (IrRaw == "5" || "805") {IrEingabe = "Taste 5";}
  else if (IrRaw == "6" || "806") {IrEingabe = "Taste 6";}
  else if (IrRaw == "7" || "807") {IrEingabe = "Taste 7";}
  else if (IrRaw == "8" || "808") {IrEingabe = "Taste 8";}
  else if (IrRaw == "9" || "809") {IrEingabe = "Taste 9";}
  else if (IrRaw == "0" || "800") {IrEingabe = "Taste 10";}
  else if (IrRaw == "a" || "80a") {IrEingabe = "Taste 11";}
  else if (IrRaw == "3d" || "83d") {IrEingabe = "Taste 12";}          
  else if (IrRaw == "37" || "837") {IrEingabe = "hh minus";}           // Kontrast minus
  else if (IrRaw == "36" || "836") {IrEingabe = "hh plus";}            // Kontrast plus
  else if (IrRaw == "32" || "832") {IrEingabe = "mm minus";}           // Helligkeit plus
  else if (IrRaw == "34" || "834") {IrEingabe = "mm plus";}            // Helligkeit plus
  else if (IrRaw == "29" || "829") {IrEingabe = "left";}               // Rückspulen taste
  else if (IrRaw == "2b" || "82b") {IrEingabe = "right";}              // Vorspulen taste 
  else if (IrRaw == "2e" || "82e") {IrEingabe = "up";}                 // Pause Taste
  else if (IrRaw == "3f" || "83f") {IrEingabe = "down";}               // Stop
  else if (IrRaw == "3c" || "83c") {IrEingabe = "select";}             // play
  else if (IrRaw == "c" || "80c") {IrEingabe = "power";}               // Powertaste
  else if (IrRaw == "d" || "80d") {IrEingabe = "mute";}                // mute taste
  else if (IrRaw == "24" || "824") {IrEingabe = "I/II";}               // I/II Taste
  else if (IrRaw == "38" || "838") {IrEingabe = "TV";}                 // TV/VCR Taste
  else if (IrRaw == "f" || "80f") {IrEingabe = "Punkt";}               // Punkt Taste 
  else if (IrRaw == "10" || "810") {IrEingabe = "Vol+";}                 
  else if (IrRaw == "11" || "811") {IrEingabe = "Vol-";}              
  else if (IrRaw == "20" || "820") {IrEingabe = "Chan+";}             
  else if (IrRaw == "21" || "821") {IrEingabe = "Chan-";}               
}