Arduino Kodlama Anlatım; Yeni bir programlama dili öğrendiğimizde ilk başta nasıl “Merhaba Dünya” yazıyorsak, Arduino programlamanın da giriş uygulaması LED (lamba) yakıp söndürmektir. Daha önce LED’in ne olduğundan bahsetmiştik. Şimdi de LED’in nasıl kullanıldığından bahsedelim. LED bilindiği gibi bir çeşit diyottur, akım sadece bir yönde akmaktadır. Bu yüzden LED’in devreye bağlanma yönü önemlidir.

LED’in yönünü iki şekilde anlayabiliriz. İlk yöntemimiz LED’in ayak uzunluklarıdır. LED’in iki ayağından uzun olanı + (anot), kısa olan – (katot) ucunu göstermektedir. Böylece Arduino’dan gelen kabloyu LED’in uzun ayağına, kısa ayağını da toprağa (GND) bağlayacağız. Bu yöntem ile anot ve katot uçlarını ayırmak kolay olsa da güvenilir değildir. Eğer LED daha önce kullanılmış ise ayak uzunlukları değiştirilmiş olabilir.

Diğer ve daha güvenilir olan ikinci yöntemle LED’in anot ve katot uçlarını daha kolay anlayabiliriz. LED’in içine bakıldığında, arası açık bir köprü görülür. Bu köprünün kısa yolu + (anot), uzun yolu ise – (katot) ucu göstermektedir.

LED’in bağlantısının nasıl yapılacağını öğrendik. Fakat LED’i devreye doğrudan bağlama pek önerilen bir yöntem değildir. LED’in bağlı olduğu hatta akımı azaltmak için direnç bağlanmalıdır. Genellikle 220 veya 330 ohm değerinde direnç bağlanır. Bu değerlerden daha büyük bir direnç hatta bağlanırsa, LED’in parlaklığı azalır.

Bu uygulamayı yapmak için ihtiyacınız olan malzemeler:

  • 1 x Arduino
  • 1 x LED (rengi farketmez)
  • 1 x 220 ohm direnç (220 ile 10k arasında bir direnç de olur)
  • 1 x Breadboard

Resimde görüldüğü gibi devrenizi kurunuz. Arduino’nun 7 numaralı pininden bir kablo yardımıyla çıkış alıp Breadboard üzerindeki dirence bağlayınız. Daha sonra direncin diğer ucunu LED’in + ucuna bağlayın. LED’in diğer ucunu ise Arduino’nun toprağına bağlayın. Aynı hat üzerindeki akım her yerde aynı olduğu için direncin LED’den önce veya sonra bağlanması önemli değildir.

Arduino kodunu yazmaya başlayalım. Amacımız 1 saniye boyunca yanan ve sonra 1 saniye boyunca sönük kalan LED yapmaktır. Bunun için setup fonksiyonu içerisinde LED’in bağlı olduğu Arduino’nun 7. pinini çıkış olarak ayarlayacağız. Daha sonra loop fonksiyonu içerisine 1 saniye aralıklı LED yakma ve söndürme kodunu yazacağız. Loop fonksiyonu sürekli döngü halinde olduğu için bir kere LED yakma ve söndürme kodunu yazmamız yeterli olacaktır. 1 saniyelik bekleme için delay fonksiyonu kullanılmıştır.

void setup()
{
  pinMode(7, OUTPUT); /* 7 numaralı pini çıkış yaptık */
}

void loop()
{
  digitalWrite(7,HIGH); /* 7 numaralı pine enerji verildi */
  delay(1000); /* 1000 milisaniye = 1 saniye bekleme */
  digitalWrite(7,LOW); /* 7 numaralı pindeki enerji kesildi */
  delay(1000); /* 1 saniye bekleme */
}

