/*
================================================================
T06 - BUTON · GÖREV CEVAPLARI
================================================================
Kullanım: GOREV sayısını 1-3 arasında değiştir ve yükle.
Devre: T06 devresi. Kabloya dokunma.
SORULARIN CEVAPLARI
Görev 2 - Buton, koşan ışığın bir turu bittiğinde okunur. Turun
ortasında bırakırsan ışık o turu bitirip öyle durur.
Görev 3 - "Basılı mı?" değil, "az önce mi basıldı?" sorusu:
şimdiki durum LOW ve bir önceki tur HIGH ise basış yeni olmuştur.
onceki olmadan yazılırsa, basılı tuttuğun sürece ışık çok hızlı
(delay(20) ile saniyede ~50 adım) ilerler ve rastgele bir LED'de kalır.
delay(20): butonun metal yaprakları basınca birkaç ms sıçrar (bounce, "ark");
bu kısa bekleme o titreşimi tek basış olarak saydırır.
================================================================
*/
const int GOREV = 1; // <-- 1, 2 ya da 3
const int SATIR_1 = A3;
const int SUTUN[3] = {13, 4, 5};
const int BUTON = A4;
int onceki = HIGH; // Görev 3: butonun bir önceki turdaki durumu
int sira = 0; // Görev 3: şu an yanan LED (0, 1, 2)
void setup() {
pinMode(SATIR_1, OUTPUT);
for (int i = 0; i < 3; i++) {
pinMode(SUTUN[i], OUTPUT);
digitalWrite(SUTUN[i], HIGH);
}
digitalWrite(SATIR_1, HIGH);
pinMode(BUTON, INPUT_PULLUP);
if (GOREV == 3) digitalWrite(SUTUN[sira], LOW); // ilk LED yanık başlar
}
void loop() {
if (GOREV == 1) { // ters çalışma
if (digitalRead(BUTON) == LOW) { // basılı: sağ yanar
digitalWrite(SUTUN[0], HIGH);
digitalWrite(SUTUN[2], LOW);
} else { // bırakık: sol yanar
digitalWrite(SUTUN[0], LOW);
digitalWrite(SUTUN[2], HIGH);
}
}
if (GOREV == 2) { // basılıyken koşan ışık
if (digitalRead(BUTON) == LOW) {
for (int i = 0; i < 3; i++) {
digitalWrite(SUTUN[i], LOW);
delay(200);
digitalWrite(SUTUN[i], HIGH);
}
}
}
if (GOREV == 3) { // her basışta bir sonraki LED
int durum = digitalRead(BUTON);
if (durum == LOW && onceki == HIGH) { // yeni basıldı
digitalWrite(SUTUN[sira], HIGH); // eskisi söner
sira = sira + 1;
if (sira == 3) sira = 0; // sondan başa dön
digitalWrite(SUTUN[sira], LOW); // yenisi yanar
}
onceki = durum;
delay(20);
}
}
1088BS 8×8 LED MATRİSİN İÇİ · 64 LED
🔴 A + = ANOT (+) bacağı: LED'in SAĞ bacağı → KIRMIZI yatay tele (SATIR) bağlı
🔵 K − = KATOT (−) bacağı: LED'in SOL bacağı → MAVİ dikey tele (SÜTUN) bağlı
katot (K −)
(A +) anot
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
K −
A +
satır 1 (+) → A3
satır 2 (+) bağlı değil
satır 3 (+) bağlı değil
satır 4 (+) bağlı değil
satır 5 (+) bağlı değil
satır 6 (+) bağlı değil
satır 7 (+) bağlı değil
satır 8 (+) bağlı değil
sütun 1
(−) → 13
sütun 2
(−) → 4
sütun 3
(−) → 5
sütun 4
(−)
sütun 5
(−)
sütun 6
(−)
sütun 7
(−)
sütun 8
(−)
220 Ω
220 Ω
220 Ω
buton → A4 (öbür ucu GND)