Arduino Buton Kontrol 2

3 buton ile kontrol. Set, +, -
Ekrandaki 3 farklı değeri ayarlama

I2C LCD, 3 buton ve Arduino Uno kartı kullanılmıştır. Program kodlarında gerekli açıklamalar yapılmıştır. 







ARDUINO IDE KODU:

/***************************************************************
 * Arduino BUTON KONTROL
 * 3 buton ile kontrol
 * set,+,-   (ayar, artır, eksilt)
 * Eylül 2019
 * 
 * Kodla Gitsin
 * https://kodlagitsin.blogspot.com
 * 
 */

#include <LiquidCrystal_I2C.h>              //I2C LCD  kütüphanesini başlatıyoruz
LiquidCrystal_I2C  lcd(0x27,2,1,0,4,5,6,7);

//buton tanımlamaları ve pin atamaları
#define BTN_SET    3 //set(ayar) butonu
#define BTN_UP     4 //yukarı ayar ++1
#define BTN_DOWN   5 //aşağı ayar  --1

int durum=0;         //set butonunun basış sayısını saklar. 1.basış aa, 2.basış bb, 3.basış cc değişkenlerini kontrol etmemizi sağlar
int gecikme1=300;    //delay komutunda kullanacağımz süremiz(ms)
int aa=0;            // lcd'de göstereceğimiz 1.değişkenimiz
int bb=0;            // lcd'de göstereceğimiz 2.değişkenimiz
int cc=0;            // lcd'de göstereceğimiz 3.değişkenimiz

// SETUP
void setup(){
//LCD'yi ayarlıyoruz
lcd.begin(16, 2);
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(HIGH);

//Butonlarımız input_pullup ayarlıyoruz
pinMode(BTN_SET, INPUT_PULLUP);
pinMode(BTN_UP,INPUT_PULLUP);
pinMode(BTN_DOWN,INPUT_PULLUP);

//LCD ekrana başlangıç karakterlerini yazdırıyoruz( /10 onlar basamağını, %10 birler basamağını yazdırır)
lcd.setCursor(0,0);lcd.print(aa/10);lcd.print(aa%10);//1.değişkenimizi (aa) ekrana yazdırıyıruz
lcd.setCursor(4,0);lcd.print(bb/10);lcd.print(bb%10);//2.değişkenimizi (bb) ekrana yazdırıyıruz
lcd.setCursor(8,0);lcd.print(cc/10);lcd.print(cc%10);//3.değişkenimizi (cc) ekrana yazdırıyıruz
}

void loop() //ana döngümüz
{
if(digitalRead(BTN_SET)==LOW)  {durum=durum+1;}  // set butonuna basılırsa...

//aa değişkenini ayarlama...
if (durum==1){lcd.setCursor(0,1);lcd.print("--");lcd.setCursor(4,1);lcd.print("  ");lcd.setCursor(8,1);lcd.print("  ");delay(gecikme1);
if(digitalRead(BTN_UP)==LOW)  { lcd.setCursor(0,0); bir_artir();}  
if(digitalRead(BTN_DOWN)==LOW){ lcd.setCursor(0,0); bir_azalt();}

//bb değişkenini ayarlama...
if (durum==2){lcd.setCursor(0,1);lcd.print("  ");lcd.setCursor(4,1);lcd.print("--");lcd.setCursor(8,1);lcd.print("  ");delay(gecikme1);
if(digitalRead(BTN_UP)==LOW)  { lcd.setCursor(4,0); bir_artir();}  
if(digitalRead(BTN_DOWN)==LOW){ lcd.setCursor(4,0); bir_azalt();}
}

//cc değişkenini ayarlama...
if (durum==3){lcd.setCursor(0,1);lcd.print("  ");lcd.setCursor(4,1);lcd.print("  ");lcd.setCursor(8,1);lcd.print("--");delay(gecikme1);
if(digitalRead(BTN_UP)==LOW) { lcd.setCursor(8,0); bir_artir();}  
if(digitalRead(BTN_DOWN)==LOW){ lcd.setCursor(8,0); bir_azalt();}
}

//set'den çıkıyoruz
if(durum>3) {lcd.setCursor(0,1);lcd.print("i$lem tamam  ");delay(3*gecikme1);lcd.setCursor(0,1);lcd.print("             ");durum=0;}
}

void bir_artir()    //birer birer artırma fonksiyonu
{     
    if (durum==1) {aa++; 
  if(aa>59) aa=0;  lcd.print(aa/10);lcd.print(aa%10);delay(500);
    }
     if (durum==2) {bb++; 
  if(bb>59) bb=0;  lcd.print(bb/10);lcd.print(bb%10);delay(500);
    }
     if (durum==3) {cc++; 
  if(cc>59) cc=0;  lcd.print(cc/10);lcd.print(cc%10);delay(500);
    }
  }
  
void bir_azalt()    //birer birer eksiltme fonksiyonu
{   
   if (durum==1) { aa--;   
  if(aa<0) aa=59; lcd.print(aa/10);lcd.print(aa%10);delay(500);  
   }
    if (durum==2) { bb--;   
  if(bb<0) bb=59; lcd.print(bb/10);lcd.print(bb%10);delay(500);  
   }
    if (durum==3) { cc--;   
  if(cc<0) cc=59; lcd.print(cc/10);lcd.print(cc%10);delay(500);  
   }

   //diğer işlemleriniz...
  }


KULLANILAN PROGRAMLAR: Arduino Ide 1.8.9

Yorumlar