Ημέρα 5 - Ενότητα 4 - Παίζοντας με κουμπιά

Ιστότοπος: ΕΛ/ΛΑΚ Moodle
Μάθημα: Εκπαιδευτική Ρομποτική - 3D Εκτυπώσεις - Διαδίκτυο των Πραγμάτων
Βιβλίο: Ημέρα 5 - Ενότητα 4 - Παίζοντας με κουμπιά
Εκτυπώθηκε από: Guest user
Ημερομηνία: Παρασκευή, 3 Μαΐου 2024, 9:02 AM

Περιγραφή

Μετά την ολοκλήρωση αυτής της ενότητας ως εκπαιδευόμενοι θα μπορείτε να:

  • περιγράψετε και να χρησιμοποιήσετε κουμπιά σε κυκλώματα
  • δημιουργήσετε ένα κύκλωμα για να ενεργοποιήσετε μια λυχνία LED όταν πιέζετε ένα κουμπί
  • δημιουργήσετε τον κώδικα για το παραπάνω κύκλωμα
  • περιγράψετε τη χρήση σχολίων μέσα σε ένα πρόγραμμα Arduino IDE
  • περιγράψετε το δυαδικό σύστημα και να αντιστοιχίσετε δυαδικούς σε δεκαδικούς αριθμούς και αντίστροφα
  • συνδυάσετε πολλά LED και κουμπιά για να δημιουργήσετε δυαδικές ακολουθίες

Πάτα το κουμπί...

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

Σε αυτό το παράδειγμα θα προσπαθήσουμε να ανάβουμε ένα LED κάθε φορά που πιέζουμε ένα κουμπί πίεσης. Ονομάζεται έτσι, επειδή συνδέονται τα πόδια του κουμπιού όταν κάποιος το πιέζει για μια στιγμή και αφαιρεί τη σύνδεση όταν το κουμπί δεν πιέζεται πια.


http://thumbs3.ebaystatic.com/d/l225/m/mdqVKBu1On7rLNet7EIPtHw.jpg

Τα ηλεκτρονικά στοιχεία θα συνδεθούν στο breadboard όπως φαίνεται παρακάτω:


Παρατηρούμε εδώ ότι χρησιμοποιούμε το D0 (επαφή 16) ως επαφή εισόδου για να δέχεται εντολές από το κουμπί και το D1 (επαφή 5) ως μία επαφή εξόδου για την αποστολή σημάτων προς το LED για το αναβο-σβήσιμο!

Στο κύκλωμά μας, όταν το κουμπί δεν πιέζεται, δεν υπάρχει σύνδεση μεταξύ των δύο ποδιών του κουμπιού, οπότε η είσοδος συνδέεται με τη γείωση και διαβάζουμε ένα LOW. Όταν το κουμπί είναι πατημένο, κάνει μια σύνδεση μεταξύ των δύο ποδιών του, συνδέοντας τον ακροδέκτη στα 3.3 βολτ, έτσι ώστε να διαβάζουμε ένα HIGH.

Όσον αφορά τον κώδικα για τα παραπάνω, θα φαίνεται όπως παρακάτω:

int ledPin = 5; // choose the pin for the LED
int inPin = 16;   // choose the input pin (for a pushbutton)
int val = 0;     // variable for reading the pin status

void setup() {
  pinMode(ledPin, OUTPUT);  // declare LED as output
  pinMode(inPin, INPUT);    // declare pushbutton as input
}

void loop(){
  val = digitalRead(inPin);  // read input value
  if (val == LOW) {         // check if the input is LOW (button released)
    digitalWrite(ledPin, LOW);  // turn LED OFF
  } else {
    digitalWrite(ledPin, HIGH);  // turn LED ON
  }
}

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