Böylece Arduino’da yapılabilecek en temel işlerinden biri olan LED yakıp söndürmeyi öğrendik. Burada kullanılan fonksiyonlar çoğu projede de kullanılır. Örneğin LED yerine çıkış veren başka bir elektronik eleman (örn: buzzer) konulduğunda, aynı Arduino programı ile o eleman da çalışabilir. Kapsamlı projelerde LED genellikle Arduino’nun durumunu göstermek için kullanılır. Örneğin Arduino bir işlem yaparken kırmızı ışık yanık tutulursa, Arduino’nun o sürede meşgul olduğu kullanıcı tarafından anlaşılabilir. Aşağıdaki uygulama ile öğrendiklerimizi pekiştirelim:

Arduino ile LED nasıl yakılıp söndürüldüğünü öğrendiğimize göre, artık biraz daha karmaşık bir uygulama yapabiliriz. Bu uygulamamızda kara şimşek yani sırayla yanıp sönen LED’ler yapacağız. LED bağlantılarını resimdeki gibi yapabilirsiniz. Her LED’in bağlantısına ayrı ayrı 220 Ohm’luk dirençler koymayı unutmayın. LED’lerin Breadboard’a eşit uzaklıklarda takılması, projenin daha güzel görünmesini sağlayacaktır.

Bu uygulamayı yapmak için ihtiyacınız olan malzemeler:

  • 1 x Arduino
  • 8 x LED
  • 8 x 220 Ohm Direnç
  • 1 x Breadboard

Kara şimşek programı iki şekilde yazılabilir. Birinci yöntemde her LED için ayrı bir değişken tanımlanmış olup, bütün LED’ler tek tek kontrol edilir. Bu yöntem kod kalabalığı yarattığı için pek tercih edilmemektedir. Bu yüzden projeyi daha profesyonelce olan ikinci yöntem ile yazacağız.

İkinci yöntem için, LED’leri 2’den 9’a pinlere sırası ile takalım. Bu pinleri bir diziye kaydederek LED’leri daha kolay kontrol edeceğiz. Dizi kullanılmasının nedeni, program içerisinde for döngüsünün kullanılacak olmasıdır. Her bir for döngüsünde bir sonraki LED’e kolayca geçiş yapılabilir.

Not: LED geçişlerinin daha yumuşak olması için her LED’in artı ve eksi pinlerine kondansatör konulabilir.

const int LEDdizisi[] = {2,3,4,5,6,7,8,9};

void setup () {     
 
  for(int i=0; i<8 ;i++)    
  { /* For dongusuyle LEDdizisi elemanlarina ulasiyoruz */
    pinMode(LEDdizisi[i], OUTPUT); /* LED pinleri cikis olarak ayarlandi */
  }

}

void loop() {                                                
  for(int i=0; i<8; i++){ /* Tum LEDleri sirayla 50 milisaniye yakip sonduruyoruz */
    digitalWrite(LEDdizisi[i],HIGH);      
    delay(50);                           
    digitalWrite(LEDdizisi[i],LOW);         
  }
 
  for(int j=7;j>-1; j--)
  { /* LEDleri geri yonde 50 milisaniye yakip sonduruyoruz */
    digitalWrite(LEDdizisi[j],HIGH);     
    delay(50);
    digitalWrite(LEDdizisi[j], LOW);
  }
}

Kullanıcıyla etkileşim halinde olan birçok projede düğme kullanılmaktadır. Düğme, arasında az bir boşluk bulunan iki tel gibi düşünülebilir. Kullanıcı düğmeye bastığında bu boşluk kapanır ve düğme iletken duruma geçer, üzerinden akım akar. Kullanıcı düğmedan elini çektiğinde devrenin eski konumuna dönmesi için, pull up ve pull down denilen direnç bağlantıları kullanılır. Pull up ve pull down direnç ismi değil, dirençlerin bağlanma şeklidir. Genellikle 10K ohm direnç kullanılır.

