ARDUINO İLE SAYAÇ UYGULAMASI
goto komutu bekle: if(digitalRead(5)==1) { istenen işlem } else { goto bekle; } Goto komutu program içinde yönlendirme yapmayı sağlar. Goto komutu işlendiğinde, program goto’nun yanında yazan etikete yönlenir. Örneğin yandaki programda; 5 numaradaki butona basıldığında, program istenen işlemi yapar. Butona basılmadığında ise “bekle” etiketine yönlenerek butonu beklemeye devam eder.
ARDUINO İLE SAYDIRMA İŞLEMİ Dijital giriş pinlerinden alınan verilere göre, dijital çıkış pinlerini kontrol etmek her zaman yeterli olmayabilir. Bazı durumlarda girişe gelen sinyal sayısını saydırarak, çıkışları kontrol etmek gerekebilir.
ARDUINO İLE SAYDIRMA İŞLEMİ Örneğin : bir konveyör üzerinden geçen ürünleri saydırarak, belirli bir ürün sayısından sonra bir konveyörün durmasını veya bir lamba yada buzzer ile sinyal verilmesini sağlayabiliriz.
ARDUINO İLE SAYDIRMA İŞLEMİ Bir ürünün sayılabilmesi için, sensörün önce ürünü görmesi; ve sonra ürünün bant üzerinde biraz ilerleyip sensörün görmeyeceği konuma gelmesi gerekir. Sadece görme durumunda sayılırsa; program çok hızlı tarama yaptığından, bir ürün geçene kadar sayaç değeri milyonlarca sayıya ulaşabilir.
ARDUINO İLE SAYDIRMA İŞLEMİ
ARDUINO İLE SAYDIRMA İŞLEMİ Sensör 0 çıkışı vermektedir !
ARDUINO İLE SAYDIRMA İŞLEMİ Sensör 1 çıkışı vermektedir !
ARDUINO İLE SAYDIRMA İŞLEMİ Ürün sensörün önüne gelene kadar bekler; Ürün sensörün önüne gelince, ürünün görülmeme durumu oluşmasını bekler. Sensör ürünü 1 kez görüp, sonrasında GÖRMEME durumu oluştuğunda sayı 1 artacak , böylece 1 ürünün geçtiği yazılımla algılanacaktır. Aynı işlem tüm ürünler için gerçekleşecektir.
ARDUINO İLE SAYDIRMA İŞLEMİ Kullandığımız optik sensör(MZ80); ALGILAMA DURUMUNDA => 0 (SIFIR) ALGILAMAMA DURUMUNDA => 1 çıkışı vermektedir.
ARDUINO İLE SAYDIRMA İŞLEMİ Yazılımımızda; - 0 değeri gelmiş mi ? (Ürün geldi mi ?) - Eğer 0 gelmişse; 1 değeri gelmiş mi? (Ürün geçti mi ?) şeklinde iç-içe IF yapısından yararlanacağız.
ARDUINO İLE SAYDIRMA İŞLEMİ Sensörümüz 5 nolu pine bağlı olarak düşünülürse ; if(digitalRead(5)==0) Cisim sensörün önüne geldi mi ? { if(digitalRead(5)==1) Cisim sensörün önünden geçti mi ? { SAYACI ARTTIR! } }
ÖRNEK UYGULAMA Senaryo : Arduino Uno’nun 5 nolu pininden start butonu, 6 nolu pininden stop butonu, 7 nolu pininden MZ80 optik sensör, 8 nolu pininden transistör yardımı ile kontrol edilen röle üzerinden DC Motor kontrol edilecektir. Start butonuna basılıncaya kadar sistem bekleyecek, butona basılınca Motor çalışarak bant dönmeye başlayacaktır. Bant üzerinden 10 adet ürün geçtiğinde veya STOP’a basılırsa bant otomatik olarak duracaktır ve sayma değeri sıfırlanarak, en başa dönülecek ve START beklenecektir.
int sayac; void setup() { pinMode(5,INPUT); pinMode(6,INPUT); pinMode(7,INPUT); pinMode(8,OUTPUT); bekle: if(digitalRead(5)==1) { digitalWrite(8,OUTPUT); } else { goto bekle; } } Sayma işlemi yapılacağı için, bu komut ile arduino’nun hafızasından sayaç için bir alan ayrılır. Geçen ürün sayısı sayac’ın içine kaydedilecektir. START butonuna BASILMIŞ mı ? BASILMIŞSA Bant çalışsın !! START butonuna BASILMAMIŞ mı ? BASILMAMIŞSA bekle etiketine yönlen !!
else if(sayac==10) { digitalWrite(8,LOW); sayac=0; goto bekle; } } void loop() { if(digitalRead(7)==0) { delay(20); if(digitalRead(7)==1) { sayac=sayac+1; } } else if(digitalRead(6)==1) { digitalWrite(8,LOW); sayac=0; goto bekle; } else if(sayac==10) { digitalWrite(8,LOW); sayac=0; goto bekle; } }
Programı parça parça inceleyelim: if(digitalRead(7)==0) { delay(20); if(digitalRead(7)==1) { sayac=sayac+1; } } Ürün geldi mi ? Ürün GEÇTİ mi ? Ürün geçtiyse sayacı 1 arttır !
Programı parça parça inceleyelim: Stop butonuna BASILDI mı ? else if(digitalRead(6)==1) { digitalWrite(8,LOW); sayac=0; goto bekle; } BASILDIYSA : Bantı DURDUR !! Sayacı SIFIRLA !! En başa dön ve START butonunu BEKLE !!!
Programı parça parça inceleyelim: Sayac 10 oldu mu ? (10 adet ürün geçti mi ?) else if(sayac==10) { digitalWrite(8,LOW); sayac=0; goto bekle; } 10 olduysa ; Bantı DURDUR !! Sayacı SIFIRLA !! En başa dön ve START butonunu BEKLE !!! Devre şemasını kendiniz tasarlayarak, gerekli malzemeleri alıp, programı yükleyerek devrenizi kurup; çalıştırınız.
SENARYO Senaryo : Arduino Uno’nun 5 nolu pininden start butonu, 6 nolu pininden stop butonu, 7 nolu pininden MZ80 optik sensör, 8 nolu pininden transistör yardımı ile kontrol edilen röle üzerinden DC Motor, 9 nolu pininden LED1, 10 nolu pininden LED2 kontrol edilecektir. Start butonuna basılıncaya kadar sistem bekleyecek, butona basılınca Motor çalışarak bant dönmeye başlayacaktır.
SENARYO Senaryo (devamı) Banttan geçen ürün sayısı 5’den büyükse LED1, 8’den büyükse LED2 ışık verecektir. Ürün sayısı 12 olduğunda veya STOP’a basıldığında; LED’ler sönecek, bant duracak, sayaç sıfırlanacak ve program en başa dönerek; tekrar START’a basılma durumu beklenecektir. Gerekli devre ve program tasarımını yaparak, sistemi çalıştırınız.
TEMRİN UYGULAMASI Temrin Adı : Arduino ve sensör ile sayıcı uygulaması Temrin Amacı : Geçen ürün sayısını saydırmak.
TEMRİN UYGULAMASI Senaryo : Arduino Uno’nun 5 nolu pininden start butonu, 6 nolu pininden stop butonu, 7 nolu pininden MZ80 optik sensör-1, 9 nolu pininden MZ80 optik sensör-2, 10 nolu pininden transistör yardımı ile kontrol edilen röle üzerinden DC Motor, 11 nolu pininden LED1, 12 nolu pininden LED2 kontrol edilmektedir. Start butonuna basılıncaya kadar sistem bekleyecek, butona basılınca Motor çalışarak bant dönmeye başlayacaktır. UYGULAMA SÜRENİZ: 50 dkdır.
TEMRİN UYGULAMASI Senaryo (devamı) : Sensör1’in önünden geçen ürün sayısı, Sensör2’nin önünden geçen ürün sayısından büyük olduğunda motor çalışmaya devam edecektir. Sensör1’in önünden geçen ürün sayısı ile Sensör2’nin önünden geçen ürün sayısı eşit olduğunda motor duracaktır. Sensör1’in önünden geçen sayısı 3’den büyükse LED1 ışık versin. Sensör1’in önünden geçen sayısı 5’den büyükse LED2 ışık versin. Sensör1’in önünden geçen ürün sayısı 11 olunca veya STOP’a basılınca bant duracak, LED’ler sönecek, sayaç sıfırlanacek ve tekrar START butonuna basılana kadar beklenecektir.(en başa dönülecek) Gerekli devreyi tasarlayınız, programı yazınız.
İşlem Basamakları ( Yazmayın ) TEMRİN UYGULAMASI İşlem Basamakları ( Yazmayın ) 1) Senaryoyu müsveddeye not edin. 2) Gerekli programı bilgisayarda yazın. 3) Kurmanız gereken devreyi müsveddeye çizin. 4) Öğretmeninizden şema ve program için onay bekleyin. 5) Daha sonra malzemelerinizi alarak uygulamanızı yapın. 6) Devrenizin çalışmasını kontrol ettirmek için el kaldırarak sıra alın.
Defterde temrinle ilgili bulunması gerekenler TEMRİN UYGULAMASI Defterde temrinle ilgili bulunması gerekenler Temrin uygulaması ile alakalı aşağıda istenenleri defterinize düzenli bir şekilde yapın. 1) Senaryo 2) Devre şeması 3) Yazılım 4) Malzeme listesi ** Temrin tablosu çizmenize gerek yoktur.