top
logo

ARDUINO ΕΙΣΑΓΩΓΗ

Αποτέλεσμα εικόνας για arduino uno

Οι βασικές εντολές για να ξεκινήσουμε


Η δομή ενός προγράμματος σε προγραμματιστικό περιβάλλον Arduino IDE
Ένα τυπικό πρόγραμμα του
Arduino έχει την εξής δομή:
Sketch
// προσωρινό όνομα προγράμματος, όταν το αποθηκεύσουμε δίνουμε εμείς ότι όνομα θέλουμε.
// σε αυτή την περιοχή μπορούμε να δηλώσουμε τις μεταβλητές, τις σταθερές αλλά και να εισάγουμε δικές μας συναρτήσεις
void setup() {
// αρχικοποιήσεις
}
void loop() {
// ...εδώ γράφουμε τον κώδικά μας που θέλουμε να εκτελεστεί.
}

Κάθε εντολή κλείνει με ερωτηματικό (;)  όπως η Serial.begin(9600);

pinMode  

Καθορίζει αν το συγκεκριμένο ψηφιακό pin θα είναι pin εισόδου ή pin εξόδου ανάλογα με την τιμή που δίνεται στην παράμετρο mode (INPUT ή OUTPUT αντίστοιχα).

pinMode(13, OUTPUT);       // όταν δεν χρησιμοποιούμε μεταβλητή και δηλώνουμε την θύρα.
pinMode(ledR, OUTPUT);   // όταν χρησιμοποιούμε μεταβλητή, την οποία έχουμε ορίσει πριν την
void setup()
{  
εντολές
}

LOW Έχει την τιμή 0 και είναι αντίστοιχη του λογικού false.

HIGH Έχει την τιμή 1 και είναι αντίστοιχη του λογικού true.

digitalWriteΘέτει την κατάσταση pinstatus (HIGH ή LOW) στο συγκεκριμένο ψηφιακό pin.


digitalWrite (ledR, HIGH); // ανάβει το led
digitalWrite (ledR, LOW); // σβήνει το led

•Επιστρέφει την κατάσταση του συγκεκριμένου ψηφιακού
pin (0 για LOWκαι 1 για HIGH) εφόσον αυτό είναι pinεισόδου. πρέπει να είναι κεφαλαία.

•INPUT  είσοδος (αισθητήρα,…) πρέπει να είναι κεφαλαία

•OUTPUT  έξοδος (led, μοτερ,..) πρέπει να είναι κεφαλαία


analogRead Επιστρέφει έναν ακέραιο από 0 εώς 1023, ανάλογα με την τάση που τροφοδοτείται το συγκεκριμένο pinαναλογικής εισόδου στην κλίμακα 0 ως Vref.


digitalRead Επιστρέφει την κατάσταση του συγκεκριμένου ψηφιακού pin (0 για LOW και 1 για HIGH) εφόσον αυτό είναι pin εισόδου.


analogWrite Θέτει το συγκεκριμένο ψηφιακό pin σε κατάσταση ψευδοαναλογικής εξόδου (PWM). Η παράμετρος value καθορίζει το πλάτος του παλμού σε σχέση με την περίοδο του παραγόμενου σήματος στην κλίμακα από 0 ως 255 (π.χ. μεvalue 127, το πλάτος του παλμού είναι ίσο με μισή περίοδο).


delay(1000); Σταματά προσωρινά την ροή του προγράμματος για time ms. Η παράμετρος time είναι unsigned long (από 0 ως 2^32). Σημειώστε ότι παρά την προσωρινή παύση, συναρτήσεις των οποίων η εκτέλεση ενεργοποιείται από interrupt θα εκτελεστούν κανονικά κατά την διάρκεια μιας delay.

• Serial.begin
Serial.begin(9600);

Θέτει τον ρυθμό μεταφοράς δεδομένων του σειριακού interface (σε baud) •Διοχετεύει τα δεδομένα data για αποστολή μέσω του σειριακού interface. Η παράμετρος data μπορεί να είναι είτε αριθμός είτε αλφαριθμητικό. Serial.println
Serial.println("to Arduino me Moodle");

•Για να δηλώσω μια μεταβλητή ή οποία θα έχει την θέση – θύρα που θα συνδεθεί ένα led τότε γράφουμε
                 int ledRed = 13;


Για να κάνουμε κάτι πολλές φορές όταν ξέρουμε πόσες φορές.
for(int i=1; i<=5; i++) {           
digitalWrite (ledRed, HIGH);       
delay (1000);
digitalWrite (ledGreen, HIGH);
delay (1000);
}

•Για να κάνουμε κάτι πολλές φορές όταν δεν ξέρουμε πόσες φορές.
While (kat < 250)
{
kane kati;
kat ++; //αυξάνει κατά 1
}

Για να κάνουμε κάτι πολλές φορές όταν δεν ξέρουμε πόσες φορές.
Do
{
Timi = readSensor();
Kane kati;
} while (timi>150);

•Για να επιλέξουμε αν θα κάνουμε κάτι ή όχι
If (b == 15)
{
Κάνε κάτι;
}

Για να επιλέξουμε αν θα κάνουμε αυτό ή το άλλο
If (a > 19)
{
Κάνε δεξιά;
}
else
{
Κάνε αριστερά;
}

•Για να επιλέξουμε αν θα κάνουμε την πρώτη επιλογή ή την δεύτερη ή την τρίτη.

If (a < 150)
{
Κάνε enampip;
}
else if (a < 100)
{
Κάνε duompipmpip;
}
else
{
Κάνε triampipmpipmpip;
}

•Για να αναθέσουμε μια τυχαία τιμή σε μια μεταβλητή
minas = random(12);

