Professional Documents
Culture Documents
Ο σκοπός της πρώτης άσκησης είναι κυρίως η εξοικείωση με το περιβάλλον προγραμματισμού του
Arduino, γι αυτό και δεν είναι ιδιαίτερα σύνθετη.
Το πρώτο βήμα είναι να “φορτώσουμε” το παράδειγμα “Blink”. Αυτό γίνεται μέσα από το περι-
βάλλον προγραμματισμού του Arduino, επιλέγοντας File → Examples → 01. Basics → Blink.
Να σημειωθεί πως, τόσο σε περιβάλλον Apple OS X,όσο και σε Microsoft Windows, οι επιλογές παραμένουν ίδιες.
Αυτό θα ανοίξει ένα νέο παράθυρο όπου θα έχει φορτωθεί ο κώδικας του παραδείγματος. Ας
εξετάσουμε τη λογική του, βήμα-προς-βήμα:
void setup()
{
pinMode(13, OUTPUT);
}
Μέσα στη συνάρτηση setup() καλούμε την pinMode(). Αυτή “ορίζει” για κάθε pin του Arduino εάν θα
χρησιμοποιηθεί ως είσοδος (INPUT) ή έξοδος (OUTPUT). Σε αυτή την περίπτωση θέλουμε να
χρησιμοποιήσουμε το pin 13 ως έξοδο.
Να υπενθυμίσουμε πως η συνάρτηση setup() καλείται και τρέχει μόνο μία φορά, τη στιγμή που θα
τροφοδοτηθεί η πλακέτα του Arduino με ρεύμα.
void loop()
{
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Μέσα στην loop(), η συνάρτηση digitalWrite() δίνει τιμή HIGH (δηλαδή τάση 5V) στο pin 13. Εν
συνεχεία, η συνάρτηση delay() “παγώνει” τον μικροελεγκτή του Arduino για 1000 χιλιοστά του
δευτερολέπτου. Καλείται ξανά η digitalWrite(), η οποία όμως αυτή τη φορά δίνει LOW (δηλαδή 0V)
στο pin 13. Τέλος, η delay(), προκαλεί ακόμα μία παύση του 1 δευτερολέπτου.
Η loop() θα συνεχίσει να εκτελείται επ’ αόριστον, έως ότου διακοπεί η τροφοδοσία του Arduino, ή
έως ότου πατηθεί το πλήκτρο “RESET”.
Επόμενο βήμα είναι να επιλέξουμε τη σωστή θύρα στην οποία είναι συνδεδεμένο το Arduino. Αυτή
θα εμφανιστεί ως COM1, COM2, κλπ στο μενού Tools → Serial Port. Εάν επιλέξετε τη λάθος
θύρα, το πρόγραμμα δε θα μπορεί να “μιλήσει” με το Arduino, και συνεπώς, δε θα μπορεί να το
προγραμματίσει.
Έπειτα επιλέγουμε File → Upload στο κεντρικό παράθυρο, ή πατάμε Ctrl + U στο το πληκτρο-
λόγιο.
Εάν υπάρχει κάποιο πρόβλημα στον κώδικα ή στον προγραμματισμό του Arduino θα εμφανιστεί
ακριβώς κάτω από τον editor:
Για το δεύτερο κομμάτι της άσκησης θέλουμε να κάνουμε τη συχνότητα που αναβοσβήνει το LED
ρυθμιζόμενη.
Για το σκοπό αυτό, θα χρειαστούμε μία ρυθμιζόμενη αντίσταση (ποτενσιόμετρο) και τη δυνατότητα
του Arduino να “διαβάζει” αναλογικές τιμές.
Η σύνδεση του ποτενσιόμετρου
είναι λίγο πιο περίπλοκη, καθώς
απαιτεί τροφοδοσία (+5V), γείωση
(GND) και ένα τρίτο σημείο (wiper)
ώστε το Arduino να διαβάσει την
διαιρεμένη τάση.
Η συνάρτηση analogRead() παίρνει ως όρισμα την αναλογική είσοδο που θέλουμε να διαβάσουμε,
και επιστρέφει έναν ακέραιο με μια τιμή 0-1023. Συνεπώς, το πρόγραμμα του Arduino θα πρέπει να
τροποποιηθεί ως εξής:
int pot_value;
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
pot_value = analogRead(A0);
digitalWrite(13, HIGH);
delay(pot_value);
digitalWrite(13, LOW);
delay(pot_value);
}
Πλέον η delay() δεν έχει ως όρισμα μια προκαθορισμένη τιμή όπως πριν αλλά την τιμή που έχει
επιστρέψει η analogRead(). Θα πρέπει γυρίζοντας το ποτενσιόμετρο να αλλάζει η συχνότητα που
αναβοσβήνει το LED.
Έπειτα, θα δοκιμάσουμε να εμφανίζουμε τις τιμές της μεταβλητής pot_value στη σειριακή οθόνη
(Serial Monitor) του Arduino.
Για την άσκηση, θα “ανοίξουμε” την σειριακή επικοινωνία με το Serial Monitor στα 9600 baud, ως
εξής:
void setup()
{
Serial.begin(9600);
// υπόλοιπος κώδικας
}
Μέσα στο loop μετά, κάθε φορά που θέλουμε να στείλουμε την τιμή που διαβάσαμε από το
ποτενσιόμετρο στο Serial Monitor, αρκεί η εντολή:
void loop() {
// υπόλοιπος κώδικας
Serial.println(pot_value);
}
Έτσι, σε κάθε επανάληψη του loop() θα εμφανίζεται η τιμή του pot_value στο Serial Monitor. Είναι
σαφές πως η συχνότητα εμφάνισης θα αλλάζει με το ποτενσιόμετρο, καθώς έτσι ρυθμίζουμε κάθε
πότε θα επαναλαμβάνεται το loop().
Έως τώρα έχουμε εξοικειωθεί αρκετά με τον προγραμματισμό του Arduino, οπότε μπορούμε να
μεταβούμε σε μία πιο σύνθετη έννοια, αυτή του PWM (pulse width modulation).
Αλλάζοντας γρήγορα την κατάσταση μίας ψηφιακής εξοδου (HIGH/LOW), η συνολική ενέργεια που
θα αντλήσει το φορτίο από το αναπτυξιακό μας θα είναι συνολικά μικρότερη, άρα θα δει μία
“προσομοιωμένη” αναλογική τάση.
Το Arduino υλοποιεί την τεχνική PWM στις ψηφιακές εξόδους με την ένδειξη “~”, οι οποίες στο
Arduino UNO είναι οι 3, 5, 6, 9, 10 και 11.
Τα push-buttons είναι πλήκτρα, που για όσο κρατιούνται πατημένα, κλείνουν κύκλωμα ανάμεσα σε
δύο (ή περισσότερες) επαφές τους. Τα χρησιμοποιούμε για να πάρουμε είσοδο από τον χρήστη του
συστήματος.
Για ανάγνωση της κατάστασης του push-button, χρησιμοποιούμε τη συνάρτηση digitalRead(), αφού
προηγουμένως έχουμε δηλώσει το pin που συνδέσαμε ως είσοδο στο setup() του κώδικά μας.
Δημιουργήστε ένα πρόγραμμα σε Arduino, το οποίο θα “εγγράφει” σε μία PWM έξοδο την τιμή που
διαβάζει από ένα ποτενσιόμετρο. Στην PWM έξοδο θα είναι συνδεδεμένο ένα LED το οποίο θα
πρέπει να μεταβάλλει τη φωτεινότητά του.
Ένα πλήκτρο (push-button) θα απαγορεύει στο LED να ανάψει για όσο κρατιέται πατημένο.
Στη σειριακή οθόνη θέλουμε να εμφανίζεται η τιμή που εγγράφεται στην PWM έξοδο, αλλά και η
κατάσταση του πλήκτρου, ως εξής: