Bu uygulamada Cumhuriyetimizin 100. Yılı’nı kodlarla ifade etmek istedik. Etkinlik iki bölümden oluşacaktır. Birinci bölüm sadece web üzerinden yapılabilecek ve bu uygulamayı yapmak için internet erişimi olan bir bilgisayar veya etkileşimli tahta yeterli olacaktır. İkinci bölüm ise elinde Micro:Bit olanlar için servo motor ile yapılacaktır. Servo motora bir adet Türk Bayrağı takılarak, Micro:Bit’in bu bayrağı sallaması için kodlar yazılacaktır.
Bestesi Sefai ACAY’a ait olan “Cumhuriyet Hürriyet Demek” müziğinin notalarını macecode.microbit.org sitesi üzerinden kodlayacağız. Aynı zamanda Micro:Bit’in ekranında kayan yazı şeklinde “CUMHURİYET 100 YASINDA!” yazısı görünecektir.
Biz müziğin kontrolünün bizde olması için “A” butonu ile müziği başlatacağız, sizler burada başlanğıç kodunu “program başladığında” şeklinde kullanabilirsiniz. Bu durumda program başladığı anda müzik başlayacaktır.
Micro:Bİt’in müzik çalması için Müzik menüsünü kullanacağız. Gerekli olan kod bloğu aşağıda verilmiştir. Ayrıca Simülatöre tıklayarak kodları deneyebilir ve indirebilirsiniz.
Öncelikle ekranda kayan yazı şeklinde “CUMHURİYRT 100 YAŞINDA!” yazdıralım. Bunun için aşağıdaki kodları yazıyoruz.
Ardından “Cumhuriyet Hürriyet Demek” müziğinin notalarını kodlar ile bir araya getiriyoruz.Bunun için aşağıdaki kodları yazıyoruz.
Bu bölümde Micro:Bit’e bir adet servo motor bağlanacaktır. Servo motorun açı değerleri kodlar ile sürekli olarak değiştirilecektir. Böylece Micro:Bit ,motora bağlanan Türk Bayrağı’nı devamlı olarak sallama hareketini gerçekleştirecektir. Bu bölümü simülasyon üzerinde de yapabilirsiniz.
Servo motor sayısı artırılarak, bayrak sayısı artırılabilir.
Başlayalım. Önce Tinkercad sitesine giriş yapın. Bu siteyi 3D tasarımlar içinde kullanabilirsiniz.
Devre tasarımı seçiyoruz ve aşağıdaki malzeme listesini sol taraftaki alana sürüklüyoruz.
Yukarıdaki kodları yazdıktan sonra simülasyonu başlat diyerek aşağıdaki gibi çalışmasını gözlemleyiniz. Eğer yapamazsanız sayfanın altında yapılmış uygulama linki bulunmaktadır
Uygulama Yapılmış Hali: https://www.tinkercad.com/things/gN72P2899sn
]]>Malzeme Listesi
Devremizi hazırlarken Arduino üzerindeki 5V ve GNP pinlerini şemadaki gibi breadboard üzerinde “+” ve “-” pinlerine uygun şekilde bağlayalım. Rölemizin pin giriş kısımlarına sağdan sırayla “-” pin, “+” pin ve dijital pinimizi Arduino üzerinde 2 numaralı pine bağlayalım. Rölenin sol çıkışını(NC) ledimizin “+” ucuna, orta çıkışını da 5V’a bağlıyoruz. Böylece devremizin kurulumunu tamamlamış oluyoruz. Ek bilgi olarak NC yerine NO pini de kullanabilir. Aradaki fark NC (Normally Closed) röle kapalı iken çalışır, NO (Normally Open) röle açık iken çalışır.
Yukarıdaki kodumuz ledimiz arduino üzerinden elektirik beslemesi ile çalışıyor. Aynı kod ile röleyi harici güç kaynağı ile de çalıştırabiliriz. 220v elektrik ile nasıl kullanacağına dair devre şemasını aşağıda bulabilirsiniz. Kod olarak herhangi bir değişiklik yapmayacağız.
]]>Malzeme Listesi
Devremizi hazırlarken Arduino üzerindeki 5V ve GNP pinlerini şemadaki gibi breadboard üzerinde “+” ve “-” pinlerine uygun şekilde bağlayalım. Rölemizin pin giriş kısımlarına sağdan sırayla “-” pin, “+” pin ve dijital pinimizi Arduino üzerinde 2 numaralı pine bağlayalım. Rölenin sol çıkışını(NC) ledimizin “+” ucuna, orta çıkışını da 5V’a bağlıyoruz. Böylece devremizin kurulumunu tamamlamış oluyoruz. Ek bilgi olarak NC yerine NO pini de kullanabilir. Aradaki fark NC (Normally Closed) röle kapalı iken çalışır, NO (Normally Open) röle açık iken çalışır.
void setup() {
pinMode(2,OUTPUT); // Rölenin bağlı olduğu 2 numaralı pini çıkış pini olarak ayarla
}
void loop() {
digitalWrite(2,HIGH); // Röleyi açık konuma getir
delay(2000); // 2 saniye boyunca Led yanar
digitalWrite(2,LOW); // Röleyi kapalı konuma getir
delay(5000); // 5 saniye boyunca Led kapalı kalır.
}
Yukarıdaki kodumuz ledimiz arduino üzerinden elektirik beslemesi ile çalışıyor. Aynı kod ile röleyi harici güç kaynağı ile de çalıştırabiliriz. 220v elektrik ile nasıl kullanacağına dair devre şemasını aşağıda bulabilirsiniz. Kod olarak herhangi bir değişiklik yapmayacağız.
]]>Gerekli malzemeler:
Devremizi bu şekilde kuruyoruz. Devremizde en çok dikkat edeceğimiz kumanda sensörü alıcısını doğru bacaklarına 5v, GND ve Sinyal bağlamak. Bunun için aşağıdaki şekle göre dikkatli bağlayınız yoksa alıcı bozulabilir.
Kodlara geçmeden önce kumanda için ilgili kütüphaneyi aşağıdaki bağlantıdan indirelim.
Not: Çizim programında Chq1838 kızıl ötesi alıcının resmi bulunmadığından başka bir kızıl ötesi alıcısı ile devre şeması çizildi.
İlk olarak kumanda tuş değerlerindeki kodları öğrenmek için aşağıdaki kodları yazıyoruz. Kumanda tuş kodlarını Serial Ekrandan bakıp bir kenara not ediyoruz. Sonrasındaki uygulamamızda hangi tuşla ne yapmak istiyorsak onu kullanmak için kodunu eşitlememiz gerekecek. Bir sonraki led uygulamamızda daha iyi anlaşılacak.
#include <IRremote.h> // Kumanda kütüphanesi ekledik
int RECV_PIN = 2; // Kumanda alıcı pini 2 ye bağladık
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
irrecv.enableIRIn();
Serial.begin(9600);
}
void loop() {
if (irrecv.decode( & results)) {
Serial.println(results.value); // Seri ekranda formatta kumanda tuş kodlarını yazdır.
irrecv.resume(); // Daha sonraki değer için bekle.
}
}
Devremizde kumandadan 1 tuşuna bastığımızda led yanacak, 2 tuşuna bastığımızda ledimiz kapancak. ilgili kodları inceleyelim.
#include <IRremote.h> // Kumanda kütüphanesi ekledik
int RECV_PIN = 2; // Kumanda alıcı pini 2 ye bağladık
IRrecv irrecv(RECV_PIN);
decode_results results;
int led1 = 9;
#define btn1 16724175
#define btn2 16718055
// buton1 = 16724175
// buton2 = 16718055
void setup() {
pinMode(led1, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode( & results)) {
Serial.println(results.value); // Seri ekranda hex formatta bu adresi yazdır.
if (results.value == btn1 ) {
digitalWrite(led1, HIGH);
}
else if (results.value == btn2) {
digitalWrite(led1, LOW);
}
irrecv.resume(); // Daha sonraki değer için bekle.
}
}
]]>Simülatöre ulaşmak için tıklayınız.
Öncelikle aşağıdaki malzemeleri kullanarak devreyi kuruyoruz.
Kullanılan Malzemeler
Micro:bit
3 adet led
3 adet 220 ohm direnç
Bread board
Yeterli miktarda jumper kablo
Devre kurulumunda şekildeki gibi Micro:bit’in PO pinini kırmızı lede, P1 pinini sarı lede , P2 pinini ise yeşil lede bağlıyoruz.
Ledlerin zarar görmesini engellemek amacıyla aralarda 220 ohm direnç kullanıyoruz.
Bağlantıyı yaptıktan sonra kodlama kısmına geçiyoruz.
Kullandığımız editörde aşağıdaki kodları yazıyoruz.
İlk blokta P0 pini aktif yani 1 olurken P1 ve P2 pinleri sıfır yani pasif oluyor. Bu durumda sadece kırmızı lede akım geçeceği için sadece kırmızı led yanacak diğerleri yanmayacaktır. Bu araya 5 saniye duraklama ekliyoruz. (Kırmızı led 5 saniye boyunca yanacaktır.) İkinci kısımda ise P0 ve P2 pini sıfır yapılarak pasif olacak P1 pini aktif edilerek sarı ledin yanması sağlanacaktır. Bu araya da 3 saniye duraklama ekliyoruz. (Sarı led 3 saniye boyunca yanacaktır.) Aynı şekilde diğer kod kısmında da P0 ve P1 pasif duruma getirilip sadece P2 pini aktif olacaktır. Bu durumda da sadece yeşil led 5 saniye boyunca yanacaktır.
Kullanılacak Malzemeler:
Kumanda alıcımızı pinlerini doğru takmaya dikkat edelim. Hassas bir alıcı olduğundan yanlış bağlantı yaparsanız kolay bozulur. Özellikle GND ve VCC pinlerini doğru takalım.
Not: Çizim programında Chq1838 kızıl ötesi alıcının resmi bulunmadığından başka bir kızıl ötesi alıcısı ile devre şeması çizildi.
Mblock programımıza kumanda alıcısını kullanabilmek için uzantı eklememiz gerekmektedir.
Uzantılar –> Uzantıları Yönet yolunu takip ederek IRremote uzantısını indir.
7. pine kumanda alıcısının sinyalini bağlıyoruz. Bu kodla beraber Serial Ekranda kumanda kumanda tuş değerlerini okuyoruz. Sonraki kodumuzda kumanda tuş değerlerini değişken olarak tanımlıyoruz. Tanımladığımız tuşları kodumuz içinde istediğimiz şekilde kullanabiliriz.
Eğer koşulu ile tanımladığımız tuşlarla aynı değere sahip kumanda tuşuna basıldığında led yak söndür işlemini gerçekleştirebiliriz.
]]>Simülatöre ulaşmak için tıklayınız.
Öncelikle program kısmını yazalım. İlk aşama olarak Micro:bit’in ölçtüğü ışık değerini ekranda göstermesini istiyoruz.Bunun için aşağıdaki komutları ekliyoruz.
Bu aşamadan sonra bir karşılaştırma işlemi yapmamız gerekiyor. orta bir değer belirleyelim. Biz 180 değerini belirledik. Şimdi eğer ortamdaki ışık seviyesi 180 den büyük ise ledi söndürmesini , eğer ortamdaki ışık seviyesi 180 den küçük ise ledi yakmasını istiyoruz.
Dijital pini biz P0 pinine bağlayarak aktif duruma getireceğiz. Sizler P1 e bağladıysanız 1’i , P2 ye bağladıysanız 2’yi seçmelisiniz.
Ledi sadece yakıp söndürme işlemi yapacağımız için dijital pin komutunu kullanacağız. Önemli nokta dijital pinler sadece 0(pasif) ve 1 (aktif) değerlerini üretir. Yani led yanıyor veya yanmıyordur. Şiddetinde herhangi bir değişiklik olmayacaktır. Işık sensörü 0-255 arası değer üretmektedir. Bir sonraki adımda ışığın şiddetine göre ledin parlaklığını artıracağız.
KOdların tamamı aşağıdadır.
Şimdi devre kısmına geçelim. Micro:bit’in P0 pinini giriş pini olarak bağlayacağız. Led çıkışını (- ucu) ise Micro:bit’in GND çıkışına göndereceğiz. Devre kurulumu aşağıda verilmiştir.
]]>int trigPin = 12;
int echoPin = 13;
long sure, mesafe;
void setup () {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(2, OUTPUT);
Serial.println("Arduino İle Mesafe Sensörü Uygulaması Başlatılıyor...");
delay(3000);
}
void loop () {
mesafeFonk();
Serial.print(mesafe);
Serial.println(" cm uzaklıkta");
if (mesafe <= 20 && mesafe >= 15) {
digitalWrite(2, HIGH);
}
else if (mesafe <= 14 && mesafe >= 10) {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}
else if (mesafe <= 9 && mesafe >= 5) {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
}
else if (mesafe <= 4) {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
buzerSinyal();
}
else {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
}
void buzerSinyal() {
digitalWrite(6, HIGH);
delay(200);
digitalWrite(6, LOW);
delay(200);
}
void mesafeFonk() { // Mesafeyi ölçmek için fonksiyon.
digitalWrite(trigPin, LOW);
delayMicroseconds(3);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
sure = pulseIn(echoPin, HIGH);
mesafe = (sure / 29.1) / 2;
return mesafe; // Mesafeyi döndürüyoruz
}
İlk olarak değişkenler ve Mesafe Sensörünün Trig ve Echo pinleri tamamlanmıştır.”mesafeFonk()” Fonksiyonu ile mesafe değeri alınmıştır. Mesafe azaldıkça ledler sırasıyla yanacak ve son kısımda 5 ten küçükse tüm ledler yanacak ve Buzzer ses çıkartmaya başlar mesafenin yakınlığına göre yanan ledlerin sayısı artar.
]]>Simülasyona ulaşmak için tıklayınız.
İlk olarak attığımız adım sayılarını tutması için “adım” isminde bir değişken oluşturuyoruz. Bu değişkeni program başladığında sıfıra eşitliyoruz ki karışıklık olmasın , adımları üstüne saymasın.
Bu aşamadan sonra Micro:bit her sallandığında adım sayısının bir artması için aşağıdaki komutları yazıyoruz. Led ekranda artan sayılar bir süre sonra kayan yazı şeklinde görüneceği için hızlı adımları saymada problem çıkabilir. Bunun önüne geçmek için adım sayısı arttığında ekrandaki “animasyonu durdur “komutunu kullanacağız. Bu komuta Led menüsünden daha fazla diyerek ulaşabilirsiniz.
Program burada bitiyor ama bizler A ve B butonlarınıda baştan başlatma ve en son adım sayısını ekranda görme amaçlı kodladık. Kodların tamamı aşağıdaki gibidir. Bu kodları yazdıktan sonra Micro:bit’i öğrencilerinizin ayağına veya bileğine bantla yapıştırarak eğlenceli bir uygulamaya dönüştürebilirsiniz. Veya Micro:bit’in ivme özelliğini kullanarak x,y ve z düzleminde de hareket etmesini kullanarak adım sayarı daha hassas hale getirebilirsiniz.
]]>