3 butona doğru sırayla basılmadığında kırmızı ledi yakar. Sayac değişkeni herhangi bir butona basıldığında 1 artacaktır. Sayac=3 olunca kırmızı ya da yeşil led yanar ve program başa döner. Her buton kontrolünden sonra delay komutu kullanıldığına dikkat ediniz. Buton arkı söndürme işlemi denen bu olay çok önemlidir. Kulanılmadığında özellikle sayaç olarak kullanılan işlemlerde butona her basışta değerin birer birer artması gerekirken üçer beşer artacaktır. Değişken kullanımını ve if komutunu öğrenmek için iyi bir çalışmadır.
/* 27.11.2014 www.robotkursu.com
3 butona buton2, buton1, buton3 sırasıyla basıldığında
led_dogru isimli ledi yakan,
yanlış sırada basıldığında led_hata isimli ledi yakan
programdır.
if komutunu kavramak için güzel bir çalışmadır.
Öncelikle kendiniz yazmaya çalışmalısınız.
*/
int led_dogru=2; // yeşil lede led_dogru ismini verdik
int led_hata=3;
int buton1=8;
int buton2=9;
int buton3=10;
int a=0;int b=0;int sayac=0;
void setup ()
{
pinMode (led_dogru,OUTPUT);
pinMode (led_hata,OUTPUT);
pinMode (buton1,INPUT);
pinMode (buton2,INPUT);
pinMode (buton3,INPUT);
}
void loop ()
{
digitalWrite(led_hata,0);digitalWrite(led_dogru,0);
if (digitalRead(buton1)==0) { a=0; sayac=sayac+1;}
if (digitalRead(buton2)==0) { a=1; sayac=sayac+1;} // basılan birinci buton doğru
if (digitalRead(buton3)==0) { a=0; sayac=sayac+1;}
delay(150); // bu gecikme komutunu kulanmazsak butona 2-3 kere basılmış gibi algılanacaktır.
if ((a==1)&(digitalRead (buton1)==0))
{ delay(50); b=1; } // basılan 2. buton da doğru
if ((b==1)&(digitalRead (buton3)==0))
{
delay(50); digitalWrite(led_dogru,1);delay(1000); // basılan 3. buton da dogru
a=0;b=0;sayac=0;
}
//———– YANLIŞ HAMLE ——————————-
if ((sayac==3)&(b==0))
{digitalWrite(led_hata,1);delay(500);a=0;b=0; sayac=0; }
}