Merhaba genç mucitler! Güneşin batışını ya da odadaki en karanlık köşeyi bulabilen akıllı bir robot tasarlamaya ne dersiniz? Bugün laboratuvarımızda iki adet LDR (ışık sensörü) ve bir servo motor kullanarak harika bir mekanizma kuruyoruz. Sol taraftaki gözümüz karanlıkta kalırsa servo motorumuz sola dönüyor, sağ taraftaki kararırlarsa sağa yöneliyor. Üstelik devredeki buzzer'larımız da duruma göre bize sesli uyarı veriyor! Hazırsanız karanlığı avlamaya başlayalım!

Gerekli malzemeler

  • 1 adet Arduino Uno
  • 1 adet Breadboard (Devre tahtası)
  • 2 adet LDR (Işığa Duyarlı Direnç / Sensör)
  • 2 adet 10k Ohm Direnç
  • 2 adet Buzzer (Ses uyarıları için)
  • 1 adet SG90 Servo Motor
  • Yeteri kadar Jumper Kablo

Adım adım yapım

1. 1. Bölüm

Yapım anlatımı Şemamızı adım adım inceleyerek kuralım. İlk olarak breadboard üzerine sol ve sağ tarafa birer tane LDR sensörümüzü yerleştirelim. LDR'lerin birer bacaklarını 5V güç hattına bağlayalım. Diğer bacaklarına 10k dirençler bağlayarak GND (eksi) hattına indirelim. Sensörlerin okuma yapabilmesi için; sol LDR ile direncinin birleştiği orta noktadan sarı bir kablo çekerek Arduino'nun A0 pinine bağlayalım. Sağ LDR'nin orta noktasından gelen pembe/mor kabloyu ise Arduino'nun A1 pinine takalım. Şimdi iki adet buzzer'ımızı breadboard'a yerleştirelim. Buzzer'ların artı uçlarını Arduino'nun dijital pinlerine (örneğin sol buzzer 11, sağ buzzer 10 pinine), eksi uçlarını ise GND hattına bağlayalım. Sırada robotumuzun kafasını hareket ettirecek olan Servo Motorumuz var. Servo motorun kahverengi kablosunu GND'ye, kırmızı kablosunu 5V'a, turuncu sinyal kablosunu ise Arduino'nun 9 numaralı pinine bağlayalım. Tüm kablolama bittiğine göre aşağıdaki akıllı kodu Arduino programınıza kopyalayabilir ve yükleyebilirsiniz!

Proje kodu

Kodu Arduino IDE'ye aktarın. Pin numaralarını kendi devrenize göre kontrol ettikten sonra karta yükleyin.

Arduino / C++
#include <Servo.h>

Servo fenerServosu;

const int ldrSol = A0;   // Sol LDR sensörü A0 pininde
const int ldrSag = A1;   // Sağ LDR sensörü A1 pininde
const int ledPin = 8;    // Fener / LED pini
const int servoPin = 9;  // Servo motor pini

void setup() {
  fenerServosu.attach(servoPin);
  fenerServosu.write(90); // Başlangıçta fener tam ortada (90 derece) dursun
  
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int solDeger = analogRead(ldrSol);
  int sagDeger = analogRead(ldrSag);

  Serial.print("Sol: ");
  Serial.print(solDeger);
  Serial.print(" | Sag: ");
  Serial.println(sagDeger);

  // Eğer sol sensör değeri 50'nin altına inerse (Sol taraf kararırlasa)
  if (solDeger < 50) {
    digitalWrite(ledPin, HIGH);   // Feneri yak
    fenerServosu.write(135);      // Servo motoru sola çevir (135 derece)
  }
  // Eğer sağ sensör değeri 50'nin altına inerse (Sağ taraf kararırlasa)
  else if (sagDeger < 50) {
    digitalWrite(ledPin, HIGH);   // Feneri yak
    fenerServosu.write(45);       // Servo motoru sağa çevir (45 derece)
  } 
  // Her iki taraf da aydınlıksa
  else {
    digitalWrite(ledPin, LOW);    // Feneri söndür
    fenerServosu.write(90);       // Orta konuma dön
  }
  
  delay(50); // Sistem kararlılığı için kısa bir mola
}
4görüntülenme
0beğeni
0yorum
Atölyeye katıl →
Topluluk

Yorumlar

0

İlk yorumu siz yazın.

Yorum yap