Δομές Ελέγχου Γλωσσών: Κρατήστε το Arduino σας υπό έλεγχο

Leap Motion SDK (Ενδέχεται 2019).

$config[ads_text] not found
Anonim

Δομές Ελέγχου Γλωσσών: Κρατήστε το Arduino σας υπό έλεγχο


Κάντε τα προγράμματα Arduino πιο ευέλικτα μάθετε πώς να χρησιμοποιείτε τις δομές ελέγχου του Arduino.

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

  • αν
  • αν … αλλιώς
  • Για
  • διακόπτη
  • ενώ
  • κάνετε … ενώ
  • Διακοπή
  • να συνεχίσει
  • ΕΠΙΣΤΡΟΦΗ
  • παω σε

Σε αυτό το σεμινάριο, θα συζητήσουμε τις πιο συχνά χρησιμοποιούμενες δομές ελέγχου:

  • για βρόχο
  • διακόπτη
  • αν-αλλιώς
  • ενώ βρόχος


Υποχρεωτικές δηλώσεις

Αν οι δηλώσεις και οι δηλώσεις ονομάζονται δηλώσεις υπό όρους . Αξιολογούν μια συγκεκριμένη συνθήκη και εκτελούν μια σειρά δηλώσεων σε παρενθέσεις εάν η συνθήκη είναι αληθής {}. Ακολουθεί ένα παράδειγμα:

 αν (pin_b == ΧΑΜΗΛΗ) {digitalWrite (ledPin, HIGH); // Αυτό δείχνει την ενδεικτική λυχνία LED να ανάψει} 

Η εντολή if αποτελείται από τη λέξη "if" που ακολουθείται από μια προϋπόθεση σε παρενθέσεις. Εάν η συνθήκη είναι αληθής, τότε θα εκτελούνται οι δηλώσεις μεταξύ των παρενθέσεων που ακολουθούν. Σε αυτή την περίπτωση, εάν η ψηφιακή τιμή του pin_b είναι LOW, τότε το πρόγραμμα θα θέσει την τιμή του ledPin σε HIGH. Οι δηλώσεις μεταξύ των παρενθέσεων εκτελούνται μόνο μία φορά.

Ο βρόχος while είναι παρόμοιος με την εντολή if, αλλά στην περίπτωση αυτή, οι δηλώσεις μεταξύ των παρενθέσεων εκτελούνται ξανά και ξανά μέχρι η κατάσταση να γίνει ψευδής. Ακολουθεί ένα παράδειγμα:

 ενώ (pin_0 == ΧΑΜΗΛΗ) { 
ψηφιακήWrite (ledPin, HIGH);
καθυστέρηση (100).
ψηφιακήWrite (ledPin, LOW);
καθυστέρηση (100).
switchValue = digitalRead (pin_0); // Αυτός αποθηκεύει μια νέα τιμή στη μεταβλητή switchValue
}}

Σε αυτό το παράδειγμα, το πρόγραμμα θα αλλάξει την κατάσταση της λυχνίας (δηλαδή αναβοσβήνει) έως ότου ένας χρήστης πιέσει έναν διακόπτη προκαλώντας την ψηφιακή τιμή στο pin_0 να πάει ΥΨΗΛΟ.

Πείραμα 1: FOR Loop

Σε αυτό το πείραμα, παρουσιάζουμε τον τρόπο χρήσης ενός 'για βρόχο' για να αλλάξετε τη φωτεινότητα ενός LED.

Απαιτείται υλικό

  • 1 χ Arduino Mega2560
  • 1 x breadboard
  • 1 x LED
  • 1 Χ 220 Ω αντίσταση
  • 2 x καλώδια βραχυκύκλωσης

Διάγραμμα συνδεσμολογίας

Σε αυτό το απλό κύκλωμα, ένα LED είναι συνδεδεμένο στον ακροδέκτη 2 του Arduino. Για να αλλάξετε τη φωτεινότητα της λυχνίας LED, αλλάζουμε τον κύκλο λειτουργίας της εξόδου σήματος διαμόρφωσης πλάτους παλμού (PWM) στον ακροδέκτη 2. Το πρόγραμμα χρησιμοποιεί ένα για βρόχο για τη γροθιά να πηγαίνει από αχνό σε φωτεινό και ένα δευτερόλεπτο για να πάει από φωτεινό σε αχνό.


Κωδικός: Αλλαγή φωτεινότητας με χρήση βρόχου

 // changing brightness using for loop const int pwm = 8 ; int i ; void setup() { pinMode(pwm, OUTPUT); } void loop() { /* FOR LOOP SYNTAX for(initialization ; condition ; increment) { CODE } */ for(i=0 ; i <256 ; i++ ) { analogWrite(pwm, i) ; // for loop from low to High delay(10); } for(i=255 ; i> 0 ; i-- ) { analogWrite(pwm, i) ; // for loop from high to low delay(10); } } 

