Arduino sayma makinası hatası

Bu konuyu okuyanlar

İ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
 

küheylanTR

Doçent
Katılım
6 Ocak 2017
Mesajlar
970
Reaksiyon puanı
1,065
Puanları
93
Şu şekilde yaparsanız daha iyi olur :)
Kod:
if (digitalRead(MZ1Pin && MZ2Pin) == 0) //Sensörler ürünü gördü mü?
{
delay(20);//Bekleme...
if (digitalRead(MZ1Pin && MZ2Pin)) == 1); //Sensörlerin önünden ürün geçtiyse
{
{
sayac++;
}
}

Durumlara atamak isterseniz Void Loop kısmının en başına koyu kısmı eklemelisiniz.

Kod:
sensor1Durumu=digitalRead(MZ1Pin);
sensor2Durumu=digitalRead(MZ2Pin);

if (digitalRead(sensor1Durumu && sensor2Durumu) == 0) //Sensörler ürünü gördü mü?
{
delay(20);//Bekleme...
if (digitalRead(sensor1Durumu && sensor2Durumu)) == 1); //Sensörlerin önünden ürün geçtiyse
{
sayac++;
}
}
Umarım yardımcı olabilmişimdir :) İyi forumlar :)
 

Emre Budak

Doçent
Katılım
26 Eylül 2017
Mesajlar
711
Reaksiyon puanı
321
Puanları
63
Şu şekilde yaparsanız daha iyi olur :)
Kod:
if (digitalRead(MZ1Pin && MZ2Pin) == 0) //Sensörler ürünü gördü mü?
{
delay(20);//Bekleme...
if (digitalRead(MZ1Pin && MZ2Pin)) == 1); //Sensörlerin önünden ürün geçtiyse
{
{
sayac++;
}
}

Durumlara atamak isterseniz Void Loop kısmının en başına koyu kısmı eklemelisiniz.

Kod:
sensor1Durumu=digitalRead(MZ1Pin);
sensor2Durumu=digitalRead(MZ2Pin);

if (digitalRead(sensor1Durumu && sensor2Durumu) == 0) //Sensörler ürünü gördü mü?
{
delay(20);//Bekleme...
if (digitalRead(sensor1Durumu && sensor2Durumu)) == 1); //Sensörlerin önünden ürün geçtiyse
{
sayac++;
}
}
Umarım yardımcı olabilmişimdir :) İyi forumlar :)
Daha iyi yardımcı olunamazdı :) Benimde işime yaradı :) Raspberry Pi'da yapabilir miyim bunu?
 

küheylanTR

Doçent
Katılım
6 Ocak 2017
Mesajlar
970
Reaksiyon puanı
1,065
Puanları
93
Daha iyi yardımcı olunamazdı :) Benimde işime yaradı :) Raspberry Pi'da yapabilir miyim bunu?
Henüz Raspberry Pi ile tanışmadım.En yakın zamanda geçeceğim İnşallah :) Ama mantığın aynı olduğunu biliyorum.Devrede aynı şekilde kuruluyor zaten.Benzer kartlar yani yapılabilir :)
--- Gönderi Güncellendi ---
Bu arada İsmail Eraslan MZ80'i input olarak tanımlamayı unutmayalım :)
 

Emre Budak

Doçent
Katılım
26 Eylül 2017
Mesajlar
711
Reaksiyon puanı
321
Puanları
63
Henüz Raspberry Pi ile tanışmadım.En yakın zamanda geçeceğim İnşallah :) Ama mantığın aynı olduğunu biliyorum.Devrede aynı şekilde kuruluyor zaten.Benzer kartlar yani yapılabilir :)
--- Gönderi Güncellendi ---
Bu arada İsmail Eraslan MZ80'i input olarak tanımlamayı unutmayalım :)
Aynen çok benziyorlar bende yeni aldım öğrenmeye çalışıyorum :)
 

İsmail Eraslan

Öğrenci
Katılım
11 Kasım 2017
Mesajlar
4
Reaksiyon puanı
0
Puanları
1
Yaş
24
Hocam Ben Baya Acemiyim. Kodu Nereye Nasıl Yapıştırmalıyım? Yİne Hatalar Veriyorda :( İnput Olarak Falan Ayarlayamadım. Bilgisayarı Çökertmekten Korkuyorum. Çok Özür Dilerim Fakat Kodu Yapıştırılması Gereken Yerleri Yapıştırıp Ayarlayıp Koysanız?
--- Gönderi Güncellendi ---
Henüz Raspberry Pi ile tanışmadım.En yakın zamanda geçeceğim İnşallah :) Ama mantığın aynı olduğunu biliyorum.Devrede aynı şekilde kuruluyor zaten.Benzer kartlar yani yapılabilir :)
--- Gönderi Güncellendi ---
Bu arada İsmail Eraslan MZ80'i input olarak tanımlamayı unutmayalım :)

