Merhaba arkadaşlar. Arduino Dersleri serisinde temel olarak kodları anlattık. Bu seri ile bu kodları kullanmayı pekiştirmeyi hedefliyoruz. Bu yazımda bir butona birden fazla fonksiyon nasıl verebiliriz bunu konuşacağız. Butona basıldıkça sırayla farklı işler yaptıracağız.
Matematik dersinden çoğunuz modüler aritmetiği biliyordur. Kısaca bilmeyenler için anlatayım. Herhangi bir sayının bizim belirlediğimiz sayıya bölümünden kalanı bulma işlemine modüler aritmetik diyoruz. Butona farklı işleri modüler aritmetik sayesinde yapacağız. Herhangi bir sayıyı belirlediğimiz bir sayıya böldüğümüzde kalan kesinlikle bölen sayıdan küçüktür. Örneğin bir sayıyı üçe bölersek kalan her zaman en fazla 2 olabilir. Bu bilgiyi kullanarak kodumuzu yazacağız.
Modüler aritmetik kodu daha önce derslerimizde anlatılmıştır. İlk defa bu yazıyı okuyanlar için tekrar yazayım. x = a % b ; kodu bize a sayısının b ye bölümünden kalan rakamı x değişkenine yazdır demektedir. Ayrıca kullanacağımız x++ kodu da x in değerini 1 artır anlamı taşımaktadır.
Örnek olarak 4 farklı fonksiyonu olan bir buton yapalım. Her bastığımızda farklı bir led yaksın. İlk önce bir değişken tanımlarız ve butona her bastığımızda bu değişkenin 1 sayı artmasını isteriz. Daha sonra değişkenimize modüler aritmetikle 4 e bölümünden kalanları bulup değişkenimize tekrar yazdırmasını isteriz. Böylece butona her bastığımızda değişkenimiz sırayla 0,1,2,3 değerlerini alır. Daha sonra if komutuyla eğer değişken 0 ise bunu, 1 ise, şunu vb. diyerek butona farklı fonksiyonlar vermiş oluruz. Aşağıya sırayla 4 led yaktığım kod bıraktım. İnceleyerek daha iyi anlayabilirsiniz.
int x; // Kalanları kaydettiğimiz değişkeni tanımladık.
void setup() {
pinMode(2,INPUT); // Butonu bağladığımız pini tanımladık.
pinMode(3,OUTPUT); // 1.ledi bağladığımız pini tanımladık.
pinMode(4,OUTPUT); // 1.ledi bağladığımız pini tanımladık.
pinMode(5,OUTPUT); // 1.ledi bağladığımız pini tanımladık.
pinMode(6,OUTPUT); // 1.ledi bağladığımız pini tanımladık.
Serial.begin(9600); // Değişkenimizin durumuna bakmak için serial monitör başlattık.
}
void loop() {
if(digitalRead(2)== HIGH){x++;} // Butona basıldığında x değerini 1 artır.
x = x % 4; // x değerinin 4 e bölümünden kalanı bulup tekrar x değişkenine yazdırır.
if(x == 0){digitalWrite(3,HIGH);} // x değişkeni 0 olunda 1. ledi yakar.
if(x == 1){digitalWrite(4,HIGH);} // x değişkeni 1 olunda 2. ledi yakar.
if(x == 2){digitalWrite(5,HIGH);} // x değişkeni 2 olunda 3. ledi yakar.
if(x == 3){digitalWrite(6,HIGH);} // x değişkeni 3 olunda 4. ledi yakar.
Serial.println(x); // x değerlerini serial monitöre yazdır.
}
Led yakmak yerine butona farklı fonksiyonlar atayarak kullanabilirsiniz. Yazılarımı beğendiyseniz, eklemek veya çıkarmak istedikleriniz varsa yorum veya iletişim bölümünden bize ulaşabilirsiniz...
COMMENTS