Pull Down Direnç: Düğmeye basıldığında gerilim kaynağıyla Arduino’nun girişi kısa devre olur. Elinizi düğmeden çektiğinizde hat üzerinde hâlâ enerji kalır. Bu enerji düğmeye basılmadığı durumunda bile Arduino’nun düğmeye basılmış gibi davranmasına neden olur. Bu enerjinin yok edilmesi için hat genellikle 10K ohm’luk bir direnç ile toprağa bağlanır. Bu dirence pull down direnç denir.

Pull Up Direnç: Düğmeye basılmadığı durumlarda Arduino’nun giriş pini 5 volt düzeyindedir. Düğmeye basıldığında akım, Arduino’nun giriş pini yerine doğrudan toprağa ulaşmaktadır. Böylece pull-down direnç sistemini tam tersi çalışmaktadır. Arduino düğmeye basıldığında 0, düğmeye basılmadığında 1 değerini görmektedir. Pull-up direnci kullanma amacımız ise, düğmeye basıldığında toprak ve besleme hattının direkt olarak kısa devre olmasını engellemektir. Pull-down dirençte olduğu gibi pull-up dirençlerde genellikle 10K ohm olur.

Düğmelerin Arduino’ya nasıl bağlanacağını öğrendik. Resimde breadboard (Eskiden elektronikçiler buna gofret derlerdi) üzerine düğme ve LED devresi kurulmuştur. Siz de resimdeki devreyi kurabilirsiniz.

Bu uygulamayı yapmak için ihtiyacınız olan malzemeler:

1 x Arduino
1 x düğme
1 x 10K ohm direnç
1 x LED
1 x 220 ohm direnç
1 x breadboard (gofret)

Bu devredeki düğmenin amacı LED’i kontrol etmek olacaktır. Kullanıcı düğmeye bastığında LED yanıyorsa sönecek, sönük ise de yanacaktır. Burada bilmemiz gereken bir diğer nokta ARK olaylarıdır. Düğmeye basıldığı anda oluşan atlamalardan dolayı Arduino çok kısa zamanda yüzlerce kere düğmeye basıldığını sanmaktadır. Bu istenmeyen durumdan kurtulmak için basıldığı anda Arduino’yu biraz bekleteceğiz (delay fonksiyonu ile). Böylece devremiz, düğmeye basıldığında oluşan istenmeyen dalgalanmalardan korunmuş olacaktır. Delay fonksiyonuna yazılan bekleme zamanı insanın fark edemeyeceği kadar kısa bir süredir.

Düğmeye her basıldığında yeni bir işlem yapılmasını istiyoruz. Bunu sağlamak için düğmeye basıldığında yapılması gereken işlem yapıldıktan sonra, kişinin düğmeden elini çekmesi beklenmelidir. Eğer bunu yapmazsak kişi, düğmeye bastığında LED’i sürekli yanıp sönecektir. Bu işlem o kadar hızlı olacaktır ki insan gözü bunu algılayamaz.

Düğmenin durumu digitalRead fonksiyonu ile kontrol edilecektir. Okunan düğme değeri ‘dugmeDurumu’ değişkenine yüklenecektir. Eğer düğmeye basılmışsa LED’in durumunu değiştireceğiz. LED’in düğmeye her basıldığında konumunun değişmesi için, LED durumu bir değişkene atanır ve LED’in eski durumuna göre LED farklı konuma getirilir.

const int Dugme = 6; /* düğmenin bağlı olduğu pin */
const int LED =  5; /* LEDin bağlı olduğu pin */

int dugmeDurumu = 0; /* düğmenin durumu */  
int LEDDurumu = 0; /* birinci yöntem için LED durumu */

void setup() {
  pinMode(LED, OUTPUT); /* LED pini çıkış olarak ayarlandı */
  pinMode(Dugme, INPUT); /* düğme pini giriş olarak ayarlandı */
}

