Arduino ile Mini Kontrol Paneli
22 Ağustos 2025
•
12 dk okuma
Gerekli Malzemeler
- Arduino Uno veya Nano
- 16x2 LCD Ekran (I2C modüllü)
- 5-10 kΩ Potansiyometre
- 4x4 Tuş Takımı
- LED'ler (Kırmızı, Yeşil, Sarı)
- 220Ω Dirençler (LED'ler için)
- Breadboard ve jumper kablolar
- 9V Pil veya Güç Kaynağı
Devre Kurulumu
Mini kontrol panelimiz için aşağıdaki devre şemasını takip edebilirsiniz:
Bağlantılar:
| Bileşen | Arduino Pin | Notlar |
|---|---|---|
| LCD I2C SDA | A4 | I2C iletişim için |
| LCD I2C SCL | A5 | I2C iletişim için |
| Tuş Takımı Satır 1 | 2 | 4x4 tuş takımı için |
| Tuş Takımı Satır 2 | 3 | 4x4 tuş takımı için |
| Tuş Takımı Satır 3 | 4 | 4x4 tuş takımı için |
| Tuş Takımı Satır 4 | 5 | 4x4 tuş takımı için |
| Tuş Takımı Sütun 1 | 6 | 4x4 tuş takımı için |
| Tuş Takımı Sütun 2 | 7 | 4x4 tuş takımı için |
| Tuş Takımı Sütun 3 | 8 | 4x4 tuş takımı için |
| Tuş Takımı Sütun 4 | 9 | 4x4 tuş takımı için |
| Kırmızı LED | 10 | 220Ω direnç ile |
| Yeşil LED | 11 | 220Ω direnç ile |
| Sarı LED | 12 | 220Ω direnç ile |
Arduino Kodları
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// LCD ayarları
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Tuş takımı pinleri
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {2, 3, 4, 5};
byte colPins[COLS] = {6, 7, 8, 9};
// LED pinleri
const int redLed = 10;
const int greenLed = 11;
const int yellowLed = 12;
void setup() {
// LCD başlatma
lcd.init();
lcd.backlight();
lcd.print("Kontrol Paneli");
lcd.setCursor(0, 1);
lcd.print("Hazir");
// LED'ler çıkış olarak ayarlanıyor
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
// Tuş takımı için gerekli ayarlar
for (byte i = 0; i < ROWS; i++) {
pinMode(rowPins[i], INPUT_PULLUP);
}
for (byte i = 0; i < COLS; i++) {
pinMode(colPins[i], OUTPUT);
digitalWrite(colPins[i], HIGH);
}
delay(2000);
lcd.clear();
}
void loop() {
// Tuş takımı kontrolü
char key = getKey();
if (key != 0) {
lcd.clear();
lcd.print("Tus: ");
lcd.print(key);
// Tuşa göre işlemler
switch(key) {
case 'A':
digitalWrite(redLed, HIGH);
lcd.setCursor(0, 1);
lcd.print("Kirmizi LED Acik");
break;
case 'B':
digitalWrite(redLed, LOW);
lcd.setCursor(0, 1);
lcd.print("Kirmizi LED Kapali");
break;
case 'C':
digitalWrite(greenLed, HIGH);
lcd.setCursor(0, 1);
lcd.print("Yesil LED Acik");
break;
case 'D':
digitalWrite(greenLed, LOW);
lcd.setCursor(0, 1);
lcd.print("Yesil LED Kapali");
break;
case '*':
digitalWrite(yellowLed, HIGH);
lcd.setCursor(0, 1);
lcd.print("Sari LED Acik");
break;
case '#':
digitalWrite(yellowLed, LOW);
lcd.setCursor(0, 1);
lcd.print("Sari LED Kapali");
break;
}
}
delay(100);
}
// Tuş takımından basılan tuşu okuyan fonksiyon
char getKey() {
for (byte c = 0; c < COLS; c++) {
digitalWrite(colPins[c], LOW);
for (byte r = 0; r < ROWS; r++) {
if (digitalRead(rowPins[r]) == LOW) {
digitalWrite(colPins[c], HIGH);
return keys[r][c];
}
}
digitalWrite(colPins[c], HIGH);
}
return 0;
}
Proje Geliştirme Önerileri
- Menü sistemi ekleyerek daha fazla seçenek sunabilirsiniz
- Sıcaklık ve nem sensörü ekleyerek ortam verilerini gösterebilirsiniz
- Röle modülü ekleyerek yüksek güçlü cihazları kontrol edebilirsiniz
- Bluetooth modülü ile uzaktan kontrol özelliği ekleyebilirsiniz
- Zamanlayıcı özellikleri ekleyerek belirli zamanlarda otomatik işlemler yapabilirsiniz
Karşılaşılabilecek Sorunlar ve Çözümleri
| Sorun | Olası Nedeni | Çözüm |
|---|---|---|
| LCD ekran çalışmıyor | Yanlış I2C adresi veya bağlantı hatası | I2C adresini doğrulayın ve bağlantıları kontrol edin |
| Tuş takımından giriş alınamıyor | Pin bağlantılarında hata veya kod hatası | Bağlantıları ve pin numaralarını kontrol edin |
| LED'ler yanmıyor | Direnç bağlanmamış veya pin hatası | Dirençleri ve bağlantıları kontrol edin |
| Kod derlenmiyor | Eksik kütüphane veya sözdizimi hatası | Gerekli kütüphaneleri yükleyin ve kodu kontrol edin |
Sonuç
Arduino ile mini kontrol paneli yapmak, elektronik ve programlama becerilerinizi geliştirmek için harika bir projedir. Bu temel yapıyı kullanarak kendi ihtiyaçlarınıza göre projenizi özelleştirebilir ve geliştirebilirsiniz. Unutmayın, en iyi öğrenme yöntemi denemek ve hata yapmaktır!