![Πλήρης περιστροφική λύση Arduino: 5 βήματα Πλήρης περιστροφική λύση Arduino: 5 βήματα](https://i.howwhatproduce.com/images/005/image-12873-9-j.webp)
Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-23 14:39
![Πλήρης περιστροφική λύση Arduino Πλήρης περιστροφική λύση Arduino](https://i.howwhatproduce.com/images/005/image-12873-10-j.webp)
Οι περιστροφικοί κωδικοποιητές είναι περιστρεφόμενα κουμπιά ελέγχου για ηλεκτρονικά έργα, που χρησιμοποιούνται συχνά με μικροελεγκτές της οικογένειας Arduino. Μπορούν να χρησιμοποιηθούν για τη σωστή ρύθμιση παραμέτρων, την περιήγηση στα μενού, τη μετακίνηση αντικειμένων στην οθόνη, τον καθορισμό τιμών οποιουδήποτε είδους. Είναι συνηθισμένες αντικαταστάσεις για ποτενσιόμετρα, επειδή μπορούν να περιστραφούν με μεγαλύτερη ακρίβεια και απεριόριστο τρόπο, αυξάνουν ή μειώνουν μία διακριτή τιμή κάθε φορά, και συχνά ενσωματώνονται με ένα ωθητικό διακόπτη για συναρτήσεις τύπου επιλογής. Έρχονται σε όλα τα σχήματα και μεγέθη, αλλά το χαμηλότερο εύρος τιμών είναι δύσκολο να διασυνδεθεί, όπως εξηγείται παρακάτω.
Υπάρχουν αμέτρητα άρθρα σχετικά με τις λεπτομέρειες λειτουργίας και τους τρόπους χρήσης των περιστροφικών κωδικοποιητών, καθώς και πολυάριθμα δείγματα κώδικα και βιβλιοθήκες για τον τρόπο χρήσης τους. Το μόνο πρόβλημα είναι ότι κανένα από αυτά δεν λειτουργεί 100% ακριβές με τα χαμηλότερα εύρος τιμών κινεζικές περιστροφικές μονάδες.
Βήμα 1: Περιστροφικοί κωδικοποιητές στο εσωτερικό
![Περιστροφικοί κωδικοποιητές στο εσωτερικό Περιστροφικοί κωδικοποιητές στο εσωτερικό](https://i.howwhatproduce.com/images/005/image-12873-11-j.webp)
![Περιστροφικοί κωδικοποιητές στο εσωτερικό Περιστροφικοί κωδικοποιητές στο εσωτερικό](https://i.howwhatproduce.com/images/005/image-12873-12-j.webp)
![Περιστροφικοί κωδικοποιητές στο εσωτερικό Περιστροφικοί κωδικοποιητές στο εσωτερικό](https://i.howwhatproduce.com/images/005/image-12873-13-j.webp)
Το περιστροφικό μέρος του κωδικοποιητή έχει τρεις ακίδες (και δύο ακόμη για το προαιρετικό τμήμα διακόπτη). Το ένα είναι κοινό σημείο (μαύρο GND), τα άλλα δύο είναι για τον καθορισμό της κατεύθυνσης όταν γυρίζει το κουμπί (συχνά ονομάζονται μπλε CLK και κόκκινο DT). Και τα δύο αυτά είναι προσαρτημένα σε έναν πείρο εισόδου PULLUP του μικροελεγκτή, καθιστώντας το επίπεδο HIGH ως την προεπιλεγμένη τους ένδειξη. Όταν το κουμπί στρέφεται προς τα εμπρός (ή δεξιόστροφα), πρώτα το μπλε CLK πέφτει στο επίπεδο LOW και μετά ακολουθεί το κόκκινο DT. Γυρίζοντας περαιτέρω, το μπλε CLK ανεβαίνει ξανά στο HIGH, τότε καθώς το κοινό μπάλωμα GND αφήνει και τις δύο ακίδες σύνδεσης, το κόκκινο DT ανεβαίνει επίσης στο HIGH. Συμπληρώνοντας έτσι ένα πλήρες τσιμπούρι FWD (ή δεξιόστροφα). Το ίδιο συμβαίνει και προς την άλλη κατεύθυνση BWD (ή αριστερόστροφα), αλλά τώρα το κόκκινο πέφτει πρώτο και το μπλε ανεβαίνει πίσω τελευταία όπως φαίνεται στις εικόνες δύο επιπέδων αντίστοιχα.
Βήμα 2: Αθλιότητα που προκαλεί πραγματικό πόνο σε πολλούς
![Αθλιότητα που προκαλεί πραγματικό πόνο σε πολλούς Αθλιότητα που προκαλεί πραγματικό πόνο σε πολλούς](https://i.howwhatproduce.com/images/005/image-12873-14-j.webp)
![Αθλιότητα που προκαλεί πραγματικό πόνο σε πολλούς Αθλιότητα που προκαλεί πραγματικό πόνο σε πολλούς](https://i.howwhatproduce.com/images/005/image-12873-15-j.webp)
![Αθλιότητα που προκαλεί πραγματικό πόνο σε πολλούς Αθλιότητα που προκαλεί πραγματικό πόνο σε πολλούς](https://i.howwhatproduce.com/images/005/image-12873-16-j.webp)
Κοινό πρόβλημα για τους χομπίστες του Arduino, ότι οι φθηνές μονάδες κωδικοποιητή Rotary αναπηδούν επιπλέον αλλαγές στα επίπεδα εξόδου, προκαλώντας επιπλέον και λανθασμένες ενδείξεις καταμέτρησης κατεύθυνσης. Αυτό αποτρέπει την άψογη καταμέτρηση και καθιστά αδύνατη την ενσωμάτωση αυτών των μονάδων σε ακριβή περιστροφικά έργα. Αυτές οι επιπλέον αναπηδήσεις προκαλούνται από τις μηχανικές κινήσεις των μπαλωμάτων πάνω στους πείρους σύνδεσης και ακόμη και η εφαρμογή επιπλέον πυκνωτών δεν μπορεί να τις εξαλείψει εντελώς. Οι αναπηδήσεις μπορούν να εμφανιστούν οπουδήποτε στους πλήρεις κύκλους τσιμπούρι και απεικονίζονται με σενάρια πραγματικής ζωής στις εικόνες.
Βήμα 3: Λύση Πεπερασμένης Κατάστασης Μηχανής (FSM)
![Λύση Πεπερασμένης Κατάστασης Μηχανής (FSM) Λύση Πεπερασμένης Κατάστασης Μηχανής (FSM)](https://i.howwhatproduce.com/images/005/image-12873-17-j.webp)
Η εικόνα δείχνει τον πλήρη χώρο κατάστασης των πιθανών αλλαγών επιπέδου για τις δύο ακίδες (μπλε CLK και κόκκινο DT), τόσο για σωστές όσο και για ψευδείς αναπηδήσεις. Με βάση αυτό το μηχάνημα κατάστασης μπορεί να προγραμματιστεί μια πλήρης λύση που λειτουργεί πάντα 100% ακριβής. Επειδή δεν απαιτούνται καθυστερήσεις φιλτραρίσματος σε αυτήν τη λύση, είναι επίσης η ταχύτερη δυνατή. Ένα άλλο πλεονέκτημα του διαχωρισμού του χώρου κατάστασης των καρφιτσών από τον τρόπο λειτουργίας είναι ότι μπορεί κανείς να εφαρμόσει τις λειτουργίες δημοσκόπησης ή διακοπής κατά βούληση. Η ψηφοφορία ή οι διακοπές μπορούν να ανιχνεύσουν αλλαγές επιπέδου στις ακίδες και μια ξεχωριστή ρουτίνα θα υπολογίσει τη νέα κατάσταση με βάση την τρέχουσα κατάσταση και τα πραγματικά γεγονότα των αλλαγών επιπέδου.
Βήμα 4: Κωδικός Arduino
![Κωδικός Arduino Κωδικός Arduino](https://i.howwhatproduce.com/images/005/image-12873-18-j.webp)
Ο παρακάτω κωδικός μετράει τα τσιμπούρια FWD και BWD στη σειριακή οθόνη και ενσωματώνει επίσης την προαιρετική λειτουργία διακόπτη.
// Peter Csurgay 2019-04-10
// Καρφίτσες του περιστροφικού αντιστοιχισμένου στις θύρες Arduino
#define SW 21 #define CLK 22 #define DT 23
// Τρέχουσα και προηγούμενη τιμή του μετρητή που ρυθμίζεται από το περιστροφικό
int curVal = 0; int prevVal = 0;
// Επτά καταστάσεις FSM (μηχανή πεπερασμένης κατάστασης)
#define IDLE_11 0 #define SCLK_01 1 #define SCLK_00 2 #define SCLK_10 3 #define SDT_10 4 #define SDT_00 5 #define SDT_01 6 int state = IDLE_11;
void setup () {
Serial.begin (250000); Serial.println ("Έναρξη …"); // Το επίπεδο HIGH θα είναι προεπιλεγμένο για όλες τις ακίδες pinMode (SW, INPUT_PULLUP). pinMode (CLK, INPUT_PULLUP); pinMode (DT, INPUT_PULLUP); // Τόσο το CLK όσο και το DT θα ενεργοποιήσουν διακοπές για όλες τις αλλαγές επιπέδου attachInterrupt (digitalPinToInterrupt (CLK), rotaryCLK, CHANGE). attachInterrupt (digitalPinToInterrupt (DT), rotaryDT, CHANGE); }
void loop () {
// Χειρισμός του προαιρετικού διακόπτη ενσωματωμένου σε ορισμένους περιστροφικούς κωδικοποιητές εάν (digitalRead (SW) == LOW) {Serial.println ("Pressed"); ενώ (! digitalRead (SW)); } // Οποιαδήποτε αλλαγή στην τιμή του μετρητή εμφανίζεται στο Serial Monitor if (curVal! = PrevVal) {Serial.println (curVal); prevVal = curVal; }}
// Μεταβάσεις κατάστασης μηχανής για αλλαγές στο επίπεδο CLK
void rotaryCLK () {if (digitalRead (CLK) == LOW) {if (state == IDLE_11) state = SCLK_01; αλλιώς εάν (κατάσταση == SCLK_10) κατάσταση = SCLK_00; αλλιώς εάν (κατάσταση == SDT_10) κατάσταση = SDT_00; } else {if (κατάσταση == SCLK_01) κατάσταση = IDLE_11; αλλιώς εάν (κατάσταση == SCLK_00) κατάσταση = SCLK_10; αλλιώς εάν (κατάσταση == SDT_00) κατάσταση = SDT_10; else if (κατάσταση == SDT_01) {κατάσταση = IDLE_11; curVal--; }}}
// Μεταβάσεις κατάστασης μηχανής για αλλαγές επιπέδου DT
void rotaryDT () {if (digitalRead (DT) == LOW) {if (state == IDLE_11) state = SDT_10; αλλιώς εάν (κατάσταση == SDT_01) κατάσταση = SDT_00; αλλιώς εάν (κατάσταση == SCLK_01) κατάσταση = SCLK_00; } else {if (κατάσταση == SDT_10) κατάσταση = IDLE_11; αλλιώς εάν (κατάσταση == SDT_00) κατάσταση = SDT_01; αλλιώς εάν (κατάσταση == SCLK_00) κατάσταση = SCLK_01; else if (κατάσταση == SCLK_10) {κατάσταση = IDLE_11; curVal ++; }}}
Βήμα 5: Άψογη ενσωμάτωση
![](https://i.ytimg.com/vi/NgMvAgHcgyE/hqdefault.jpg)
Μπορείτε να ελέγξετε στο συνημμένο βίντεο ότι η λύση FSM λειτουργεί με ακρίβεια και γρήγορα ακόμη και σε περίπτωση περιστροφικών κωδικοποιητών χαμηλού εύρους με διάφορα σποραδικά εφέ αναπήδησης.
Συνιστάται:
Πλήρης επισκευή της γεννήτριας σημάτων Vintage: 8 βήματα
![Πλήρης επισκευή της γεννήτριας σημάτων Vintage: 8 βήματα Πλήρης επισκευή της γεννήτριας σημάτων Vintage: 8 βήματα](https://i.howwhatproduce.com/images/002/image-4211-j.webp)
Πλήρης αναθεώρηση της γεννήτριας σήματος Vintage: Αγόρασα μια γεννήτρια σήματος Eico 320 RF σε μια συνάντηση ανταλλαγής ραδιο ζαμπόν για μερικά δολάρια πριν από μερικά χρόνια, αλλά ποτέ δεν κατάφερα να κάνω κάτι με αυτό μέχρι τώρα. Αυτή η γεννήτρια σήματος έχει πέντε εύρος εναλλαγής από 150 kHz έως 36 MHz και με εκτάριο
Συνεχής περιστροφική ηλιακή μηχανή: 5 βήματα (με εικόνες)
![Συνεχής περιστροφική ηλιακή μηχανή: 5 βήματα (με εικόνες) Συνεχής περιστροφική ηλιακή μηχανή: 5 βήματα (με εικόνες)](https://i.howwhatproduce.com/images/001/image-452-9-j.webp)
Συνεχής περιστροφική ηλιακή μηχανή: Ποιος δεν ονειρεύεται να φτιάξει μια συσκευή που βρίσκεται σε συνεχή κίνηση; Ασταμάτητο τρέξιμο, μέρα και νύχτα, καλοκαίρι και χειμώνας, συννεφιά και συνθήκες φωτισμού στο σπίτι. Αυτός ο παλμικός κινητήρας λειτουργεί για πολύ μεγάλο χρονικό διάστημα, ίσως περισσότερο από τη διάρκεια ζωής μου
Arduino -Teensy4 για Teensy 4.0 - Πλήρης συναρμολόγηση: 10 βήματα
![Arduino -Teensy4 για Teensy 4.0 - Πλήρης συναρμολόγηση: 10 βήματα Arduino -Teensy4 για Teensy 4.0 - Πλήρης συναρμολόγηση: 10 βήματα](https://i.howwhatproduce.com/images/002/image-3412-28-j.webp)
Arduino-Teensy4 για Teensy 4.0-Πλήρης συναρμολόγηση: Αυτό το εκπαιδευτικό θα σας οδηγήσει στη συναρμολόγηση του πίνακα επέκτασης Arduino-Teensy4 για το Teensy 4.0 Μπορείτε να αγοράσετε ένα από το κατάστημά μου Tindie εδώ: https: //www.tindie.com/products/ cburgess129/arduin … Μπορείτε να παραγγείλετε ένα Teensy 4 μαζί με το bo
Πλήρης μετεωρολογικός σταθμός Raspberry Pi με λογισμικό: 7 βήματα (με εικόνες)
![Πλήρης μετεωρολογικός σταθμός Raspberry Pi με λογισμικό: 7 βήματα (με εικόνες) Πλήρης μετεωρολογικός σταθμός Raspberry Pi με λογισμικό: 7 βήματα (με εικόνες)](https://i.howwhatproduce.com/images/010/image-28522-j.webp)
Πλήρης μετεωρολογικός σταθμός Raspberry Pi με λογισμικό: Πίσω στα τέλη Φεβρουαρίου είδα αυτήν την ανάρτηση στον ιστότοπο Raspberry Pi. http://www.raspberrypi.org/school-weather-station-… Είχαν δημιουργήσει μετεωρολογικούς σταθμούς Raspberry Pi για σχολεία. Totallyθελα εντελώς ένα! Αλλά εκείνη την εποχή (και πιστεύω ότι ακόμα γράφω
$ 2 Arduino. το ATMEGA328 Ως αυτόνομο. Εύκολο, φθηνό και πολύ μικρό. ένας πλήρης οδηγός .: 6 βήματα (με εικόνες)
![$ 2 Arduino. το ATMEGA328 Ως αυτόνομο. Εύκολο, φθηνό και πολύ μικρό. ένας πλήρης οδηγός .: 6 βήματα (με εικόνες) $ 2 Arduino. το ATMEGA328 Ως αυτόνομο. Εύκολο, φθηνό και πολύ μικρό. ένας πλήρης οδηγός .: 6 βήματα (με εικόνες)](https://i.howwhatproduce.com/images/002/image-5365-82-j.webp)
$ 2 Arduino. το ATMEGA328 Ως αυτόνομο. Εύκολο, φθηνό και πολύ μικρό. a Complete Guide .: Σε αυτό το εκπαιδευτικό εγχειρίδιο θα μάθετε πώς να χρησιμοποιείτε το τσιπ μικροελεγκτή Arduino ATMEGA328 ως αυτόνομο μικροελεγκτή. Κοστίζουν μόνο 2 δολάρια, μπορούν να κάνουν το ίδιο με το Arduino σας και να κάνουν τα έργα σας εξαιρετικά μικρά. Θα καλύψουμε τη διάταξη των καρφιτσών