İsmail Eraslan
Öğrenci
- Katılım
- 11 Kasım 2017
- Mesajlar
- 4
- Reaksiyon puanı
- 0
- Puanları
- 1
- Yaş
- 24
Arkadaşlar Bir Çuval Sayma Makinesi Yapmaya Çalışıyorum. Çuvallar Banttan Geçince LCD ekrana Yazacak. Fakat Burada Yaşadığım Problem Farklı. Ben 2 Tane Sansör Koyup, Çuval Aynı Anda İkisininde Önünü Kapayacak Bir Kod Yazmaya Çalışıyorum. Kodum Şu:
#include <LiquidCrystal.h>//LCD kütüphanesi çağırılır
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//Lcd bacak tanımları burada yapılır
int MZ1Pin=4;//1. MZ80'nin bağlanacağı analog pin numarası
int MZ2Pin=6;//2. MZ80'nin bağlanacağı analog pin numarası
int sensor1Durumu=0;//1. MZ80'den veri alındığında MZ80'nin bir önceki anda hangi durumda olduğunu gösteren değişken
int sensor2Durumu=0;//2. MZ80'den Veri Aldındığında MZ80'in bir önceki adımda hangi durumda olduğunu gösteren değişken
int sayac=0;
void setup() {
lcd.begin(16,2);
lcd.print("sayac:");
lcd.print(sayac);//sayacın ilk durumu buraya yazılır.
}
void loop() {
lcd.setCursor(6,0);//Sayının yazılacağı yer seçilir
if(Sensor1Deger()==1 && sensor1Durumu==0){//MZ80 boşta iken önüne bir cisim geldiği takdirde bu if fonksiyon işler.
if(Sensor2Deger()==1 && sendor2Durumu==0){//MZ80 boşta iken önüne bir cisim geldiği takdirde bu if fonksiyon işler.
sayac++;
}
sensorDurumu=1;//Bu değer 1 yapılarak cisim MZ80'yi kapattığı durumda bu fonksiyona girme engellenir. Bu yöntem kullanılmasaydı cisim MZ80'nin önünde
//olduğu sürece sayma devam ederdi.
lcd.print(sayac);
}
else if(Sensor1Deger()==0 && sensor1Durumu==1){//LDR'nin önünde cisim varken cisim çekildiğinde sensör durumu tekrar 0 yapılmalıdır ki, sayma işlemi için
else if(Sensor2Deger()==0 && sensor2Durumu==1 // üstteki if fonksyonuna tekrar girilebilsin. Bu if fonksiyonunda bu işlem gerçekleşir.
sensorDurumu=0;
}
}
int SensorDeger(){/*LDR normalde bize analog değer verecektir, fakat biz "LDR'nin önünde cisim var ya da yok" diye iki dijital değer aramaktayız.
Bu fonksiyon ile belli bir değerin üstünde analog değer "1" altındaki de "0" olarak programa döndürülecektir. Bu değer elimizi LDR'nin
önüne getirdiğimizde ve önünden çektiğimizde okuyacağımız değerlerin ortasında bir sayı seçilmelidir.*/
if(analogRead(MZ1Pin)>500){//Ortamın ışığına göre gereken değer kullanıcı tarafından buraya yazılmalıdır.
if(analogRead(MZ2Pin)>500
return 1;
}else{return 0;}
Problem Kalın Yazdığım Yerde Çıkıyor. Problem Notu İse
'sensor1Deger' bu kapsamda bildirilmedi sorununu alıyorum. Please help me
#include <LiquidCrystal.h>//LCD kütüphanesi çağırılır
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//Lcd bacak tanımları burada yapılır
int MZ1Pin=4;//1. MZ80'nin bağlanacağı analog pin numarası
int MZ2Pin=6;//2. MZ80'nin bağlanacağı analog pin numarası
int sensor1Durumu=0;//1. MZ80'den veri alındığında MZ80'nin bir önceki anda hangi durumda olduğunu gösteren değişken
int sensor2Durumu=0;//2. MZ80'den Veri Aldındığında MZ80'in bir önceki adımda hangi durumda olduğunu gösteren değişken
int sayac=0;
void setup() {
lcd.begin(16,2);
lcd.print("sayac:");
lcd.print(sayac);//sayacın ilk durumu buraya yazılır.
}
void loop() {
lcd.setCursor(6,0);//Sayının yazılacağı yer seçilir
if(Sensor1Deger()==1 && sensor1Durumu==0){//MZ80 boşta iken önüne bir cisim geldiği takdirde bu if fonksiyon işler.
if(Sensor2Deger()==1 && sendor2Durumu==0){//MZ80 boşta iken önüne bir cisim geldiği takdirde bu if fonksiyon işler.
sayac++;
}
sensorDurumu=1;//Bu değer 1 yapılarak cisim MZ80'yi kapattığı durumda bu fonksiyona girme engellenir. Bu yöntem kullanılmasaydı cisim MZ80'nin önünde
//olduğu sürece sayma devam ederdi.
lcd.print(sayac);
}
else if(Sensor1Deger()==0 && sensor1Durumu==1){//LDR'nin önünde cisim varken cisim çekildiğinde sensör durumu tekrar 0 yapılmalıdır ki, sayma işlemi için
else if(Sensor2Deger()==0 && sensor2Durumu==1 // üstteki if fonksyonuna tekrar girilebilsin. Bu if fonksiyonunda bu işlem gerçekleşir.
sensorDurumu=0;
}
}
int SensorDeger(){/*LDR normalde bize analog değer verecektir, fakat biz "LDR'nin önünde cisim var ya da yok" diye iki dijital değer aramaktayız.
Bu fonksiyon ile belli bir değerin üstünde analog değer "1" altındaki de "0" olarak programa döndürülecektir. Bu değer elimizi LDR'nin
önüne getirdiğimizde ve önünden çektiğimizde okuyacağımız değerlerin ortasında bir sayı seçilmelidir.*/
if(analogRead(MZ1Pin)>500){//Ortamın ışığına göre gereken değer kullanıcı tarafından buraya yazılmalıdır.
if(analogRead(MZ2Pin)>500
return 1;
}else{return 0;}
Problem Kalın Yazdığım Yerde Çıkıyor. Problem Notu İse
'sensor1Deger' bu kapsamda bildirilmedi sorununu alıyorum. Please help me