Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: deli06 - 13 Ekim 2016, 11:22:43

Başlık: Loop ta Yazılan kodun istendiği gibi çalışmaması
Gönderen: deli06 - 13 Ekim 2016, 11:22:43
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;
    }
}
Başlık: Ynt: Loop ta Yazılan kodun istendiği gibi çalışmaması
Gönderen: Cemre. - 13 Ekim 2016, 14:03:10
Geç mi tepki alıyorsunuz? Sorun nedir? Hiç mi değişiklik yok?
Başlık: Ynt: Loop ta Yazılan kodun istendiği gibi çalışmaması
Gönderen: deli06 - 13 Ekim 2016, 15:24:27
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.