πως γράφουμε προγράμματα στο Arduino IDE


 


Το Arduino IDE αποτελεί το περιβάλλον ανάπτυξης του κώδικα για τον μικρο εκλεκτή της κάθε πλακέτας Arduino. Από τον παρακάτω σύνδεσμο μπορείτε να κατεβάσετε την τελευταία έκδοση του ανάλογα με το λειτουργικό σύστημα του υπολογιστή σας.


Download Arduino IDE



Εξήγηση διαθέσιμων επιλογών:



Ελέγχει εάν υπάρχουν σφάλματα στον κώδικα μας
Περνάει το πρόγραμμα στο Arduino
Ανοίγει ένα νέο κενό project
Άνοιγμα αρχείου
Αποθήκευση αρχείου
Άνοιγμα σειριακής οθόνης


 Θα ξεκινήσουμε χωρίζοντας το πρόγραμμα μας σε τρία μέρη: την δομή, τις μεταβλητές & σταθερές και τις συναρτήσεις. Πρώτα θα δούμε το κομμάτι της δομής. Η δομή ενός προγράμματος Arduino χωρίζετε σε τρία μέρη με την ακόλουθη σειρά: την δήλωση μεταβλητών, το κομμάτι κώδικα που περιέχει την αρχικοποίηση καταστάσεων και μεταβλητών καθώς και τον κώδικα που θέλουμε να τρέξει μόνο μια φορά στο Arduino και το κομμάτι του κώδικα loop() που περιέχει το κυρίως πρόγραμμα μας και θα τρέχει συνέχεια, μέχρι να βγάλουμε το Arduino απ' το ρεύμα. Δείτε την παρακάτω εικόνα:

Οι μεταβλητές παίζουν πολύ σημαντικό ρόλο στην σύνταξη του κώδικα μας καθώς αλλάζοντας τις τιμές τους κατά την διάρκεια εκτέλεσης του προγράμματος μπορούμε να επιτύχουμε διάφορες λειτουργίες. Μπορούν να πάρουν διάφορες τιμές όπως νούμερα, χαρακτήρες, και τα δύο ή να έχουν λογική τιμή True ή False (αληθής-ψευδής). Ανάλογα με την τιμή αυτή τις αρχικοποιούμε ή τις δηλώνουμε αντίστοιχα στο πρώτο τμήμα της δομής του προγράμματος μας όπως παρακάτω (τύπος όνομα_μεταβλητής):

  • int number  Ακέραιους αριθμούς απ' το -32.768 μέχρι 32.768
    ( π.χ. int number = 500 ;  ή int arnitikos = -5 ; )
  • float number1 Δεκαδικούς αριθμούς
    ( π.χ. float number1 = 0.0015 ; ή float number_2 = 15.025 ; )
  • char onoma Γράμματα αλλά και αριθμούς
    ( π.χ. char onoma='Michalis'; ή char gramma='A'; ή char allo='AB32b'; )
  • boolean state Τιμή true ή false
    ( π.χ.boolean state1 = true ; ή boolean state2 = false ; )

Κάθε όνομα που δίνουμε σε μια μεταβλητή ή σταθερή θα πρέπει να υπάρχει μόνο μια φορά μέσα στον κώδικα μας. Το όνομα που θα δώσουμε πρέπει να είναι γραμμένο με αγγλικούς χαρακτήρες και δεν μπορεί να ξεκινάει με νούμερο. Όπως παρατηρήσατε στα παραπάνω παραδείγματα μετά την χρήση κάποιας μεταβλητής βάζουμε το ελληνικό ερωτηματικό ';' ως χαρακτήρα τερματισμού.

