Arduino Projesi kodu nasıl yapılır?

josephtra

Picopat
Katılım
26 Eylül 2023
Mesajlar
26
Daha fazla  
Cinsiyet
Erkek
Selamlar arkadaşlar, Arduino Uno ile insan yakalayıcı bir sistem oluşturmam lazım. Malzemelerim 1 arduino uno r3, 2 ultrasonik mesafe sensörü, 1 lcd i2c, 1 breadboard ve bazı kablolar. Aslına bakarsanız ilk projem için iyi ilerlediğimi düşünüyorum, araştıra araştıra bir şeyler yapabildim ama tam istediğim gibi olmadı. Mesela koda bakın orada ilk "if" kodunda 1. sensörün mesafesi 100'den düşük, 2. sensörün mesafesi 100'den büyük diye yazdım araya da && koydum iki şartı da sağlasın diye ama Tinkercad'de denemek istediğim zaman 2. sensör şartını sağlamadan Lcd üzerinde kişi sayısının arttığını görüyorum.

Birinci söylemek istediğim şey bunun neden olduğu? İkinci olarak ise benim asıl yazmak istediğim kodun mantığı şöyleydi: "Eğer bir nesneyi önce 1. sensör sonra 2. sensör görürse kişi sayısı 1 azalsın, tam tersi durum olursa 1 artsın." Çünkü sensörlerden birini kapının iç kısmına diğer sensörü kapının dış kısmına takacağım. Buna uygun kodu nasıl yazabilirim? Güncel kodda nesneyi iki sensör de aynı anda görmesine dayalı kişi sayısı değişiyor. Aklımda başka bir şey vardı en başta, onu denerken bu kodu hazırlayabildim ama mantığın hatalı olduğunu sonradan fark ettim. Sonradan araştıra araştıra yazmayı denedim ama hep yarım kaldı o yüzden çalışan kodu sizle paylaşmak istedim. Umarım yapmak istediğim şeyi kafanızda kurabilecek kadar anlatabilmişimdir. Kodu da rahatça üzerinde ekleme-çıkarma yapabilin diye yazı olarak koyacağım. Tinkercad üzerinden denerseniz demek istediğimi anlayabilirsiniz. Acaba önce 1. sensör sonra 2. sensör mantığına göre kodu nasıl yapabilirim? Anlayabilen birileri yardımcı olabilirse sevinirim, iyi forumlar :)

ss2.jpg


Kod:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define TRIGGER_PIN1 9
#define ECHO_PIN1 10
#define TRIGGER_PIN2 11
#define ECHO_PIN2 12

#define LCD_ADDRESS 0x27

LiquidCrystal_I2C lcd(LCD_ADDRESS, 16, 2);

int personCount = 0;

void setup() {
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();

  pinMode(TRIGGER_PIN1, OUTPUT);
  pinMode(ECHO_PIN1, INPUT);
  pinMode(TRIGGER_PIN2, OUTPUT);
  pinMode(ECHO_PIN2, INPUT);
}

void loop() {
  int distance1 = getDistance(TRIGGER_PIN1, ECHO_PIN1);
  int distance2 = getDistance(TRIGGER_PIN2, ECHO_PIN2);

  if (distance1 < 100 && distance2 > 100) {
    personCount++;
    lcd.clear();
    lcd.print("Odadaki Kişi ");
    lcd.print(personCount);
    delay(500);
  } else if (distance1 > 100 && distance2 < 100) {
    personCount--;
    lcd.clear();
    lcd.print("Odadaki Kişi ");
    lcd.print(personCount);
    delay(500);
  }

  delay(500);
}

int getDistance(int triggerPin, int echoPin) {
  digitalWrite(triggerPin, LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin, LOW);
  long duration = pulseIn(echoPin, HIGH);
  int distance = duration * 0.034 / 2;
  return distance;
}
 
Son düzenleyen: Moderatör:

Yeni konular

Geri
Yukarı