Περιγραφή
Διακόπτει την εκτέλεση του προγράμματος για το χρονικό διάστημα (σε χιλιοστά του δευτερολέπτου) που καθορίζεται ως παράμετρος. Σημειωτέον ότι υπάρχουν 1.000 χιλιοστά του δευτερολέπτου σε ένα δευτερόλεπτο.
Σύνταξη
delay(ms)
Παράμετροι
ms: ο αριθμός των χιλιοστών του δευτερολέπτου της διακοπής (ανυπόγραφος long).
Επιστρέφει
Τίποτα
Παράδειγμα
int ledPin = 13; // LED connected to digital pin 13
void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}
void loop()
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}
Περιορισμός
Ενώ είναι εύκολο να δημιουργήσετε ένα LED που αναβοσβήνει με τη βοήθεια της συνάρτησης delay(), και τα περισσότερα προγράμματα χρησιμοποιούν μικρές καθυστερήσεις για αυτού του είδους εργασίες όπως είναι ο διακόπτης αποκλυδωνισμού, ωστόσο η χρήση του delay() σε ένα πρόγραμμα έχει σημαντικά μειονεκτήματα. Έτσι κατά την διάρκεια της συνάρτησης delay(), δεν μπορείτε να κάνετε ανάγνωση των αισθητηρίων, να εκτελέσετε μαθηματικούς υπολογισμούς ή να πραγματοποιήσετε χειραγώγηση των ακροδεκτών. Συνεπώς, με άλλα λόγια αυτή η συνάρτηση, φέρνει όλη σχεδόν την υπόλοιπη δραστηριότητα σε ακινησία. Συνήθως οι περισσότεροι μορφωμένοι προγραμματιστές, αποφεύγουν την χρησιμοποίηση της delay() για την χρονομέτρηση γεγονότων μεγαλύτερων από τα 10 χιλιοστά του δευτερολέπτου, εκτός και αν το πρόγραμμα του Arduino είναι πολύ απλό.
Ωστόσο, ορισμένα πράγματα συνεχίζουν να λειτουργούν ενώ η συνάρτηση delay() χειρίζεται το τσιπ του Atmega, διότι η συνάρτηση delay() δεν απενεργοποιεί τις διακοπές. Έτσι η σειριακή επικοινωνία που εμφανίζεται στον ακροδέκτη RX καταγράφεται, οι τιμές και οι καταστάσεις των ακροδεκτών του PWM (analogWrite) διατηρούνται και οι διακoπές θα λειτουργήσουν όπως θα έπρεπε.
Επιστροφή στην σελίδα Παραπομπές Γλώσσας
