Arduino ve bir buton yardımıyla 2 LED yönetmek

Bu yazıda 2 çalışmadan bahsedeceğim.

Birincisi daha basit olacak ve ikincisine hazırlık olacaktır. İkincisi ise biraz daha öğretici ve tecrübe kazandırıcı olacaktır.

Birincisinden başlayalım:

Amacımız bir buton yardımıyla 2 LED’i yakıp söndürmektir. Başta sönük olan LED’ler butona bastığımızda beraber yanacaklar ve butona bir daha basıncaya kadar sönmeyecekler. Tekrar bastığımızda ise ikisi birden sönecek ve böylece devam edecek. Şimdi burada neden 2 LED kullanıyoruz diye merak ederseniz aslında farketmez fakat ikinci çalışmada 2 LED kullandığımızdan ötürü devreyi değiştirmemek istedik. Kodlar şu şekildedir.

void setup()
{
 pinMode( 13, OUTPUT);
 pinMode( 12, OUTPUT);
 pinMode( 2, INPUT);
}
int a = 0;
void loop()
{
  int buton = digitalRead(2);
  if( buton == HIGH)
 {
   if(a == 0)
   {
     digitalWrite( 13, HIGH);
     digitalWrite( 12, HIGH);
     while( buton != LOW )
     buton = digitalRead(2);
     a = 1;
   }
   else
   {
     a = 0;
     digitalWrite( 12, LOW);
     digitalWrite( 13, LOW);
     while( buton != LOW )
      buton = digitalRead(2);
   }
  }
}


İkinci çalışmadaki amacımız ise biraz daha ileri düzey olacak. Yine bir buton yardımıyla LED’ler 500ms aralıklarla sırayla yanıp sönecek. İlk başta LED’ler yanmazken butona basıp bıraktığımızda sırayla yanmaya başlayacaklar ve bu döngü bir sonraki butona basıncaya kadar devam edecek. LED’ler yanmaya devam ederken butona bastığımızda ise döngünün periyodunun herhangi bir anında yanan LED’i söndürebiliyor olacağız ve döngü duracak. LED’ler söndükten sonra tekrar butona bastığımızda ise butona bir önceki bastığımızda hangi LED söndüyse sistem yine o LED’den yanmaya başlayacaktır.

Bu çalışmalarda Arduino Uno kullandık ve C dili ile programlama yaptık.

int sondur( int buton );
void setup()
{
 pinMode( 13, OUTPUT);
 pinMode( 12, OUTPUT);
 pinMode( 2, INPUT);
}
int renk;
void loop()
{
 int buton = digitalRead(2);
 int a = 0;
 if( buton == HIGH )
 for(int i=0;i<2;i++){
 buton = digitalRead(2);
 while( buton != HIGH )
 {
 if( renk != 1 )
 {
 digitalWrite( 13, HIGH );
 a = sondur(buton);
 if( a == 1 )
 {
 renk = 0;
 break;
 }
 digitalWrite( 13, LOW );
 }
 digitalWrite( 12, HIGH );
 a = sondur(buton);
 if( a == 1 )
 {
 renk = 1;
 break;
 }
 digitalWrite( 12, LOW );
 renk = 0;
 }
do{
 buton = digitalRead(2);
 }
 while( buton != LOW );
 }
}
int sondur( int buton )
{
 int a = 0;
 for(int i=0;i<100;i++)
 {
 delay(5);
 buton = digitalRead(2);
 if( buton == HIGH && a == 0 )
 {
 do{
 buton = digitalRead(2);
 }
 while( buton != HIGH );
 digitalWrite( 12, LOW );
 digitalWrite( 13, LOW );
 a = 1;
 break;
 }
 }
 return a;
}

Rate this post

Benzer Yazılar

YAZAR : Ali Celal

- Elektronik Mühendisi - E.Ü. Tıp Fakültesi Kalibrasyon Sorumlusu Test kontrol ve kalibrasyon sorumlu müdürü (Sağ.Bak. ÜTS) - X-Işınlı Görüntüleme Sistemleri Test Kontrol ve Kalibrasyon Uzmanı (Sağ.Bak.) - Usta Öğretici (MEB) - Hatalı veya kaldırılmasını istediğiniz sayfaları diyot.net@gmail.com bildirin

BU YAZIYI DA İNCELEDİNİZ Mİ ?

Engelden Kaçan Robot Devresi

Engelden kaçan robot,diğer adıyla engel algılayan robot, otonom olarak çevre kontrolü yapabilen ve hareketini önleyebilecek …

Bir yanıt yazın