Hocam Ben Baya Acemiyim. Kodu Nereye Nasıl Yapıştırmalıyım? Yİne Hatalar Veriyorda :( İnput Olarak Falan Ayarlayamadım. Bilgisayarı Çökertmekten Korkuyorum. Çok Özür Dilerim Fakat Kodu Yapıştırılması Gereken Yerleri Yapıştırıp Ayarlayıp Koysanız?
 
Son düzenleme:

küheylanTR

Doçent
Katılım
6 Ocak 2017
Mesajlar
970
Reaksiyon puanı
1,065
Puanları
93
Hocam Ben Baya Acemiyim. Kodu Nereye Nasıl Yapıştırmalıyım? Yİne Hatalar Veriyorda :( İnput Olarak Falan Ayarlayamadım. Bilgisayarı Çökertmekten Korkuyorum. Çok Özür Dilerim Fakat Kodu Yapıştırılması Gereken Yerleri Yapıştırıp Ayarlayıp Koysanız?
--- Gönderi Güncellendi ---


Hocam Ben Baya Acemiyim. Kodu Nereye Nasıl Yapıştırmalıyım? Yİne Hatalar Veriyorda :( İnput Olarak Falan Ayarlayamadım. Bilgisayarı Çökertmekten Korkuyorum. Çok Özür Dilerim Fakat Kodu Yapıştırılması Gereken Yerleri Yapıştırıp Ayarlayıp Koysanız?
Estağfurullah bizde profesyonel değiliz zaten anladığımız kadar yardımcı olmaya çalışıyoruz :) Bilgisayarda çökmez ne yaptın ya :) Void setup kısmı programın 1 defa çalışacak kodlarını ve projede kullandığımız donanımları (led,buton vs. ) giriş çıkış olarak ayarlamamızı sağlayan yerdir. Burada giriş Input çıkış Output'tur.Minimum bir İngilizce ile anlaşılıyor bu :) Örneğin buton. Buton bir giriş elemanıdır. Butonu biz şöyle tanımlarız;
pinMode(buton1,INPUT);
Devre bağlantımıza göre şöyle de olabilir;
pinMode(buton2,INPUT_PULLUP);
Bu kısa hatırlatmadan sonra sizin sensörünüzü tanımlamaya gelelim :)
En baş kısımda sensörü başladığımız pine isim veriyoruz.
int mz80=10;
Şimdi ise bunun bir sensör yani giriş elemanı olduğunu belirtmemiz gerekiyor. Bunu da Void Setup kısmında yapacağız.
Void setup () {
pinMode (mz80,INPUT);}
Tanımlamamız bu kadar. Şimdi ise Void loop kısmına sensör gördüğünde neleri nasıl yapması gerektiğini yazacağız.
Void loop () {
if (digitalRead(mz80) == HIGH){
digitalWrite(led1,HIGH);//sensör gördüğünde 1. ledimiz yanacak
}
}
Anlatma yeteneğim düşük ama denedim bişeyler :D :D Tam olarak ne yapmaya çalıştığınızı bilmediğimden programı yazıp veremiyorum. Bilsem bile elimde Mz80 bulunmadığından deneme şansım da yok yanlış kod vermek istemem :) Yeni öğrenen biri iseniz biraz zor gelecek yerden başlamışsınız led ve buton uygulamalarına çalışmanız sizin için hem daha yararlı hemde istek ve arzu konusunda negatif dönüşünceyi kaldırmada yardımcı olur. Turkcell'in Geleceği Yazanlar sitesinde Arduino ile ilgili güzel anlatımlar var oradan da yardım alabilirsiniz. Takıldığınız bir yer olursa biz yine buralardayız :) iyi forumlar :)
 

İsmail Eraslan

Öğrenci
Katılım
11 Kasım 2017
Mesajlar
4
Reaksiyon puanı
0
Puanları
1
Yaş
24
çok teşekkür ederim. sabah ayarları yapacağım. yapamazsam yine sorarım. :D benim yapmaya çalıştığım şey 2 sensörde aynı anda birşeyi gördüğünde onu LCD'ye SAyı olarak aktarması. Sadece Biri gördüğünde İse Saymaması.
 

aaydıın

Öğrenci
Katılım
12 Aralık 2017
Mesajlar
2
Reaksiyon puanı
0
Puanları
1
Yaş
32
arkadaslar bu projenın devre seması varmı acaba
 
Üst