void loop(){
  dugmeDurumu = digitalRead(Dugme); /* düğmenin durumu okundu ve değişkene aktarıldı */
  if(dugmeDurumu == HIGH) { /* düğmeye basılmış ise */    
    delay(10); /* dalgalanmalar için biraz bekleyelim */
    if(LEDDurumu == 0){ /* LED yanmıyorsa */
      digitalWrite(LED, HIGH); /* LEDi yak */
      LEDDurumu = 1;
    }else { /* LED yanıyorsa */
      digitalWrite(LED, LOW); /* LEDi sondur */
      LEDDurumu = 0;  
    }
        
    while(dugmeDurumu == HIGH){ /* düğmeye basili olduğu surece bekle */
      dugmeDurumu = digitalRead(Dugme); /* düğmenin durumunu kontrol et */
    }
    delay(10); /* dalgalanmalar için biraz bekleyelim */
  } 
}

iz atölye iletişim

Eğitim kurumlarına özgü atölye çözümleri için uzman ekibimizle iletişime geçin. Atölyelere özel mobilya ve donanım çözümlerinin yanı sıra öğrenci ve eğitmen eğitimleri içinde bizlere ulaşabilirsiniz.
İZ ATÖLYE " iz bırakan eğitim çözümleri "
Telefon: 0545 834 9353
Mail : bilgi@izatolye.com

neden biz

İz Atölye eğitim kurumlarının ihtiyaç ve talepleri doğrultusunda atölye çalışmaları yapmakta ve atölyeler için sarf malzeme temin imkanı sağlamaktadır. Böylelikle çocukların eğitimlerinin önemli bir yanını teşkil etmesi gereken el ve zihin koordinasyonu tam, eksiksiz sağlanmaktadır. Çocukları artık sadece oyuncaklara ya da bilgisayara veya televizyonun karşısına hapsetmek doğru değil. Motor becerilerini geliştirmek, hayal güçlerini kullanmalarını diğer çocuklarla ekip çalışmasını öğretmek için farklı atölye çalışmaları çok faydalı. Atölye çalışmaları sırasında çocukların hayal gücü desteklendiği gibi konsantrasyonlarına da büyük katkı sağlıyor. Ayrıca ince motor becerilerinin gelişmesine, farklı malzemelerle tanışmak, malzemeleri düzenli ve özenli kullanmayı öğrenmeye kadar pek çok farklı katkı sağlıyor. Çocukların, kendi yaş grupları ile yaptıkları çalışmalar hem sosyalleşmelerini sağlıyor hem biriyle yardımlaşmayı öğrenirken ayrıca bir şey üretmenin keyfine de varıyorlar.

atölye çalışmalarının önemi

Atölye Eğitimi, bütünleşik bir yapı içerisinde fen bilimleri, teknoloji, mühendislik ve matematik alanlarını birleştirerek; gençlerin analitik düşünmelerini, farklı öğrenme grupları ile etkileşimler kurmalarını, takım çalışması becerisi kazanmalarını, bildiklerini güncel olaylar ile ilişkilendirmelerini ve ürünlerini girişimci bir ruhla sunmalarını sağlar. Öğrencilerin keşfederek ve uygulayarak öğrenmelerini hedefleyen Atölye Eğitimi ile fen bilimleri, teknoloji, mühendislik ve matematik becerilerini öğrencilere kazandırmak ve düşündüğünü hayata geçirebilen, yenilikçi, yaratıcı bireyler yetiştirmek amaçlanır.
Atölye Eğitimi Neden Önemli;
  • Öğrencileri motive edebilir. Çünkü gerçek hayattan örneklere de uygulanabilir.
  • Çocuklar neden sonuç ilişkisi kurmaya başlarlar.
  • Öğrenciler daha derin, daha detaylı düşünebilirler.
  • Öğrencilerin bireysel çalışma ve takım çalışması becerilerini geliştirir.
  • Atölye Eğitim, ezberci değil sorgulayıcıdır.
  • İletişim becerileri en üst seviyelere çıkabilir.
  • Öğrenciler eleştirel düşünmeyi öğrenirler.
  • Hata yapmanın aslında ne kadar değerli olduklarını görür öğrenciler.
  • Hatalarından ders çıkarıp tecrübeler edinirler.

Bir cevap yazın