Ultrasonik sensörler ile mesafe ölçmek, Arduino projelerinin en popüler uygulamalarından biridir. Peki ya bu mesafeyi dijital bir ekranda görmek ister misiniz? Bu projede, bir ultrasonik sensörden gelen mesafe bilgisini, 4 haneli 7 segment bir ekranda nasıl göstereceğimizi adım adım öğreneceğiz. Hem sensör okumayı hem de dijital ekranları kontrol etmeyi bu projeyle pekiştireceksiniz!
Bu projeyi hayata geçirmek için ihtiyacınız olan malzemeler aşağıda listelenmiştir. Bu bileşenler genellikle elektronik hobi kitlerinde bulunur.
Devre bağlantıları projenin doğru çalışması için kritik öneme sahiptir. Özellikle 7 segment ekran bağlantıları biraz kablo kalabalığı yaratabilir, bu yüzden dikkatlice takip edin.
1. Ultrasonik Sensör (HC-SR04) Bağlantıları:
2. 4 Haneli 7 Segment Display Bağlantıları:
3. Genel Güç Bağlantıları:
Devre bağlantılarını tamamladıktan sonra sıra projenin beynini oluşturan koda geldi. Arduino IDE'yi açın ve aşağıdaki kodları kopyalayıp yapıştırın. Bu kod, ultrasonik sensörden gelen mesafe verisini okuyacak ve 7 segment ekranda gösterecektir.
Not: Bu kod, TM1637 gibi entegre 4 haneli 7 segment display modülleri için yazılmıştır ve "TM1637Display" kütüphanesini gerektirir. Kütüphaneyi kurmak için Arduino IDE'de Taslak > Kütüphaneleri Dahil Et > Kütüphaneleri Yönet yolunu izleyip "TM1637Display" aratarak kurabilirsiniz.
C++
#include <TM1637Display.h> // TM1637 7-Segment Display kütüphanesini dahil ediyoruz
// Ultrasonik sensör pinleri
const int trigPin = 9;
const int echoPin = 10;
// TM1637 Display pinleri
const int CLK = 3; // CLK pini Arduino D3'e bağlı
const int DIO = 2; // DIO pini Arduino D2'ye bağlı
// TM1637Display nesnesini oluşturuyoruz
TM1637Display display(CLK, DIO);
long duration;
int distance;
void setup() {
// Ultrasonik sensör pinlerini ayarlıyoruz
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600); // Seri monitörü başlatıyoruz
// Display'i başlatıyoruz
display.setBrightness(0x0a); // Parlaklık ayarı (0x00 en düşük, 0x0f en yüksek)
}
void loop() {
// Mesafe ölçüm fonksiyonunu çağırıyoruz
distance = getDistance();
// Eğer mesafe 0'dan büyükse (geçerli bir ölçüm)
if (distance > 0) {
// Mesafeyi Seri Monitöre yazdırıyoruz
Serial.print("Mesafe: ");
Serial.print(distance);
Serial.println(" cm");
// Mesafeyi 7-segment ekranda gösteriyoruz
// Eğer mesafe 9999 cm'den büyükse, ekranda "----" gösterelim
if (distance > 9999) {
display.showNumberDecEx(0000, 0b11100000, false, 4, 0); // "----" gibi bir şey
} else {
// Mesafeyi desimal olarak gösteriyoruz, önde sıfırları gizlemiyoruz
display.showNumberDec(distance, false, 4, 0);
}
} else {
// Geçersiz okuma olursa ekranda "Err " gösterebiliriz
// 'E', 'r', 'r', ' ' karakterlerini temsil eden segment desenleri gerekebilir
// Ya da basitçe ekranda sıfır bırakabiliriz
display.showNumberDec(0, false, 4, 0);
Serial.println("Mesafe okunamadı.");
}
delay(200); // Her ölçüm arasında kısa bir bekleme
}
// Mesafe ölçümü yapan fonksiyon
int getDistance() {
// Trig pinine kısa bir sinyal gönderiyoruz
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Echo pininden gelen sinyalin süresini ölçüyoruz
duration = pulseIn(echoPin, HIGH);
// Süreyi mesafeye çeviriyoruz (cm cinsinden)
// Ses hızı ~0.034 cm/mikrosaniye'dir
int dist = duration * 0.034 / 2;
return dist;
}
Bu projede, ultrasonik sensörden gelen mesafe verisini okuyarak bunu 4 haneli bir 7 segment ekranda görüntülemeyi öğrendiniz. Kod, getDistance() fonksiyonu ile mesafeyi hesaplar ve TM1637Display kütüphanesi yardımıyla bu değeri ekrana yansıtır.
Bu projeyi daha da geliştirmek isterseniz:
Bu proje, hem sensör kullanımını hem de dijital ekranlarla veri görüntülemeyi birleştiren harika bir temel oluşturuyor. Kendi fikirlerini ekleyerek projeyi daha da kişiselleştirmekten çekinme!