Kızıl Ötesi Sensör ile Obje Algılama ve Counting

Arkadaşlar merhaba, Bir konuda yardıma ihtiyacım var. http://www.robitshop.com/Photo-Interrupter-GP1A57HRJ00F,PR-1894.html Bu şekilde bir sensör var elimde. Obje geçişlerini algılama için tasarlanmış bir sensör. Fakat bununla ilgili bir sample code bulamadım. Örnek projelere de rastlamadım hiç. İlk defa kızıl ötesi sensörlerle çalışıyorum. Yapmak istediğim, bu sensör arasından periyodik aralıklarla geçen objeyi saydırmak. Bununla ilgili nasıl bir yol izlemem gerekir? Buna benzer şekilde, bir butona belirli frekanslarla basılarak saydırma yaptırmıştım. Fakat bunu beceremedim. Yardımcı olursanız çok sevinirim.

İlk aşamayı yaptım arkadaşlar. Bunların en düşük, hatta başlangıç seviyesinde olduğunu biliyorum fakat, benim gibi yeni başlayan arkadaşlara faydalı olacağını düşünüyorum. Yukarıda verdiğim linkteki sensörü çalıştıran kodlar şunlardır. int led = 13; int kizilotesi = 2; int val = 0; void setup() { pinMode(led, OUTPUT); pinMode(kizilotesi, INPUT); } void loop() { val = digitalRead(kizilotesi); digitalWrite(led, val); } Şimdi ise, aradan geçen objeyi saydırmak için çözüm arıyorum.

öncelikle bunu oku; http://arduino.cc/en/Tutorial/IfStatement yapman gereken kaç kez led yaktığını saymak :slight_smile: ardından aşağıdaki kodları dene. test etmedim, hata verebilir. int led = 13; int kizilotesi = 2; int val = 0; int say=0; void setup() { pinMode(led, OUTPUT); pinMode(kizilotesi, INPUT); } void loop() { val = digitalRead(kizilotesi); if (val>0){ say+=1; } Serial.println(say); digitalWrite(led, val); }

Merhaba Tam olarak nesneleri nasıl saydıracaksın nesneler belirli bir mesafe ile birleşik mi olacak? Eğer birleşik olabilecekse nesnelerin aralarına saydam bir cisim ile ekleme yapabilirsin bu şekilde ışık kırılmaz. Sayma işlemini gerçekleştirebilirsin.

Merhaba. Buton saydırma kodu vardı. Onunla kızılötesini harmanlayınca şöyle birşey çıktı ortaya. include <liquidcrystal.h>
LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
int led = 13;
int kizilotesi = 2;
int val = 0;
int counter = 0;
int currentState = 0;
int previousState = 0;
long saniye = 0;
int start = 0;
void setup(){
lcd.begin(16,2);

pinMode(led, OUTPUT);
pinMode(kizilotesi, INPUT);
Serial.begin(9600);
}

void loop()

{val==LOW;
if (val==HIGH)
{ start=1;}

if (start==1) {

saniye=saniye+1;}

if (saniye % 4 ==0 ) {
lcd.setCursor(0,1);
lcd.print(counter);

}
lcd.setCursor(0,0);
lcd.println(“Say”);

lcd.setCursor(10,0);
lcd.println(“Saniye”);
lcd.setCursor(10,1);
lcd.print((saniye)/100);
val = digitalRead(kizilotesi);
if (val==HIGH) {
digitalWrite(led, HIGH);
currentState = 1;
}
else{
digitalWrite(led, LOW);
currentState = 0;
}
if(currentState != previousState){
if(currentState == 0){
counter = counter + 1;

Serial.println(counter);
}
}
previousState = currentState;

}

Bu gayet güzel çalışıyor.

Yardım için teşekkürler.</liquidcrystal.h>