Στις σταθερές ισχύει ότι και παραπάνω αλλά πριν τον τύπο βάζουμε το χαρακτηριστικό 'const' (const τύπος όνομα_σταθερής). Μια σταθερή την χρησιμοποιούμε σαν συντόμευση μέσα στο πρόγραμμα μας αποφεύγοντας να γράφουμε τιμές τις οποίες μπορεί να ξεχάσουμε παρακάτω. ( π.χ. const int statheri_timi = 58 ; ) Μια μεταβλητή μπορεί να μην έχει αρχική τιμή και η τιμή της να υπολογίζεται μετά από εκτέλεση κάποιας εντολής μέσα στο πρόγραμμα, όμως μια σταθερή πρέπει να έχει υποχρεωτικά τιμή, αλλιώς τι σταθερή είναι?Θα ξεκινήσουμε χωρίζοντας το πρόγραμμα μας σε τρία μέρη: την δομή, τις μεταβλητές & σταθερές και τις συναρτήσεις. Πρώτα θα δούμε το κομμάτι της δομής. Η δομή ενός προγράμματος Arduino χωρίζετε σε τρία μέρη με την ακόλουθη σειρά: την δήλωση μεταβλητών, το κομμάτι κώδικα που περιέχει την αρχικοποίηση καταστάσεων και μεταβλητών καθώς και τον κώδικα που θέλουμε να τρέξει μόνο μια φορά στο Arduino και το κομμάτι του κώδικα loop() που περιέχει το κυρίως πρόγραμμα μας και θα τρέχει συνέχεια, μέχρι να βγάλουμε το Arduino απ' το ρεύμα. Δείτε την παρακάτω εικόνα:

Οι μεταβλητές παίζουν πολύ σημαντικό ρόλο στην σύνταξη του κώδικα μας καθώς αλλάζοντας τις τιμές τους κατά την διάρκεια εκτέλεσης του προγράμματος μπορούμε να επιτύχουμε διάφορες λειτουργίες. Μπορούν να πάρουν διάφορες τιμές όπως νούμερα, χαρακτήρες, και τα δύο ή να έχουν λογική τιμή True ή False (αληθής-ψευδής). Ανάλογα με την τιμή αυτή τις αρχικοποιούμε ή τις δηλώνουμε αντίστοιχα στο πρώτο τμήμα της δομής του προγράμματος μας όπως παρακάτω (τύπος όνομα_μεταβλητής):

  • int number  Ακέραιους αριθμούς απ' το -32.768 μέχρι 32.768
    ( π.χ. int number = 500 ;  ή int arnitikos = -5 ; )
  • float number1 Δεκαδικούς αριθμούς
    ( π.χ. float number1 = 0.0015 ; ή float number_2 = 15.025 ; )
  • char onoma Γράμματα αλλά και αριθμούς
    ( π.χ. char onoma='Michalis'; ή char gramma='A'; ή char allo='AB32b'; )
  • boolean state Τιμή true ή false
    ( π.χ.boolean state1 = true ; ή boolean state2 = false ; )

Κάθε όνομα που δίνουμε σε μια μεταβλητή ή σταθερή θα πρέπει να υπάρχει μόνο μια φορά μέσα στον κώδικα μας. Το όνομα που θα δώσουμε πρέπει να είναι γραμμένο με αγγλικούς χαρακτήρες και δεν μπορεί να ξεκινάει με νούμερο. Όπως παρατηρήσατε στα παραπάνω παραδείγματα μετά την χρήση κάποιας μεταβλητής βάζουμε το ελληνικό ερωτηματικό ';' ως χαρακτήρα τερματισμού.

Στις σταθερές ισχύει ότι και παραπάνω αλλά πριν τον τύπο βάζουμε το χαρακτηριστικό 'const' (const τύπος όνομα_σταθερής). Μια σταθερή την χρησιμοποιούμε σαν συντόμευση μέσα στο πρόγραμμα μας αποφεύγοντας να γράφουμε τιμές τις οποίες μπορεί να ξεχάσουμε παρακάτω. ( π.χ. const int statheri_timi = 58 ; ) Μια μεταβλητή μπορεί να μην έχει αρχική τιμή και η τιμή της να υπολογίζεται μετά από εκτέλεση κάποιας εντολής μέσα στο πρόγραμμα, όμως μια σταθερή πρέπει να έχει υποχρεωτικά τιμή, αλλιώς τι σταθερή είναι?





Φυσικά δεν μπορούμε να δούμε όλες τις συναρτήσεις που υπάρχουν, θα αναφερθούμε στις πιο σημαντικές - βασικές. Οι συναρτήσεις του Arduino αποτελούν βασικό παράγοντα στον προγραμματισμό του μικρο ελεγκτή μας καθώς αυτές συνδέουν πολύ εύκολα το Arduino uno με τα υπόλοιπα στοιχεία του κυκλώματος μας. (π.χ. led, κουμπιά/διακόπτες, οθόνη LCD, ηχείο).