* Για να αναθέσουμε μια τυχαία τιμή από 1 έως 6 σε μια μεταβλητή χ
x=random(1,7)


•Μετά από τις //γράφουμε σχόλια – σημειώσεις για εμάς ή αυτόν που διαβάζει τον κώδικα
Οι λέξεις που χρησιμοποιούμε στις εντολές παίρνουν διάφορα χρώματα μπλε, πορτοκαλί κάτι που δείχνει ότι είναι σωστά γραμμένες.

Κάθε πρόγραμμα όπως αναφέρθηκε και παραπάνω αποτελείται από δύο βασικές ρουτίνες ώστε να έχει την γενική δομή:
// Ενσωματώσεις βιβλιοθηκών, δηλώσεις μεταβλητών, σταθερών, συναρτήσεων...

void setup()
{
 // ...
}

void loop()
{
 // ...
}


•Η βασική ρουτίνα setup() εκτελείται μια φορά μόνο κατά την εκκίνηση του προγράμματος ενώ
•η βασική ρουτίνα loop() περιέχει τον βασικό κορμό του προγράμματος και η εκτέλεσή της επαναλαμβάνεται συνέχεια σαν ένας βρόγχος while(true).

Αν και πρόκειται μόνο για τις πιο βασικές λειτουργίες της γλώσσας του
Arduino, με αυτές και με λίγες βασικές γνώσεις C θα μπορέσετε να δημιουργήσετε το sketch ακόμα και για κάποιο αρκετά περίπλοκο project (όπως αυτά που θα ακολουθήσουν σε επόμενα τεύχη).

Μεταβλητή – Σταθερά

Ο παρακάτω κώδικας
•           ανάβει το κόκκινο led για 2΄΄(2 sec = 2000 ms)
•           σβήνει led  για το ίδιο χρονικό διάστημα.
•           κάνει το ίδιο και με το μπλε led.
Στη συνέχεια τα αναβοσβήνει εναλλάξ για 2΄΄ (2 sec = 2000 ms)

Ο κώδικας στην αριστερή στήλη δηλώνει τις θύρες που είναι συνδεδεμένα τα lend, και όταν θέλει να ανάψει ή να σβήσει αναφέρεται στις θύρες (13, 12).

Ο κώδικας στη δεξιά στήλη χρησιμοποιεί δυο μεταβλητές οι οποίες δηλώνονται πρίν την void setup(). Όταν θέλει να ανάψει ή να σβήσει τα led αναφέρεται στις μεταβλητές.

Χωρίς
μεταβλητές               
void setup() {
pinMode (13, OUTPUT);  //ledRed
pinMode (12, OUTPUT); //ledBlue
}
void loop() {
digitalWrite (13, HIGH);
delay (2000);
digitalWrite (13, LOW);
delay (2000);
digitalWrite (12, HIGH);
delay (2000);
digitalWrite (12, LOW);
delay (2000);

// to kokkino
digitalWrite (13, HIGH);
digitalWrite (12, LOW);
delay (2000);
//to blue
digitalWrite (13, LOW);
digitalWrite (12, HIGH);
delay (2000);
}

Μεμεταβλητές
Int ledR = 13;
Int ledB = 12;
void setup() {
pinMode (ledR, OUTPUT);  //ledRed
pinMode (ledB, OUTPUT); //ledBlue
}
void loop() {
digitalWrite (ledR, HIGH);
delay (2000);
digitalWrite (ledR, LOW);
delay (2000);
digitalWrite (ledB, HIGH);
delay (2000);
digitalWrite (ledB, LOW);
delay (2000);

// to kokkino
digitalWrite (ledR, HIGH);
digitalWrite (ledB, LOW);
delay (2000);
//to blue
digitalWrite (ledR, LOW);
digitalWrite (ledB, HIGH);
delay (2000);
}
Ανθέλαμεναχρησιμοποιήσουμεσταθερέςκαιόχιμεταβλητέςτότεοκώδικάςμαθαείχετηνεξήςδιαφορά:

const int ledR = 13;
const ledB = 12;


Δημιουργήσουμε δικές μας συναρτήσεις.

Ακολουθεί ο κώδικας ο οποίος ανάβει για 1’’ δευτερόλεπτο το led που είναι συνδεδεμένο στη θύρα 13, στη συνέχεια το σβήνει για 1’’ δευτερόλεπτο.

void setup() {
  pinMode(13, OUTPUT);
}
void loop() {
 digitalWrite(13, HIGH);   
 delay(1000);              
 digitalWrite(13, LOW);   
 delay(1000);             
}

Ο κώδικας που ακολουθεί ανάβει για 1΄΄ δευτερόλεπτο το led που είναι συνδεδεμένο στη θύρα 13, στη συνέχεια το σβήνει για 1΄΄ δευτερόλεπτο Και οι δυο κάνουν ακριβώς το ίδιο. Η διαφορά τους είναι ότι ο δεύτερος χρησιμοποιεί συναρτήσεις για να ανάψει και να σβήσει το led.
Οι συναρτήσεις δημιουργήθηκαν πριν την void setup()  
----------------------------------------------------------------
void anavei()
{
digitalWrite(13, HIGH);   
 delay(1000);              
}
void svinei()
{
digitalWrite(13, LOW);    
 delay(1000);              
}
void setup() {
  pinMode(13, OUTPUT);
}
void loop()
{
anavei ();
svinei ();
 }



*Το παραπάνω υλικό αντλήθηκε από το σεμινάριο MOODLE ARDUINO 2018 και διαμορφώθηκε κατάλληλα για τους μαθητές.


bottom
top

bottom

Powered by Joomla!. Design by: free joomla 2.5 templates  Valid XHTML and CSS.