Uzun süreden sonra Arduino derslerimize tekrar devam ediyoruz. Bu uygulamada switch case komutuna giriş yapacağız. Switch case komutunu kullanarak bir buton yardımıyla sırayla beş LED'i yakacağız. Beş LED yandıktan sonra tekrar butona bastığımızda bütün LED'leri söndüreceğiz. LED'ler söndükten sonra istersek yine LED'leri sırasıyla yakabileceğiz. Bu programı switch case komutuyla yapmamız kod karmaşasını azaltıp daha basit bir kod yazmamızı sağlayacak. Şimdi devre şemasını hazırlayıp kodu yazmaya başlayalım.
İlk olarak kullanacağımız malzemelerin listesini yazalım.
Malzemeleri temin ettikten sonra breadboard çizimine bakarak devreyi kendi breadboardumuza kuruyoruz. Kurulumdan sonra breadboardumuzda şöyle bir görüntü elde edeceğiz.
Kurulum bittiğine göre şimdi kodu yazmaya başlayabiliriz.
Kodumuzu derleyicide yazıp kartımıza yükledikten sonra devremiz çalışabilir duruma geliyor. Devrenin çalışma şeklini linkleki gif yardımıyla görebilirsiniz :http://www.gfycat.com/UnrulyAgitatedCoqui
NOT: Switch case komutunu kullanırken break komutunu kullanmamızın sebebi Switch case komutunda ilk sağlanan değişkenden sonraki fonksiyonların yapılmasını engellemekti.
İlk olarak kullanacağımız malzemelerin listesini yazalım.
- 1 adet Arduino (Ben bu uygulamada UNO modelini kullandım.)
- 5 adet 330Ω direnç
- 1 adet 10kΩ direnç
- 5 adet LED
- 1 adet buton
- Yeterli sayıda kablo
Malzemeleri temin ettikten sonra breadboard çizimine bakarak devreyi kendi breadboardumuza kuruyoruz. Kurulumdan sonra breadboardumuzda şöyle bir görüntü elde edeceğiz.
Kurulum bittiğine göre şimdi kodu yazmaya başlayabiliriz.
Kod:
int buton1 = 8; //pinleri ayarladık.
int L1 = 9; //pinleri ayarladık.
int L2 = 10; //pinleri ayarladık.
int L3 = 11; //pinleri ayarladık.
int L4 = 12; //pinleri ayarladık.
int L5 = 13; //pinleri ayarladık.
int buton1kontrol; //buton1kontrol adlı bir değişken atadık.
int sayma; //sayma adlı bir değişken atadık. Bu değişken butona basma sayımızı hafızasında tutacaktır.
void setup() {
pinMode(buton1, INPUT); //buton1'i giriş olarak tanımladık
pinMode(L1, OUTPUT); //L1'i çıkış olarak tanımladık
pinMode(L2, OUTPUT); //L2'i çıkış olarak tanımladık
pinMode(L3, OUTPUT); //L3'i çıkış olarak tanımladık
pinMode(L4, OUTPUT); //L4'i çıkış olarak tanımladık
pinMode(L5, OUTPUT); //L5'i çıkış olarak tanımladık
}
void loop() {
buton1kontrol = 0; //buton1kontrol değişkenini 0'a eşitledik.
delay(500);
buton1kontrol = digitalRead(buton1); //dijital olarak okuduğumuz buton1 değerini buton1kontrol değişkenine atadık.
if(buton1kontrol == HIGH) {
sayma=sayma+1; //eğer butona basılıysa sayma değişmenini 1 arttırdık.
}
switch(sayma)
{
case 1: digitalWrite(L1, HIGH); //sayma değerimiz bir ise 1.LED yakılacak.
break; //kodun devam etmemesi için break koyduk.
case 2: digitalWrite(L2, HIGH); //sayma değerimiz iki ise 2.LED yakılacak.
break; //kodun devam etmemesi için break koyduk.
case 3: digitalWrite(L3, HIGH); //sayma değerimiz üç ise 3.LED yakılacak.
break; //kodun devam etmemesi için break koyduk.
case 4: digitalWrite(L4, HIGH); //sayma değerimiz dört ise 4.LED yakılacak.
break; //kodun devam etmemesi için break koyduk.
case 5: digitalWrite(L5, HIGH); //sayma değerimiz beş ise 5.LED yakılacak.
break;
}
if (sayma>5) //sayma değişkeninin 5'ten büyük olup olmadığını kontrol ettik. Eğer büyükse sayma değerini sıfırladık ve LED'leri söndürdük.
{
sayma=0;
digitalWrite(L1, LOW); //1.LED'i söndürdük.
digitalWrite(L2, LOW); //2.LED'i söndürdük.
digitalWrite(L3, LOW); //3.LED'i söndürdük.
digitalWrite(L4, LOW); //4.LED'i söndürdük.
digitalWrite(L5, LOW); //5.LED'i söndürdük.
}
}
Kodumuzu derleyicide yazıp kartımıza yükledikten sonra devremiz çalışabilir duruma geliyor. Devrenin çalışma şeklini linkleki gif yardımıyla görebilirsiniz :http://www.gfycat.com/UnrulyAgitatedCoqui
NOT: Switch case komutunu kullanırken break komutunu kullanmamızın sebebi Switch case komutunda ilk sağlanan değişkenden sonraki fonksiyonların yapılmasını engellemekti.