Γλώσσα προγραμματισμού
ΠΕΡΙΓΡΑΦΗ
Η γλώσσα του Arduino προέρχεται από τις γλώσσες Wiring και Processing. Η γλώσσα Wiring είναι μια παραλλαγή C/C++ για μικροελεγκτές αρχιτεκτονικής AVR όπως ο ATmega, και υποστηρίζει όλες τις βασικές δομές της C καθώς και μερικά χαρακτηριστικά της C++.
Στην ουσία χρησιμοποιεί κάποιες “έτοιμες” συναρτήσεις οι οποίες είναι γραμμένες σε C/C++ και συγκεκριμένα στον μεταγλωττιστή avr-g++ ( http://www.nongnu.org/avr-libc/user-manual/ ). Αυτό δεν μας εμποδίζει στο να γράφουμε τις εντολές κατευθείαν σε C/C++ (βλ. και άρθρα περιοδικών βιβλιογραφίας), αφού έτσι και αλλιώς ο κώδικας μεταφράζεται σε C πριν μεταγλωττιστεί και μεταφερθεί στο Αrduino. Ένα χρήσιμο κείμενο σχετικά με την όλη διαδικασία μπορείτε να διαβάσετε εδώ: Arduino Build Process – http://arduino.cc/en/Hacking/BuildProcess
Σε πλατφόρμα Λίνουξ ως compiler χρησιμοποιείται ο AVR gcc και ως βασική βιβλιοθήκη C χρησιμοποιείται η AVR libc. Γι’ αυτό και πρέπει να τις εγκαταστήσουμε στην αρχή.
Λόγω της καταγωγής της από την C, στην γλώσσα του Arduino μπορούμε να χρησιμοποιούμε ουσιαστικά τις ίδιες βασικές εντολές και συναρτήσεις, με την ίδια σύνταξη, τους ίδιους τύπων δεδομένων και τους ίδιους τελεστές όπως και στην C. Επιπλέον, υπάρχουν κάποιες ειδικές εντολές, συναρτήσεις και σταθερές που βοηθούν για την διαχείριση του ειδικού hardware του Arduino. Οι πιο σημαντικές από αυτές επεξηγούνται στον πίνακα που ακολουθεί:
Πίνακας 3-1
| Όρισμα | Είδος | Τύπος | Παράμετροι | Περιγραφή |
| LOW | Σταθερά | int | – | Έχει τιμή 0 και είναι αντίστοιχη του λογικού 0 (ψευδές) |
| HIGH | Σταθερά | int | – | Έχει τιμή 1 και είναι αντίστοιχη του λογικού 1 (αληθές) |
| INPUT | Σταθερά | int | – | Έχει τιμή 0 και είναι αντίστοιχη του λογικού 0 |
| OUTPUT | Σταθερά | int | – | Έχει τιμή 1 και είναι αντίστοιχη του λογικού 1 |
| pinMode | Εντολή | – | (pin,mode) | Καθορίζει αν το συγκεκριμένο ψηφιακό pin θα είναι pin εισόδου ή pin εξόδου ανάλογα με την τιμή που δίνεται στην παράμετρο mode (INPUT ή OUTPUT αντίστοιχα) |
| digitalWrite | Εντολή | – | (pin,pinstatus) | Θέτει την κατάσταση pinstatus (HIGH ή LOW) στο συγκεκριμένο ψηφιακό pin |
| digitalRead | Συνάρτηση | int | (pin) | Επιστρέφει την κατάσταση του συγκεκρι-μένου ψηφιακού pin (0 για LOW, 1 για HIGH) |
|
attachInterrupt |
Εντολή | – |
(interrupt, function, management) |
Θέτει σε λειτουργία το συγκεκριμένο interrupt, ώστε να ενεργοποιεί την συνάρτηση function, κάθε φορά που ικανοποιείται η συνθήκη που ορίζεται από την παράμετρο triggermode: |
| analogReference | Εντολή | – | (type) | Δέχεται τις τιμές DEFAULT, INTERNAL ή EXTERNAL ως παράμετρο (type) για να καθορίσει την τάση αναφοράς (Vref) των αναλογικών εισόδων (5V, 1,1V ή η εξωτερική τάση του pin AREF αντίστοιχα) |
| analogRead | Συνάρτηση | int | (pin) | Επιστρέφει έναν ακέραιο από 0 έως 1023, ανάλογα με την τάση που τροφοδοτείται το συγκεκριμένο pin αναλογικής εισόδου στην κλίμακα 0 ως Vref |
| analogWrite | Εντολή | – | (pin, value) | Θέτει το συγκεκριμένο ψηφιακό pin σε κατάσταση ψευδοαναλογικής εξόδου (PWM). Η παράμετρος value καθορίζει το πλάτος του παλμού σε σχέση με την περίοδο του παραγόμενου σήματος στην κλίμακα από 0 ως 255 (π.χ. Με value 127, το πλάτος του παλμού είναι ίσο με την ημιπερίοδο) |
|
millis |
Συνάρτηση |
Unsigned long |
() | Μετρητής που επιστέφει το χρονικό διάστημα σε ms από την στιγμή που άρχισε η εκτελεστή του προγράμματος. Λόγω του τύπου μεταβλητής (unsigned long δηλ. 32 bit) θα υπερχειλίσει σε 2^32 ms (περίπου 50 ημέρες), οπότε ο μετρητής θα ξεκινήσει πάλι από το μηδέν |
|
delay |
Εντολή | – | (time) | Σταματά προσωρινά την ροή του προγράμματος για time ms. Η παράμετρος time είναι unsigned long (από 0 ως 2^32). Σημειώστε ότι παρά την προσωρινή παύση, συναρτήσεις των οποίων η εκτέλεση ενεργο ποιείται από interrupt θα εκτελεστούν κανονικά κατά την διάρκεια μιας delay. |