Λήψη κώδικα

Πείραμα 2: Υποχρεωτικές δηλώσεις

Σε αυτό το πείραμα, θα ενεργοποιήσουμε ή θα απενεργοποιήσουμε δύο LED ανάλογα με το περιεχόμενο ενός μηνύματος που αποστέλλεται σειριακά στο Arduino. Το πρόγραμμα χρησιμοποιεί τις ακόλουθες δομές ελέγχου:

  • Δήλωση διακόπτη
  • Εάν-αλλιώς αν- αλλιώς
  • Ενώ Loop

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

Ο βρόχος while είναι διαφορετικός από τον βρόχο for με την έννοια ότι δεν έχει περιοριστικό αριθμό βρόχων. Ο μόνος τρόπος για να βγείτε από το βρόχο while είναι να μην ικανοποιήσετε την κατάσταση μέσα στην παρένθεση.

Απαιτείται υλικό

  • 1 χ Arduino Mega2560
  • 1 x breadboard
  • 2 x LED
  • 2 X 220 ohm αντίσταση
  • 3 σύρματα βραχυκυκλωμάτων


Διάγραμμα συνδεσμολογίας

Οι δύο λυχνίες LED συνδέονται με δύο ακροδέκτες εξόδου Arduino και το Arduino τις ενεργοποιεί ή απενεργοποιεί χρησιμοποιώντας δηλώσεις υπό όρους. Υπάρχουν τέσσερις διαφορετικές καταστάσεις:

  1. Εάν τα σειριακά δεδομένα == 1, μόνο η πράσινη λυχνία LED θα ανάψει.
  2. Εάν τα σειριακά δεδομένα == 2, θα ενεργοποιηθεί μόνο η κίτρινη λυχνία LED.
  3. Εάν τα σειριακά δεδομένα == 3, θα ανάψουν και τα δύο LED.
  4. Αν τα σειριακά δεδομένα ισούνται με οποιαδήποτε άλλη τιμή, οι λυχνίες LED θα σβήσουν.


Κωδικός 1: Δήλωση διακόπτη

 // Use of Switch Structure const int green = 8; const int yellow = 9; char i; void setup() { pinMode(green, OUTPUT); //setting pins output pinMode(yellow, OUTPUT); Serial.begin(9600); } void loop() { i = Serial.read(); // To serially send data to switch statements Serial.println(i); delay(50) ; switch(i) //Typical switch structure { case '1': //Condition for Green LED digitalWrite(green, HIGH); digitalWrite(yellow, LOW); delay(350); break; case '2': //Condition for Yellow LED digitalWrite(green, LOW); digitalWrite(yellow, HIGH); delay(350); break; case '3': //Condition for Both LED digitalWrite(green, HIGH); digitalWrite(yellow, HIGH); delay(350); break; default: //Leds are off digitalWrite(green, LOW); digitalWrite(yellow, LOW); break; } } 

Λήψη κώδικα


Κωδικός 2: Χρήση καταστάσεων if-Else

 // Use of If - else statements const int green = 8; const int yellow = 9; char i ; void setup() { pinMode(green, OUTPUT); //setting pins output pinMode(yellow, OUTPUT); Serial.begin(9600) ; } void loop() { i = Serial.read(); // To serially send data to switch statements Serial.println(i); delay(50); if(i=='1') { digitalWrite(green, HIGH); digitalWrite(yellow, LOW); delay(350); } else if(i=='2') { digitalWrite(green, LOW); digitalWrite(yellow, HIGH); delay(350); } else if(i=='3') { digitalWrite(green, HIGH); digitalWrite(yellow, HIGH); delay(350); } else { digitalWrite(green, LOW) ; digitalWrite(yellow, LOW) ; } } 

Λήψη κώδικα


Κωδικός 3: Χρήση ενώ Loops

 // Use of while Loop const int green = 8 ; const int yellow = 9 ; char i ; void setup() { pinMode(green, OUTPUT) ; //setting pins output pinMode(yellow, OUTPUT) ; Serial.begin(9600) ; } void loop() { i = Serial.read() ; // To serially send data to switch statements Serial.println(i) ; delay(50) ; digitalWrite(green, LOW) ; digitalWrite(yellow, LOW) ; while(i=='1') { digitalWrite(green, HIGH) ; digitalWrite(yellow, LOW) ; i = Serial.read() ; Serial.println(i) ; delay(350) ; } while(i=='2') { digitalWrite(green, LOW) ; digitalWrite(yellow, HIGH) ; i = Serial.read() ; Serial.println(i) ; delay(350) ; } while(i=='3') { digitalWrite(green, HIGH) ; digitalWrite(yellow, HIGH) ; i = Serial.read() ; Serial.println(i) ; delay(350) ; } } 

Λήψη κώδικα


Βίντεο



Δώστε αυτό το έργο μια δοκιμή για τον εαυτό σας! Αποκτήστε το BOM.