Elektronik projelerle oyun dünyasına adım atmaya ne dersiniz? Bu projede, bir tilt sensörü kullanarak basit bir hareket algılama mekanizması oluşturacak ve bu hareketleri 4 haneli 7 segment bir ekranda puan olarak göstereceksiniz. Üstelik bir reset butonu ile skoru sıfırlayabileceksiniz. Bu sayede hem sensör okuma ve dijital ekran kontrolünü pekiştirecek hem de interaktif bir proje geliştirmiş olacaksınız!
Bu projeyi hayata geçirmek için ihtiyacın olan tüm malzemeler aşağıda listelenmiştir. Çoğu bileşen elektronik hobi kitlerinde bulunur.
Devre bağlantılarını doğru yapmak, projenin başarılı bir şekilde çalışmasını sağlar. Özellikle 7 segment ekranın bağlantı tipine dikkat edin.
1. Tilt Sensörü Bağlantısı:
2. 4 Haneli 7 Segment Display Bağlantıları (TM1637 Modülü Varsayımıyla):
3. Reset Butonu Bağlantısı:
4. Genel Güç Bağlantısı:
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, tilt sensörden gelen hareketleri sayacak ve skoru 7 segment ekranda gösterecektir. Reset butonu ile skor sıfırlanabilir.
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
// Pin Tanımları
const int tiltSensorPin = 6; // Tilt sensör pini
const int resetButtonPin = 4; // Reset butonu pini
// 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);
// Skor ve buton durumu değişkenleri
int score = 0;
int lastTiltState = LOW; // Tilt sensörün son durumu
int currentTiltState; // Tilt sensörün mevcut durumu
int lastButtonState = LOW; // Reset butonunun son durumu
int currentButtonState; // Reset butonunun mevcut durumu
void setup() {
// Pinleri giriş ve çıkış olarak ayarlıyoruz
pinMode(tiltSensorPin, INPUT);
pinMode(resetButtonPin, INPUT);
Serial.begin(9600); // Seri monitörü başlatıyoruz
Serial.println("Tilt Kontrollü Skor Sayacı Hazır!");
// Display'i başlatıyoruz ve parlaklığını ayarlıyoruz
display.setBrightness(0x0a); // Parlaklık ayarı (0x00 en düşük, 0x0f en yüksek)
// Başlangıçta skoru ekranda göster
display.showNumberDec(score, false, 4, 0);
}
void loop() {
// Tilt sensörün mevcut durumunu oku
currentTiltState = digitalRead(tiltSensorPin);
// Eğer tilt sensör durumu değiştiyse (LOW'dan HIGH'a geçtiyse, yani hareket algılandıysa)
if (currentTiltState != lastTiltState) {
if (currentTiltState == HIGH) {
score++; // Skoru artır
Serial.print("Skor: ");
Serial.println(score);
// Ekranda skoru güncelle, 4 haneli ve öndeki sıfırlar gizli değil
display.showNumberDec(score, false, 4, 0);
}
delay(50); // Sensör sıçramasını önlemek için kısa bir gecikme
}
lastTiltState = currentTiltState; // Son durumu güncelle
// Reset butonunun mevcut durumunu oku
currentButtonState = digitalRead(resetButtonPin);
// Eğer reset butonuna basıldıysa (LOW'dan HIGH'a geçtiyse)
if (currentButtonState != lastButtonState) {
if (currentButtonState == HIGH) {
score = 0; // Skoru sıfırla
Serial.println("Skor Sıfırlandı!");
display.showNumberDec(score, false, 4, 0); // Ekranda skoru güncelle
}
delay(50); // Buton sıçramasını önlemek için kısa bir gecikme
}
lastButtonState = currentButtonState; // Son durumu güncelle
}
Not: Tilt sensörünüzün HIGH veya LOW hangi durumda "eğilmeyi" temsil ettiğini deneme yanılma ile kontrol etmeniz gerekebilir. Koddaki if (currentTiltState == HIGH) koşulunu if (currentTiltState == LOW) olarak değiştirmeniz gerekebilir.
Bu projede, bir tilt sensörü ile hareket algılayarak skoru artırdık ve bu skoru 4 haneli 7 segment ekranda gösterdik. Kod, digitalRead() komutu ile hem tilt sensörün hem de reset butonunun durumunu sürekli kontrol eder. Tilt sensörden gelen her hareket algılandığında skor artırılırken, reset butonuna basıldığında skor sıfırlanır. "TM1637Display" kütüphanesi sayesinde skor kolayca ekrana yazdırılır.
Bu projeyi daha da geliştirmek istersen:
Bu proje, sensörlerden veri almayı, buton kontrolünü ve dijital ekranlarla veri görüntülemeyi birleştiren interaktif bir uygulamadır. Kendi oyun fikirlerini ekleyerek projeyi daha da eğlenceli hale getirmekten çekinme!