Μια άλλη νέα δομή που παρατηρούμε στον κώδικα μας είναι η δομή IF. Με αυτή, μπορούμε να αποφασίσουμε ποιες ενέργειες επιλέγουμε με βάση μια συνθήκη. Έτσι στο παράδειγμα μας, πρώτα διαβάσαμε την κατάσταση του ακροδέκτη 16 και αν είναι ΧΑΜΗΛΗ (δεν πατιέται) τότε σβήνουμε τη λυχνία LED (ακροδέκτης 5). Εάν όχι, ανάβουμε τη λυχνία LED.

Αντιγράψτε λοιπόν τον κώδικα στο Arduino IDE, ανεβάστε τον στο NodeMCU και.....παίξτε με το κουμπί!

Υπάρχουν 10 είδη ανθρώπων....

"Υπάρχουν 10 είδη ανθρώπων, εκείνοι που καταλαβαίνουν το δυαδικό σύστημα και εκείνοι που δεν το καταλαβαίνουν."

Αυττό είναι ένα παλιό αστείο για προγραμματιστές. Μάλλον θα αναρωτιέστε γιατί 10 και όχι 2... Η απάντηση είναι ότι ο αριθμός 10 στο δυαδικό σύστημα (εκείνο που αντιλαμβάνονται και διαχειρίζονται οι υπολογιστές) πράγματι αναπαριστά τον αριθμό 2 του δεκαδικού συστήματος που χρησιμοποιούμε εμείς οι άνθρωποι.

Παρακολουθήστε το βίντεο για να καταλάβετε πώς λειτουργεί:

Ο ακόλουθος πίνακας δείχνει πώς ταιριάζουν οι αριθμοί:


Τώρα, ας δημιουργήσουμε ένα παιχνίδι με το NodeMCU, τρία LEDs και τρία κουμπιά. Συνδέστε τα στοιχεία στο breadboard βασιζόμενοι στο ακόλουθο διάγραμμα:

ft
Κάθε φορά που πατάμε ένα κουμπί, ανάβει η αντίστοιχη λυχνία LED. Έτσι, μπορούμε να δημιουργήσουμε οποιοδήποτε συνδυασμό ενεργοποιημένων και μη ενεργοποιημένων LED (ON και OFF).
Ο κώδικας για το παιχνίδι είναι ο ακόλουθος:

int led1Pin = 14;
int led2Pin = 2;
int led3Pin = 5;
int in1Pin = 10;
int in2Pin = 16;
int in3Pin = 4; 
int val = 0;  

void setup() {
  pinMode(led1Pin, OUTPUT); 
  pinMode(led2Pin, OUTPUT);
  pinMode(led3Pin, OUTPUT);
  pinMode(in1Pin, INPUT);
  pinMode(in2Pin, INPUT);
  pinMode(in3Pin, INPUT);   
}

void loop(){
  val = digitalRead(in1Pin); 
  if (val == LOW) {        
    digitalWrite(led1Pin, LOW); 
  } else {
    digitalWrite(led1Pin, HIGH); 
  }

  val = digitalRead(in2Pin); 
  if (val == LOW) {        
    digitalWrite(led2Pin, LOW); 
  } else {
    digitalWrite(led2Pin, HIGH); 
  }

  val = digitalRead(in3Pin); 
  if (val == LOW) {        
    digitalWrite(led3Pin, LOW); 
  } else {
    digitalWrite(led3Pin, HIGH); 
  }

}


Αντιγράψτε τον παραπάνω κώδικα, επικολλήστε τον στο Arduino IDE και ανεβάστε τον στο NodeMCU. Στη συνέχεια προσπαθήστε τα εξής: Δημιουργήστε δυαδικούς αριθμούς από το 0 έως το 7 χρησιμοποιώντας τα τρία κουμπιά. Μπορείτε να πάρετε βοήθειες από τον παραπάνω πίνακα. Για παράδειγμα ο αριθμός 5 αναπαρίσταται από την εξής σειρά: 1st LED ON, 2nd LED OFF και 3rd LED ON.

Δοκιμάστε το λοιπόν. Στη συνέχεια, ζητήστε από τους άλλους μαθητές να μαντέψουν τους αριθμούς που δημιουργείτε και μην ξεχνάτε: Διασκεδάστε με τον προγραμματισμό!