Interaktiv Toggle mantig'i, kontaktlar dirillashi (Bounce & Debounce) va ko'p tugmali tizimlar
9-sinfIoT3-hafta · 9-darsTugmani bir marta bosganda holatni doimiy saqlab qolish siri
LED faqat tugma barmog'ingiz ostida ushlab turilgandagina yonadi.
Qo'l olinsa zudlik bilan o'chadi (qo'ng'iroq, siren).
1 marta bosildi: LED yondi va yoniq qoladi.
Yana 1 marta bosildi: LED o'chdi va o'chiq qoladi.
Xona chirog'i, televizor, kompyuter yoqish tugmasi.
Mexanik sakrashlar va dasturiy Debounce filtri
Tugma ichidagi metall kontaktlar bir-biriga urilganda elastik prujina kabi 5–20 millisekund davomida sakraydi.
Ko'zimiz buni sezmaydi, lekin mikrokontroller uchun bu uzoq vaqtdir!
Arduino 10 millisekund ichida 20–30 marta tekshirib ulguradi.
Bitta oddiy bosishni dastur 10 marta bosildi deb o'ylab, LEDni tasodifiy o'chirib qo'yishi mumkin.
State Change Detection va Toggle C++ algoritmi
Dasturda lastButtonState o'zgaruvchisi kiritiladi.
Har siklda joriy holat avvalgisi bilan solishtiriladi:
reading != lastButtonState
Agar holat o'zgargan bo'lsa VA yangi holat LOW bo'lsa:
ledState = !ledState;
LED holati darhol teskarisiga aylanadi (0 -> 1, 1 -> 0).
const int btnPin = 2;
const int ledPin = 9;
int ledState = LOW;
int lastBtn = HIGH;
void setup() {
pinMode(btnPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop() {
int reading = digitalRead(btnPin);
// Agar tugma yangi bosilgan bo'lsa:
if (reading != lastBtn && reading == LOW) {
ledState = !ledState; // Invert (Toggle)
digitalWrite(ledPin, ledState); // Yangi holatni uzatish
delay(50); // Debounce filtri
}
lastBtn = reading; // Holatni yangilash
}
Javobni ko'rish uchun aylantiring
Metall kontaktlarning mikroskopik sakrashlari paytidagi soxta signallarni e'tiborga olmaslik uchun.
Javobni ko'rish uchun aylantiring
Agar 0 bo'lsa 1 ga, agar 1 bo'lsa 0 ga almashtiradi (Toggle mantig'i).
3-hafta 9-dars yakunlari
Oddiy bosib turishdan farqli o'laroq, holatni eslab qoluvchi professional interfeys qurdik.
Mexanik kontakt tebranishini 50 ms filtr orqali tozalash va barqarorlikni ta'minlashni o'rgandik.
Bir nechta tugmalar va LEDlar bilan turli rejimlar va Master Switch mantiqlarini sinovdan o'tkazdik.