Loop ta Yazılan kodun istendiği gibi çalışmaması

Başlatan deli06, 13 Ekim 2016, 11:22:43

deli06

Arkadaşlar sorunum buttonlara basıldığında hangi butona basıldıysa görevini yapmaması.
bu kodu arduino mega+keypadsheeld'ta deniyorum .İşin içinden çıkamadım.Mikroişlemcilerde yeniyim.Yardım ederseniz sevinirim.
#include <LiquidCrystal.h>
#include <virtuabotixRTC.h>  
// Keypad bu pinlerde
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
 virtuabotixRTC myRTC(3,11,12);
//States for the menu.
int currentMenuItem = 0;
int lastState = 0;

void printTime() {

  myRTC.updateTime();                                                                                    //| 
                                                                                                         //| 
  // Set the cursor at the begining of the second row
  lcd.setCursor(0,1);
  char time[17];
  sprintf(time, "%02i days %02i:%02i:%02i", myRTC.dayofmonth,myRTC.hours,myRTC.minutes, myRTC.seconds);
  lcd.print(time);
} 





void setup() {
   //Set the characters and column numbers.
   lcd.begin(16, 2);
   //Print default title.
   clearPrintTitle();
}


 
void loop() {
  //Call the main menu.
  printTime();
  mainMenu();
  
}
 
void mainMenu() {
  //State = 0 every loop cycle.
  int state = 0;
  //Refresh the button pressed.
  int x = analogRead (0);
  //Set the Row 0, Col 0 position.
  lcd.setCursor(0,0);
// printTime();
  // LCD Keypad Shield analog verileri cek ediyor
  if (x < 100) {
    //Right
  } else if (x < 200) {
   //Up
    state = 1;
  } else if (x < 400){
   //Down
    state = 2;
  } else if (x < 600){
    //Left
  } else if (x < 800){
    //Select
    state = 3;
  }
 
  //If we are out of bounds on th menu then reset it.
  if (currentMenuItem < 0 || currentMenuItem > 4) {
   currentMenuItem = 0; 
  }
 
   //If we have changed Index, saves re-draws.
   if (state != lastState) {
      if (state == 1) {
         //If Up
          currentMenuItem = currentMenuItem - 1; 
          displayMenu(currentMenuItem);
      } else if (state == 2) {
         //If Down
          currentMenuItem = currentMenuItem + 1;  
          displayMenu(currentMenuItem);
      } else if (state == 3) {
         //If Selected
         selectMenu(currentMenuItem); 
      }
      
      lastState = state;
   } 
  
  delay(5);
}
 
//Seçenek ekranlarını yazıyoruz.
void displayMenu(int x) {
     switch (x) {
      case 1:
        clearPrintTitle();
        lcd.print ("1. SECENEK");
        //lcd.clear();
         break;
      case 2:
        clearPrintTitle();
        lcd.print ("2. SECENEK");
        break;
       case 3:
        clearPrintTitle();
        lcd.print ("3. SECENEK");
        break;
      case 4:
        clearPrintTitle();
        lcd.print ("4.SECENEK");
        break;
    }
}
 
//Üst bilgimizi yazdırıyoruz. 
void clearPrintTitle() {
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("SAAT TARİH");
  lcd.setCursor(0,1); 
}
 
//Seçim Ekranımız Gösteriyoruz..
void selectMenu(int x) {
   switch (x) {
      case 1:
        clearPrintTitle();
        lcd.print ("1. SECENEK SECILDI");
         lcd.setCursor(0,0);
         printTime();
          ///lcd.print("Menu başı     "); 
         //1. Seçeneğimizi hafızaya alıyoruz
        break;
      case 2:
        clearPrintTitle();
        lcd.print ("2. SECENEK SECILDI");
         //2. Seçeneğimizi hafızaya alıyoruz
        break;
       case 3:
        clearPrintTitle();
        lcd.print ("3. SECENEK SECILDI");
         //3. Seçeneğimizi hafızaya alıyoruz
        break;
      case 4:
        clearPrintTitle();
        lcd.print ("4. SECENEK SECILDI");
        //4. Seçeneğimizi hafızaya alıyoruz
        break;
    }
}

Cemre.

Geç mi tepki alıyorsunuz? Sorun nedir? Hiç mi değişiklik yok?

deli06

Hocam sorun kod çalışıyor ekran milisaniyelerle göz kırpıp hiç bir değişiklik olmuyor.kodda mı sorun var yoksa ben mi Windows ve dos takı gibi sanıyorum anlamadım.cemre hocam  lütfen koda özellikle loop a bakamisiniz .printtime fonksiyonunu kaldırınca sorunsuz calisiyor düğmeler.