Παρακολούθηση της κατάστασης ενός διακόπτη (Digital Read Serial) - Arduino Basics

Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων





Αυτά τα βασικά στοιχεία του Arduino συζητούν τη μέθοδο εφαρμογής ενός κώδικα μέσω του οποίου η κατάσταση ON ή OFF ενός εξωτερικού κουμπιού θα μπορούσε να διαβάζεται ή να παρακολουθείται μέσα στο Arduino.

Digital Read Serial

Εδώ μαθαίνουμε μέσω ενός παραδείγματος πώς να παρακολουθούμε την κατάσταση ενός διακόπτη εκτελώντας σειριακή επικοινωνία σε ολόκληρο το Arduino και τον υπολογιστή σας μέσω USB.



Πέραν του Arduino Board σας, θα χρειαστείτε τα ακόλουθα βασικά στοιχεία:

Σκεύη, εξαρτήματα

Ένας στιγμιαίος διακόπτης, ένα κουμπί ή ένας διακόπτης push-to-ON



Αντίσταση 10k, 1/4 watt ohm

ψωμί
συνδέσεις καλωδίων σύνδεσης ή βραχυκυκλωτήρα.

Λειτουργία κυκλώματος

Η λειτουργία μπορεί να γίνει με τα ακόλουθα βήματα:

Πάρτε 3 κομμάτια καλωδίων βραχυκυκλώματος και συνδέστε τα με την πλακέτα Arduino. Δύο από τα καλώδια, κόκκινο και μαύρο, πηγαίνουν στις δύο μεγάλες κάθετες σειρές στο πλάι της πλακέτας ψωμιού που γίνονται τα καλώδια τροφοδοσίας του πίνακα για να μεταφέρουν το απαιτείται 5V DC στον πίνακα.

Το τρίτο καλώδιο χρησιμοποιείται για τη σύνδεση του ψηφιακού πείρου 2 σε ένα από τα καλώδια του διακόπτη push-to-ON.

Αυτό το συγκεκριμένο καλώδιο του κουμπιού συνδέεται επίσης με μια αντίσταση 10k προς την αρνητική ράγα τροφοδοσίας ή τη γείωση. Ο άλλος ελεύθερος αγωγός του διακόπτη συνδέεται με το θετικό τροφοδοτικό 5 volt.

Με τις παραπάνω συνδέσεις που γίνονται, ο διακόπτης εναλλάσσεται ή εκτελεί διπλή δράση στο κύκλωμα όταν του δοθεί ώθηση.

Κανονικά όταν ο διακόπτης βρίσκεται σε αποσυνδεδεμένη θέση, τα δύο καλώδια παραμένουν απομονωμένα, έτσι ώστε ο πείρος που είναι συνδεδεμένος με τη γείωση μέσω της αντίστασης προς τα κάτω να αποδίδει χαμηλό ή λογικό επίπεδο 0.

Στην πιεσμένη κατάσταση, ο διακόπτης εκτελεί μια στιγμιαία γεφύρωση των δύο καλωδίων του, έτσι ώστε τα καλώδια του να υποβάλλονται σε + 5 βολτ, καθιστώντας ένα επίπεδο ΥΨΗΛΟ ή λογική 1.

Η απομόνωση των ψηφιακών καρφίτσες εισόδου / εξόδου από τα υπόλοιπα πράγματα, θα μπορούσε να αναγκάσει τη λυχνία LED να σβήσει και να προκαλέσει ακανόνιστη αναλαμπή. Αυτό οφείλεται στο γεγονός ότι η είσοδος δεν αποδίδεται σε τίποτα ή διατηρείται σε «κρεμαστή» θέση - που σημαίνει ότι δεν έχει οριστεί σε καμία συγκεκριμένη λογική, ούτε υψηλή ούτε χαμηλή (+ 5V ή 0V), αυτός είναι ο λόγος για τον οποίο χρησιμοποιούμε pull-down αντίσταση με το διακόπτη.

