Table of Contents
Όταν ένα κουμπί πατιέται ή απελευθερώνεται, μπορεί να παράγει πολλαπλά σήματα λόγω μηχανικών δονήσεων, προκαλώντας λανθασμένες ενεργοποιήσεις. Η εφαρμογή debouncing βοηθά στο φιλτράρισμα αυτών των ανεπιθύμητων σημάτων και εξασφαλίζει την ακριβή ανίχνευση πιέσεων κουμπιών.
Τι είναι το Debuncing;
Αποφεύχθηκε η διαδικασία εξάλειψης του θορύβου που προκαλείται από την φυσική αναπήδηση επαφής ενός κουμπιού. Όταν πατηθεί ένα κουμπί, η επαφή μπορεί να συνδεθεί γρήγορα και να αποσυνδεθεί αρκετές φορές πριν από την εγκατάσταση. Χωρίς debouncing, αυτά τα γρήγορα σήματα μπορούν να παρερμηνευθούν ως πολλαπλές πιέσεις.
Μέθοδοι Αποδοκιμασίας
Υπάρχουν δύο κοινές μέθοδοι για την εφαρμογή debouncing στο Arduino:
- Λογισμικό Αποφοίτηση: Συμμετέχει στην προσθήκη καθυστέρησης ή ελέγχου της κατάστασης του κουμπιού με την πάροδο του χρόνου για να επιβεβαιωθεί ένα σταθερό σήμα.
- Hardware Debuncing: Χρησιμοποιεί ηλεκτρονικά εξαρτήματα όπως φίλτρα RC ή Schmitt ενεργοποιεί για να εξομαλύνει το σήμα.
Εφαρμογή λογισμικού Αποφοίτηση
Η αποκεφαλισμός λογισμικού χρησιμοποιείται συνήθως σε έργα Arduino. Περιλαμβάνει την ανάγνωση της κατάστασης κουμπί, αναμονή για ένα σύντομο χρονικό διάστημα, και στη συνέχεια επαληθεύοντας αν η κατάσταση παραμένει αμετάβλητη. Αυτή η διαδικασία μειώνει ψευδείς ενεργοποιήσεις που προκαλούνται από αναπήδηση.
Παράδειγμα ψαλιδίσματος κώδικα:
Κουμπί με ιντPin = 2;
εγγραφή κουμπιούState = 0;[LFT:1]
χωρίς υπογραφή για πολύ τελευταία ώρα παράδοσης = 0;
χωρίς υπογραφή μακράς αποπομπήςDelay = 50;
void loop() {]
ανάγνωση σετ = digitalRead(κουμπίPin);
αν (ανάγνωση != buttonState) {[LFT:1]]
lastDebunceTime = χιλιοστόγραμμα(;)
}
αν ((millis() - lastDebunceTime) & gt; debounseDelay) {
κουμπίState = reading;
{\\ an8}
{\\ an8}