Page 35

delay()

Σταματά την εκτέλεση του προγράμματος για όσο χρόνο (σε χιλιοστά του δευτερολέπτου) ορίζει η παράμετρός της. (Υπάρχουν 1.000 χιλιοστά σε κάθε δευτερόλεπτο.) Η σύνταξη της εντολής είναι: delay(ms)

όπου, ms είναι ο αριθμός των χιλιοστών του δευτερολέπτου που θα διακοπεί η εκτέλεση του προγράμματος (unsigned long).

Η delay() δεν επιστρέφει καμία τιμή.

Παράδειγμα int ledPin = 13; // ένα LED έχει συνδεθεί στην ψηφιακή // ακίδα 13

void setup() { pinMode(ledPin, OUTPUT); // ορίζει την ψηφιακή ακίδα // σαν εξόδου } void loop() { digitalWrite(ledPin, HIGH); // ανάβει το delay(1000); // περιμένει digitalWrite(ledPin, LOW); // σβήνει το delay(1000); // περιμένει }

LED ένα δευτερόλεπτο LED ένα δευτερόλεπτο

Ανακοπή

Οσο εύκολο είναι να αναβοσβήσουμε ένα LED με τη λειτουργία delay() - και πολλά προγράμματα τη χρησιμοποιούν για μικρές καθυστερήσεις, - η χρήση της delay() σε ένα πρόγραμμα έχει σημαντικά μειονεκτήματα. Καμία ανάγνωση από τους αισθητήρες, κανένας μαθηματικός υπολογισμός ή χειρισμός ακίδας δε μπορεί να γίνει όσο διαρκεί η ανακοπή εκτέλεσης που δημιουργεί η delay(). Για εναλλακτικές προσεγγίσεις του ελέγχου του προγράμματός μας και των χρονικών καθυστερήσεων μπορεί να χρησιμοποιηθεί η συνάρτηση millis(). Πολλοί προγραμματιστές συνήθως αποφεύγουν τη χρήση της delay() για τον χρονισμό γεγονότων για διάρκειες μεγαλύτερες των 10 χιλιοστών του δευτερολέπτου εκτός και αν ο κώδικας είναι πολύ απλός.

Πάντως, όσο η λειτουργία delay() έχει ανακόψει την εκτέλεση του προγράμματος, κάποια πράγματα συνεχίζουν να εξελίσσονται επειδή αυτή η λειτουργία δεν απενεργοποιεί τις διακοπές (interrupts). Η σειριακή επικοινωνία που εμφανίζεται στο pin RX καταγράφεται, η ευροπαλμική διαμόρφωση (PWM) της analogWrite() διατηρείται, και οι διακοπές (interrupts) θα δουλέψουν όπως θα έπρεπε.

41

Σημειώσεις arduino kales  
Σημειώσεις arduino kales  
Advertisement