Σχηματικός

Κατανόηση του κώδικα

Στο παρακάτω πρόγραμμα, ξεκινάμε με σειριακή επικοινωνία στη λειτουργία εγκατάστασης με ρυθμό 9600 bit δεδομένων ανά δευτερόλεπτο, αυτό ξεκινά μεταξύ της πλακέτας Arduino και του συνδεδεμένου υπολογιστή: Serial.begin (9600)

Στο επόμενο βήμα ενεργοποιούμε τον ψηφιακό ακροδέκτη 2, τον ακροδέκτη που θα ήταν υπεύθυνος για την έξοδο με το διακόπτη ώθησης ως είσοδο: pinMode (2, INPUT) Αυτό ολοκληρώνει την «εγκατάσταση» μας, τώρα πλέουμε στον κύριο βρόχο του κώδικα μας .

Εδώ πατώντας το μπουτόν, επιτρέπεται να περάσει 5 βολτ από το κύκλωμα μας, ενώ ο πείρος εισόδου συνδέεται με τη γείωση μέσω της αντίστασης 10-κιλόμ όταν είναι σε κατάσταση μη συμπίεσης.

Το παραπάνω είναι αυτό που ονομάζουμε ψηφιακή είσοδο, η οποία αναφέρεται σε μια κατάσταση όπου ο διακόπτης μπορεί να βρίσκεται μόνο σε μια συγκεκριμένη κατάσταση είτε σε κατάσταση ενεργοποίησης (αποδεκτή από το Arduino ως «1» ή LOGIC HIGH) είτε σε κατάσταση εκτός λειτουργίας (οπτικοποιείται από το Arduino ως «0», ή LOGIC LOW), χωρίς κανένα άλλο απροσδιόριστο sates μεταξύ τους.

Η θεμελιώδης ενέργεια που πρέπει να εκτελέσουμε στον κύριο βρόχο του προγράμματος είναι να εφαρμόσουμε μια μεταβλητή για τη διατήρηση των πληροφοριών στη θέση τους που έχουν σταλεί μέσω του κουμπιού.

Όπως συζητήθηκε παραπάνω με τα σήματα να έχουν τη μορφή είτε «1» είτε «0», εδώ χρησιμοποιούμε έναν τύπο δεδομένων int. Μπορούμε να ονομάσουμε αυτήν τη μεταβλητή ως sensorValue και να την διορθώσουμε ώστε να αντιστοιχεί σε όλα όσα διαβάζονται στον ψηφιακό πείρο 2. Όλα αυτά μπορούν να επιτευχθούν μέσω μιας γραμμής κώδικα:

int sensorValue = digitalRead (2) Μόλις το Arduino διαβάσει την είσοδο, εκτυπώστε το ξανά στον υπολογιστή με τη μορφή δεκαδικής τιμής.

Αυτό μπορεί να εφαρμοστεί με τη βοήθεια της εντολής Serial.println () στην τελική γραμμή του κώδικα: Serial.println (sensorValue)

Μετά από αυτό, κάθε φορά που ξεκινά το Serial Monitor στον τομέα Arduino, θα δούμε μια αλυσίδα «0» κατά τη διάρκεια του κουμπιού είναι ανοικτή θέση και αλυσίδες 1 σε περίπτωση που το κουμπί διατηρείται σε κλειστή κατάσταση.

/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the serial monitor
This example code is in the public domain.
*/
// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2

// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600)
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT)
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton)
// print out the state of the button:
Serial.println(buttonState)
delay(1) // delay in between reads for stability
}




Προηγούμενο: Προσαρμοσμένος ελεγκτής ροής νερού με κύκλωμα χρονοδιακόπτη Επόμενο: Μετατροπή αναλογικού σε ψηφιακό (Αναλογική σειρά ανάγνωσης) - Βασικά στοιχεία Arduino