Στην συνέχεια θα γράψουμε τον κώδικα που θα κάνει το LED που βρίσκεται ενσωματωμένο στην πλακέτα Arduino και συνδεδεμένο στον ακροδέκτη 13 να αναβοσβήνει περιοδικά.
Συνδέουμε το Arduino στην πόρτα USB του προσωπικού υπολογιστή μας. Επιλέγουμε την σωστή πλακέτα στο περιβάλλον IDE επιλέγοντας από την επιλογή μενού: Εργαλεία > Πλακέτα και στη συνέχεια επιλέγουμε την σωστή θύρα με την επιλογή μενού: Εργαλεία > Θύρα. Σαν αρχή ανεβάζουμε τον ακόλουθο κώδικα και μετά θα εξηγήσουμε πως δουλεύει.
/*
Arduino Blink LED sketch
by Yiannis Plevritakis
*/
void setup()
{
pinMode(13, OUTPUT); set dogital pin 13 aw output.
}
void loop()
{
digitWrite(13, HIGH); // turn on digital pin 13
delay(1000); //pause for one second
digitalWrite(13, LOW); // turn off digital pin 13
delay(1000); //pause for one second
}
Πριν το τρέξουμε θα χρειαστεί (θα μας ζητηθεί) να το αποθηκεύσουμε: Αρχείο > Αποθήκευση ως… Εισάγουμε ένα όνομα για τον κώδικα και μετά κάνουμε κλικ στο ΟK.
Για να δούμε αν έχουμε κάνει λάθη ή όχι, κάνουμε κλικ στο εικονίδιο “επικύρωση”. Αν δεν βγάλει μήνυμα λάθους μπορούμε να πατήσουμε το εικονίδιο “ανέβασμα” για να ανεβάσουμε τον κώδικα στο Arduino. Αν δεν μπορεί να ανέβει ο κώδικας,τσεκάρουμε από την Εργαλεία>Πλακέτα, ότι έχουμε επιλέξει την σωστή πακέτα και από την επιλογή θύρα>COM1 έχουμε επιλέξει τη σωστή θύρα σύνδεσης.
Ας δούμε πως δουλεύει ο κώδικας – εισαγωγή σχολίων
Τα σχόλια είναι κείμενο που προσθέτουν σημειώσεις ή επεξήγηση πάνω στο κώδικα που γράφουμε. Μόλις το IDE συναντήσει σχόλια στον κώδικα απλά τα αγνοεί.
Για να προσθέσουμε σχόλια στο πρόγραμμα απλά εισάγουμε διπλή πλάγια κάθετο στην αρχή της γραμμής σχολίων. Με αυτό τον τρόπο, το IDE αγνοεί τη γραμμή κειμένου από τη διπλή κάθετο ως το τέλος της γραμμής.
Παράδειγμα: pinMode(13, OUTPUT); // set digital pin 13 as output.
Για να εισάγουμε σχόλια που περιλαμβάνουν κείμενο περισσότερο της μιας γραμμής, εισάγουμε τους χαρακτήρες /* στην αρχή του σχολείου και στο τέλος των σχολίων τοποθετούμε τους χαρακτήρες */
/*
Arduino Blink LED sketch
by Yiannis created 25/6/20
*/
Συναρτήσεις που αποτελείται ένα sketch Arduino.
Ο κάθε κώδικας που γράφουμε για το Arduino βασικά αποτελείται από δυο συναρτήσεις τις εξής: void setup() { … } και την void loop() { … }. Στην συνάρτηση setup() οι εντολές μέσα στο μπλοκ εκτελούνται μια φορά, ενώ στη συνάρτηση loop() οι εντολές μέσα στο μπλοκ εκτελούνται επαναλαμβανόμενα ξανά και ξανά.
Στο μπλοκ κώδικα:
void setup()
{
pinMode(13, OUTPUT); // set dogital pin 13 as output.
}
Η εντολή: pinMode(13, OUTPUT); θέτει το αναφερόμενο πιν Ι/Ο σε κατάσταση εισόδου ή εξόδου. Είναι μια συνάρτηση ενσωματωμένη στο περιβάλλον IDE, η οποία παίρνει δυο ορίσματα: το πρώτο είναι ο αναφερόμενος αριθμός του πιν και το δεύτερο είναι η σταθερά INPUT ή OUTPUT. Με την τιμή INPUT το πιν διαμορφώνεται σαν είσοδος ενώ με την τιμή OUTPUT διαμορφώνεται σαν έξοδος. Στο δικό μας παράδειγμα κώδικα, ο ακροδέκτης 13 διαμορφώνεται σαν έξοδος.
Σημείωση: στο τέλος μιας εντολής, είναι υποχρεωτική η εισαγωγή ενός ελληνικού ερωτηματικού. Δεν πρέπει να ξεχνάμε ότι κάθε εντολή σε ένα κώδικα Arduino τελειώνει με ένα ελληνικό ερωτηματικό.
Το μπλοκ εντολών στο εσωτερικό της συνάρτησης void loop(){ } επαναλαμβάνεται ξανά και ξανά:
void loop()
{
digitWrite(13, HIGH); // turn on digital pin 13
delay(1000); //pause for one second
digitalWrite(13, LOW); // turn off digital pin 13
delay(1000); //pause for one second
}
Η συνάρτηση: digitalWrite(13, HIGH); παίρνει δυο ορίσματα, τον αναφερόμενο αριθμό του πιν, και το δεύτερο την σταθερά LOW ή HIGH. Με την τιμή LOW τίθεται το αναφερόμενο πιν σε κατάσταση 0V ενώ με την τιμή HIGH τίθεται το πιν σε κατάσταση 5V. Στο παράδειγμα μας ο ακροδέκτης 13 τίθεται σε λογικό HIGH (δηλ. 5V)με αποτέλεσμα να ανάψει το LED του Arduino που είναι εσωτερικά συνδεμένο με το πίν 13.
Η συνάρτηση: delay(1000); προκαλεί παύση ίση με 1000ms = 1s. Δηλαδή έχουμε παύση σε ms τόσα όσα είναι το όρισμα της συνάρτησης delay(…) .
Η συνάρτηση: digitalWrite(13, LOW); σβήνει το εσωτερικό LED. Μετά ακολουθεί μια παύση ίση με 1000ms με την εντολή: delay(1000);
Αυτό το μπλοκ κώδικα στον επαναλαμβανόμενο βρόγχο loop() εκτελείται κατ’ επανάληψη που έχει σαν αποτέλεσμα το LED να αναβοσβήνει.
Επικύρωση του κώδικα σας
Πριν προχωρήσουμε στην επικύρωση του κώδικα μας, ελέγχουμε αν όλα όσα γράψαμε είναι σύμφωνα όπως το Arduino καταλαβαίνει. Για να επικυρώσουμε το πρόγραμμα μας κάνουμε κλικ στο εικονίδιο της επικύρωσης και περιμένουμε για λίγο.
Κατά τη διάρκεια της επικύρωσης παρατηρούμε το παράθυρο μηνυμάτων. Αν εμφανιστεί το μήνυμα: “Ολοκλήρωση μεταγλώττισης” αυτό σημαίνει ότι ο κώδικας είναι επικυρωμένος και είναι έτοιμος να φορτωθεί στο Arduino. Πολλές φορές στον κώδικα Arduino που γράφουμε εμφανίζονται λάθη με αποτέλεσμα να βγαίνουν «κόκκινα μηνύματα» στο παράθυρο μηνυμάτων.
Όμως τι γίνεται αν υπάρχει προγραμματιστικό λάθος στον κώδικα; Για παράδειγμα αν αφαιρέσουμε το ελληνικό ερωτηματικό πριν από την τελευταία αγκύλη, τότε κατά την επικύρωση θα εμφανιστεί μήνυμα λάθους στην περιοχή μηνυμάτων και συγκεκριμένα το εξής: “expected ‘;’ before ‘}’ token”. Το μήνυμα λάθους περιγράφει το πρόβλημα και δίνει μια εκτίμηση για το που βρίσκεται.
Για να ανέβει στο Arduino ο κώδικας πρέπει να είναι επικυρωμένος. Συγκεκριμένα, κάνοντας κλικ στο εικονίδιο «επικύρωση» και όταν δεν υπάρχουν λάθη, θα εμφανιστεί μήνυμα άσπρου χρώματος στο παράθυρο μηνυμάτων. Αν δεν είναι επικυρωμένος ο κώδικας σημαίνει ότι υπάρχουν προγραμματιστικά λάθη, που περιγράφονται στην περιοχή μηνυμάτων με κόκκινο χρώμα.
Ανέβασμα του κώδικα σας στη πλακέτα Arduino
Μετά που καταφέρουμε να επικυρώσουμε τον κώδικα και αφού πρώτα τον αποθηκεύσουμε, μπορούμε να τον ανεβάσουμε στη πλακέτα Arduino κάνοντας κλίκ στο εικονίδιο “ανέβασμα” ή από την επιλογή μενού: Σχέδιο > Ανέβασμα. Μάλιστα το IDE επικυρώνει ξανά τον κώδικα μας και μετά τον ανεβάζει στο Arduino που είναι συνδεμένο στην θήρα USB. Ελέγχουμε από το μενού: Εργαλεία > Πλακέτα αν είναι επιλεγμένος ο σωστός τύπος Arduino και από το μενού Εργαλεία > Θύρα αν το Arduino είναι συνδεμένο στη σωστή θύρα.
Αν ο κώδικας μας καταφέρει να ανέβει στο Arduino, δεν σημαίνει ότι ο κώδικας μας δεν έχει λάθη. Για παράδειγμα, αν σε ένα ακροδέκτη π.χ. πιν 10 έχουμε συνδέσει μια πηγή τάσης 5V και με τον κώδικα μας κατά λάθος κάνουνε αυτό τον ακροδέκτη σαν έξοδο 0V π.χ. με την εντολή digitalWrite(10, LOW); η οποία είναι προγραμματιστικά σωστή τότε θα έχουμε βραχυκύκλωμα με την καταστροφή αυτού του πιν.