Giriş ve çıkış
Önceki projelerde pinleri çıkış olarak kullandık. Bu projede bir pini giriş yaparak butonun basılı olup olmadığını okuyacağız.
Malzemeler
- Arduino UNO, breadboard, jumper kablolar
- 1 adet push buton
- 1 adet LED ve 220 ohm direnç
Pull-up direnci neden gerekli?
Hiçbir yere bağlı olmayan bir giriş pini "havada" kalır ve rastgele değerler okur. Arduino'nun içinde bu sorunu çözen bir direnç vardır: INPUT_PULLUP. Bu ayarla pin normalde HIGH okur; buton basılıp pini GND'ye bağladığında LOW okur.
Bağlantı
- Butonun bir ucu 2. pine, diğer ucu GND'ye
- LED direnç üzerinden 8. pine, kısa bacağı GND'ye
Kod
// Codebil Campus - Proje 3: Butonla LED
// Buton basılıyken LED yanar. Dahili pull-up direnci kullanılır.
const int BUTON = 2;
const int LED = 8;
void setup() {
pinMode(BUTON, INPUT_PULLUP); // basılı değilken HIGH, basılıyken LOW okur
pinMode(LED, OUTPUT);
}
void loop() {
if (digitalRead(BUTON) == LOW) {
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
}
Dikkat: ters mantık
INPUT_PULLUP kullanıldığında "basılı" durumu LOW olarak okunur. Başlangıçta ters gibi gelse de bu yöntem ek bir direnç takmadan kararlı bir devre kurmayı sağlar.
Geliştir: aç-kapa düğmesi
Şu an LED sadece buton basılıyken yanıyor. Bir değişken kullanarak her basışta LED'in durumunu değiştirin: bir basışta yansın, bir sonrakinde sönsün. İpucu: bool ledAcik = false;
Konuyu pekiştir
3 soruluk kısa test. Bir seçeneğe dokunduğunuzda doğru cevap ve açıklaması görünür.
-
INPUT_PULLUP ayarlı bir pinde buton basılıyken hangi değer okunur?
Buton pini GND'ye bağladığı için LOW okunur.
-
Hiçbir yere bağlı olmayan giriş pininin sorunu nedir?
Havada kalan pin çevredeki elektriksel gürültüyü okur.
-
Buton durumunu okumak için hangi komut kullanılır?
digitalRead, dijital pindeki HIGH/LOW değerini okur.