pinMode(pin, mode) ;
Είναι πολύ σημαντικό να "πούμε" στο Arduino εάν ο ακροδέκτης/pin που έχουμε συνδέσει με το στοιχείο του κυκλώματος μας είναι είσοδος ή έξοδος, εάν δηλαδή θα λάβει ή θα στείλει κάποιο σήμα. Για παράδειγμα εάν έχουμε κάποιο led, θέλουμε να στείλουμε σήμα να ανάψει ή να σβήσει, άρα το pin που το έχουμε συνδέσει στο Arduino uno θα πρέπει να το δηλώσουμε ως έξοδο. Αντίστοιχα, εάν έχουμε ένα κουμπί/διακόπτη, θέλουμε να λάβουμε ένα σήμα στο Arduino uno όταν ενεργοποιηθεί για να κάνει κάποια λειτουργία, άρα το pin θα το δηλώσουμε ως είσοδο. π.χ.pinMode(5,INPUT); ή pinMode(2,OUTPUT);

digitalWrite(pin, value); 
Αφού έχουμε δηλώσει τον ρόλο του pin που μας ενδιαφέρει με την συνάρτηση pinMode πρέπει τώρα να πούμε στο Arduino τι να κάνει με αυτό. Ας δούμε τις λειτουργίες μέσα απο κάποια παραδείγματα. Έστω οτι έχουμε ένα led και θέλουμε να το ανάψουμε, όπως στην εικόνα παραπάνω, θα κάνουμε χρήση της συνάρτησης digitalWrite ως εξής:digitalWrite(2, HIGH); Εάν θέλουμε να το σβήσουμε τότε η συνάρτηση αλλάζει και γίνεται: digitalWrite(2, LOW); Με την τιμή HIGH δίνουμε λογικό '1' ή 5V ή Vcc και με την LOW λογικό '0' ή 0V ή GND.

όνομα_μεταβλητής=digitalRead(pin);
Με την digitalRead αντίστοιχα λέμε στο Arduino να διαβάσει μια τιμή. Η τιμή αυτή και εδώ μπορεί να είναι HIGH ή LOW. Έτσι για παράδειγμα εάν έχουμε ένα κουμπί, όπως στην εικόνα παραπάνω, το οποίο όταν τον πατάμε περνάει ρεύμα, τότε το διαβάζουμε ως εξής:
timi=digitalRead(5); και η τιμή που θα πάρει θα είναι HIGH. Μόλις σταματήσουμε να τον πατάμε η τιμή θα γίνει LOW.

analogWrite(pin, value);
Με την συνάρτηση digitalWrite είδαμε οτι μπορούμε να δώσουμε έξοδο με μόνο δυο τιμές, HIGH και LOW. Τι γίνεται όμως όταν θέλουμε να χαμηλώσουμε τον φωτισμό σε ένα led ή να περιστρέψουμε ένα DC μοτερ με λιγότερη ταχύτητα; Σαν σκέψη θα λέγαμε να δώσουμε λιγότερη τάση, π.χ. 2.5V αντί για 5V στο μοτέρ μας για να περιστρέφετε με την μισή ταχύτητα, αλλά δεν γίνεται αυτό. Έτσι για να το πετύχουμε στο Arduino χρησιμοποιούμε την συνάρτηση analogWrite η οποία μπορεί να πάρει τιμές από 0 έως 255. Η λειτουργία αυτή λέγετε Pulse Width Modulation - PWM και στo Arduino uno μπορούμε να την χρησιμοποιήσουμε στα pin 3, 5, 6, 9, 10 και 11. Αυτό που κάνει είναι να στέλνει παλμούς, φανταστείτε το σαν έναν διακόπτη που ανοιγοκλείνει πολύ γρήγορα. Έτσι εάν θέλαμε να περιστρέψουμε ένα μοτέρ με την μισή ταχύτητα θα κάναμε χρήση της συνάρτησης ως εξής: analogWrite(3, 127); Η παρακάτω εικόνα θα σας βοηθήσει να καταλάβετε την λειτουργία των παλμών.


όνομα_μεταβλητής=analogRead(pin);
Την συνάρτηση analogRead την χρησιμοποιούμε όταν θέλουμε να διαβάσουμε μια αναλογική τιμή, π.χ. από ένα αισθητήρα θερμοκρασίας, αισθητήρα υπερήχων, αισθητήρα υπερύθρων. Οι τιμές που μπορεί να διαβάσει είναι από 0 έως 1023. Τα διαθέσιμα analog pins του Arduino uno είναι απ'το Α0 έως το Α5.
 


Πηγή: www.ardumotive.com