Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην...

32
1 Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξη

Transcript of Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην...

Page 1: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

1

Κωνσταντίνος Γκαλονάκης

Arduino: Προγραμματισμός στην πράξη

Page 2: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

2

Σύνδεση του Arduino με τον Η/Υ και προγραμματισμός αυτού.

1. Εγκατάσταση περιβάλλοντος Arduino IDE

Για να προγραμματίσετε τη μονάδα σας θα χρειαστείτε το περιβάλλον προγραμματισμού Arduino IDE (εικόνα 1). Στο περιβάλλον αυτό γράφετε κώδικα (βασίζεται στη γλώσσα C/C++) τον οποίο μετά μεταγλωττίζετε και μεταφορτώνετε στη μονάδα σας. Το Arduino IDE υπάρχει σε εκδόσεις για Windows, Mac και Linux και μπορείτε να το κατεβάσετε εντελώς δωρεάν από την επίσημη ιστοσελίδα (http://arduino.cc/en/Main/Software).

Εικόνα 1 – Περιβάλλον προγραμματισμού Arduino IDE

Το περιβάλλον αυτό έχει εξελληνισμένο μενού, καθώς και αρκετά έτοιμα παραδείγματα χρήσης βασικών λειτουργιών (Αρχείο => Παραδείγματα).

Κάτω δεξιά φαίνεται σε ποια com είναι συνδεδεμένο το arduino. Για να δουλέψουμε στο περιβάλλον προγραμματισμού Snap4arduino, πηγαίνουμε στο FileExamplesFirmataStandartFirmata και κατόπιν κάνουμε κλικ στο βελάκι (εξαγωγή ή Upload). Αν όλα είναι ΟΚ τότε θα εμφανιστεί στην γαλάζια γραμμή Done uploading.

Page 3: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

3

Μετά από αυτό τρέχουμε το Snap4Arduino και εμφανίζεται στην οθόνη μας η παρακάτω εικόνα (εικόνα 2)

Εικόνα 2 – Περιβάλλον προγραμματισμού Snap4arduino

Κάνετε κλικ στο κουμπάκι Arduino και μετά κλικ στο κουμπάκι Connect Arduino. Αν όλα πάνε καλά θα εμφανιστεί η παρακάτω εικόνα.

Εικόνα 3

Αφού πατήσουμε ΟΚ είμαστε έτοιμοι να προγραμματίσουμε.

Page 4: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

4

Να θυμίσουμε ότι το Arduino UNO έχει τις παρακάτω εισόδους – εξόδους

Page 5: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

5

Φύλλο εργασίας 1 Εντολή στο led να ανάψει και να σβήσει

Λίγη Θεωρία πρώτα

1. Φωτοδίοδοι - Leds

Οι φωτοδίοδοι, ή τα leds όπως έχουν κυριαρχήσει, υπάρχουν σε διάφορα χρώματα και τάσεις λειτουργίας.

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

R = (Vπ – Vλ) / I

όπου R είναι η αντίσταση που χρειαζόμαστε, Vπ η παρεχόμενη τάση από την πήγή μας (5V από το Arduino), Vλ η τάση λειτουργίας του led και I το ρεύμα λειτουργίας του led. Τυπικά, μια αντίσταση γύρω στα 220 Ω καλύπτει τα περισσότερα led που θα χρησιμοποιήσουμε.

Επίσης, τα leds έχουν πολικότητα, δηλαδή δουλεύουν μόνο αν συνδεθούν στην κατάλληλη φορά ρεύματος. Συνήθως το πόδι που πρέπει να συνδεθεί στη θετική κατεύθυνση (+) είναι πιο μακρύ από το αντίστοιχο για την αρνητική φορά (-). Επίσης, το λαμπάκι από την αρνητική μεριά (–) είναι συνήθως επίπεδο κι όχι στρογγυλό όπως είναι από το άλλο πόδι (+). Μην ανησυχείτε όμως, μια ανάποδη σύνδεση δεν θα το καταστρέψει, απλά δεν θα ανάψει στην ανάποδη φορά (εκτός από την ιδιαίτερη περίπτωση να έχετε δώσει πολύ μεγάλη τάση και το δείτε να καίγεται).

Σε αυτή την πρώτη άσκηση θα προσπαθήσουμε να δώσουμε την εντολή σε ένα led να ανάψει και να σβήσει.

μπλέ κόκκινο πράσινο

Page 6: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

6

Περιγραφή κυκλώματος

Για το κύκλωμα θα χρειαστούμε ένα Led το οποίο θα συνδέσουμε ως εξής: Στο pin 13 του arduino θα συνδέσουμε το + του Led και στο GND pin που είναι ακριβώς δίπλα στο pin 13 θα συνδέσουμε το – του Led.

Προγραμματισμός

Στην παρακάτω εικόνα φαίνεται ο προγραμματισμός σε Snap4arduino μέσω του οποίου όταν πατάμε το πλήκτρο 1 το led ανάβει, και όταν πατάμε το πλήκτρο 2 το led σβήνει.

Άσκηση.

Παρακάτω σας δίνονται 5 led (διαφανή). Βρέστε όταν ανάβουν τι χρώμα είναι.

Page 7: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

7

Φύλλο εργασίας 2 – To led που αναβοσβήνει

Σε αυτή την άσκηση θα προσπαθήσουμε να κάνουμε ένα led να αναβοσβήνει ανά ένα δευτερόλεπτο, δηλαδή να δέχεται ρεύμα για ένα δευτερόλεπτο, να μην δέχεται ρεύμα για ένα δευτερόλεπτο κι αυτό να επαναλαμβάνεται επ' αόριστο.

Περιγραφή κυκλώματος

Για το κύκλωμα θα χρειαστούμε ένα Led και μια αντίσταση ώστε το ρεύμα των 5V που θα περνάει να αντιστοιχεί στην τάση λειτουργίας του Led που χρησιμοποιούμε και να μην έχουμε κάποιο πρόβλημα (π.χ. καταστροφή του Led από υπέρταση). Μπορείτε να δείτε το κύκλωμα στην εικόνα που ακολουθεί.

Κύκλωμα φύλλου εργασίας 2

Η έξοδος του ρεύματος στο συγκεκριμένο σχήμα είναι το Pin 10, ενώ αν προσέξουμε η αντίσταση συνδέεται ανάμεσα στην έξοδο και στο Led ώστε να μην περάσει μεγάλη ποσότητα ρεύματος από αυτό. Ακολούθως συνδέεται το Led. Συνήθως τα led έχουν ένα μακρύτερο πόδι που μπαίνει από τη φορά +, δηλαδή το Pin 10 στην περίπτωσή μας. Τέλος, το κύκλωμα κλείνει με το άλλο πόδι του led στην υποδοχή GND που συμβολίζει τη φορά – για το κύκλωμά μας.

Προγραμματισμός κυκλώματος

Το μόνο που μένει είναι να προγραμματίσουμε το κύκλωμά μας, σύμφωνα με αυτά που έχουμε ήδη αναφέρει.

Page 8: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

8

Άσκηση Διαμορφώστε το πρόγραμμα καταλλήλως ώστε αν πατήσετε το πλήκτρο 0 να σταματάει να αναβοσβήνει το Led.

Λύση

Page 9: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

9

Φύλλο εργασίας 3 – Σταδιακή αύξηση και μείωση φωτεινότητας (Fade in-Fade out)

Στο φύλλο εργασίας αυτό θα χρησιμοποιήσουμε ένα led το οποίο όμως δεν θα ανάβει με το μέγιστο δυνατό ρεύμα όπως στις προηγούμενες ασκήσεις, αλλά η έντασή του θα είναι αυξομειούμενη. Θα ξεκινά δηλαδή να ανάβει αχνά και σταδιακά θα αυξάνει η ένταση, μέχρι να φτάσει στο μέγιστο. Τότε, αντίστροφα θα ξεκινά η ένταση να μειώνεται σταδιακά μέχρι να φτάσει στο χαμηλότερο επίπεδο.

Περιγραφή κυκλώματος

Για την εργασία αυτή θα χρειαστούμε ένα led και μια αντίσταση, όπως έχει περιγραφεί στα προηγούμενα φύλλα εργασίας και φαίνεται στην εικόνα

Page 10: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

10

Προγραμματισμός κυκλώματος

Για την εργασία αυτή θα χρειαστεί να συνδέσουμε το led μας σε κάποια από τις PWM θύρες του Arduino, οι οποίες δουλεύουν κι ως αναλογικές έξοδοι. Οι δυνατές τιμές που μπορούν να δώσουν είναι από το 0 έως το 255, προσομοιώνοντας τις δυνατές τάσεις από 0 έως 5V. Έτσι, θα χρειαστεί να προγραμματίσετε τη θύρα σας ως εξόδου και να δίνετε στο Pin σιγά σιγά τις επιθυμητές τιμές, από 0 μέχρι 255.

Page 11: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

11

Άσκηση: Προγραμματίστε το παραπάνω ουτωσώστε να γίνεται συνεχώς το fade in – fade out

Μια εκδοχή του παραπάνω προγραμματισμού

Page 12: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

12

Φύλλο εργασίας 4 – Προγραμματίστε ένα 7segment digital display ώστε να δείχνει επαναλαμβανόμενα 0,1,2,3,4,5,6,6,8,9

Λίγη Θεωρία πρώτα

7segment display μπορεί να είναι κοινής ανόδου ή κοινής καθόδου σύμφωνα με το παρακάτω διαγράμμα.

Page 13: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

13

Σας δίνετε ένα 7segment display κοινής ανόδου προγραμματίστε κατάλληλα ώστε να εμφανίζονται το ένα κατόπιν του άλλου τα ψηφία 0,1,2,….. κλπ.

Περιγραφή κυκλώματος

Να εξηγήσουμε λίγο το παραπάνω κύκλωμα. Στο pin13 συνδέουμε το 3,8 του display. Ακολούθως συνδέουμε τα:

Page 14: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

14

1 Pin2 2 Pin3 4 Pin4 6 Pin5 7 Pin6 9 Pin7 10 Pin8 Όπως γίνεται αντιληπτό στην αρχή pin2,pin3,pin4,pin5,pin6,pin7,pin8 και pin13 είναι low

άρα το display είναι κλειστό. Αν δώσουμε την εντολή

Τότε θα ανάψει το display και θα δείχνει 8. Άρα αν θέλουμε να δείχνει ένα θα σβήσουμε a,f,g,e,d δηλ θα κάνουμε high τα 7,9,10,1,2 pin του display και άρα τα pin6, pin7, pin8, pin2 και pin3 του arduino.

To πρόγραμμα σε snap4arduino είναι το παρακάτω:

Για κάθε γράμμα:

Οπότε για το τελικο:

Άσκηση

Page 15: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

15

Φύλλο εργασίας 5 – Άνοιγμα κλείσιμο led με διακόπτη.

Περιγραφή κυκλώματος

Page 16: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

16

To πρόγραμμα σε snap4arduino είναι το παρακάτω:

Εδώ για πρώτη φορά χρησιμοποιούμε ένα pin το pin12 σαν digital input.

Φύλλο εργασίας 6 – Άνοιγμα κλείσιμο fan με μεταβολή της θερμοκρασίας.

Εδώ θα χρησιμοποιήσουμε έναν αισθητήρα θερμοκρασίας LM35DZ

Αυτός ο αισθητήρας συμπεριφέρεται ως εξής: Αν τροφοδοτήσουμε το Vs με +5V και γειώσουμε το GND τότε το Vout δίνει μια στάθμη τάσης ανάλογα της εξωτερικής θερμοκρασίας πχ 250mV στους 25οC, 260mV στους 26οC κοκ. Αυτό μπορούμε να το ελέγξουμε ως εξής. Δίνουμε 5V στο Vs και GND στο 3 ποδαράκι του LM35DZ οδηγούμε το 2 ποδαράκι του LM35DZ στο Α2. Με το δάχτυλο πιάνουμε το LM35DZ και παρατηρούμε την μεταβολή της τάσης εισόδου του Α2 με το εξής προγραμματάκι.

Page 17: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

17

Παρατηρούμε όντως ότι η αναλογική είσοδος μεταβάλλεται από 54 έως 70-72. Φυσικά δεν είναι όπως το περιγράψαμε θεωρητικά από 23 έως 38 αλλά επειδή τα πάντα είναι σχετικά θεωρώντας ότι 54 23 και το 70 36 τότε θα μπορούσαμε να πούμε ότι το 58 26 – 27οC και έτσι θα μπορούσαμε να γράψουμε ένα προγραμματάκι στο οποίο θα μπορούσαμε να πούμε ότι αν η θερμοκρασία ξεπεράσει τους 28οC 60 τότε να δώσει το pin10 5V σε ένα ρελέ το οποίο κλείνοντας θα λειτουργεί ως διακόπτης για να ξεκινήσει ένας ανεμιστήρας να μας δροσίζει.

Το ηλεκτρολογικό σχέδιο του ρελέ είναι το παρακάτω:

1

2

3

4

5

Page 18: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

18

Έστω ότι δίνω 12V στο ποδαράκι 3 του ρελέ τότε από ότι φαίνεται από το σχήμα αυτά βγαίνουν στο ποδαράκι 4 του ρελέ. Αν όμως έχω το ποδαράκι 2 στο GND και δώσω 5V στο ποδαράκι 1 τότε αυτόματα ο διακόπτης(το έλασμα) που βρίσκεται στο 4 θα πάει στο 5 και τα 12V που υπάρχουν στο 3 θα πάνε στο 5. Άρα αν στο 5 έχω το + ενός fan και το – αυτού στο GND to fan θα αρχίσει να περιστρέφεται. Τι θα πώ δηλαδή στο arduino μου. Διάβασε την θερμοκρασία στο Α1 (την τιμή). Αν αυτή ξεπεράσει το 28 (60) τότε κάνε high το pin8 το οποίο έχω συνδεδεμένο στο 1 του ρελέ, επομένως τότε θα πάνε τα 12V στο 5 που είναι το + του fan και αυτό θα αρχίσει να περιστρέφεται. Μόλις κατέβει κάτω από τα 60 η τιμή στο LM35DZ τότε θα ανέβει στο 4 το έλασμα του ρελέ θα μηδενίσει το 5 άρα θα σταματήσει ο κίνητήρας.

Άρα λοιπόν το πρόγραμμα μου θα γίνει ως εξής:

Για να εξηγήσουμε λίγο. Το pin10 είναι συνδεδεμένο στο + του LM35DZ και το – αυτού είναι συνδεδεμένο στο GND. Άρα κάνοντας high το pin10 βγαίνει έξοδος στο μεσαίο ποδαράκι του LM35DZ που είναι 57 το οποίο οδηγώ στο Α1 (analogue input). Έτσι λοιπόν στο πρόγραμμα λέω αν το A1 ξεπεράσει τα 60 το κάνε το pin8 high άρα δώσε 5V στο ποδαράκι 1 του ρελέ και άρα τα 12V που έχω στο ποδαράκι 3 του ρελέ θα πάνε στο 5 και άρα θα ξεκινήσει ο κινητήρας.

Page 19: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

19

Φύλλο εργασίας 7 – Σταδιακή αύξηση και μείωση φωτεινότητας με ποτενσιόμετρο

Στο φύλλο εργασίας αυτό θα χρησιμοποιήσουμε ένα ποτενσιόμετρο για να ρυθμίζουμε την ένταση με την οποία θα ανάψει το led μας. Για να γίνει αυτό θα πρέπει να συνδέσουμε ένα led και μια αντίσταση σε ένα ψηφιακό pin, ένα ποτενσιόμετρο σε ένα αναλογικό pin, και ανάλογα με την τιμή που μας δίνει (διαβάζουμε από) το ποτενσιόμετρο θα δίνουμε αντίστοιχη ένταση στο led.

Περιγραφή κυκλώματος Συνδέουμε ένα led σε ένα ψηφιακό pin (PWM). Επίσης συνδέουμε ένα ποτενσιόμετρο σε μια αναλογική είσοδο (υπάρχουν έξι όπως έχουμε δει στο Arduino Uno) από την οποία θα διαβάζουμε τις τιμές του ποτενσιόμετρου.Για το ποτενσιόμετρο η συνδεσμολογία είναι απλή, όπως φαίνεται στην παραπάνω εικόνα. Χρειαζόμαστε πηγή (5V), γείωση (GND) και το μεσαίο πόδι συνδεδεμένο σε μια αναλογική είσοδο. Οι τιμές που θα έρθουν από εκεί θα κυμαίνονται από το 0 έως το 1023, οπότε θα πρέπει να κάνουμε την αντίστοιχη μετατροπή για να τις δώσουμε ως ένταση του Pin (π.χ. να δίνουμε την είσοδο διά του 4).Το ποτενσιόμετρο τοποθετείται απευθείας πάνω στο breadboard, αν έχει τα κατάλληλα άκρα.

Page 20: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

20

Στην αρχή γράφουμε το παρακάτω προγραμματάκι για να δούμε τι ακριβώς διαβάζουμε στο Α1.

Καθώς περιστρέφω το ποτενσιόμετρο διαβάζω τιμές από 0 – 1023. (Η χαρά του δυαδικού)

Προγραμματισμός κυκλώματος

Παρακάτω ακολουθεί το πρόγραμμα που πρέπει να γραφτεί.

Άσκηση: Να φτιάξετε κατάλληλο κύκλωμα στο οποίο θα υπάρχουν 3 led ένα κοκκινο, ένα πράσινο και ένα κίτρινο και καθώς θα περιστρέφετε το ποτενσιόμετρο να ανάβει μιά το κόκκινο, μια το κίτρινο και μια το πράσινο. (Δηλ στην περιοχή 0 -340 νά ανάβει το κόκκινο, στην περιοχή 341 – 681 να ανάβει το κίτρινο και στην περιοχή 682 – 1023 να ανάβει το πράσινο)

Page 21: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

21

Παρακάτω ακολουθεί το πρόγραμμα που πρέπει να γραφτεί

Page 22: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

22

Φύλλο εργασίας 8 – Ελέγχοντας κινητήρα (DC Motor)

Στο φύλλο εργασίας αυτό θα δούμε τη βασική συνδεσμολογία και έλεγχο κινητήρα συνεχούς ρεύματος (DC motor), τόσο ώς προς την κατεύθυνση περιστροφής όσο και προς τημ ταχύτητα περιστροφής. Αυτό θα το πετύχουμε με την χρήση του L293D motor driver chip. Περιγραφή κυκλώματος

Στην παραπάνω συνδεσμολογία χρησιμοποιούμε ένα ποτενσιόμετρο για να ελέγξουμε τις στροφές του κινητήρα και έναν διακόπτη για να μεταβάλλουμε την φορά περιστροφής του κινητήρα.

Τα υλικά (και το κόστος αυτών) που είναι απαραίτητα για την επίτευξη του παραπάνω project είναι τα παρακάτω:

Page 23: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

23

1. ≈1€

2. ≈1€

3. ≈0.5€

4, ≈0.1€

Page 24: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

24

5. ≈4 €

6. ≈5 €

Page 25: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

25

Συνολικό ποσό ≈12 €

Και βέβαια τα breadboard ,arduino, και τα καλώδια μπορούμε να τα χρησιμοποιήσουμε αργότερα σε κάποιο άλλο project.

Κάντε πρώτα την παρακάτω συνδεσμολογία:

Page 26: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

26

Πρίν ξεκινήσουμε τον προγραμματισμό της φοράς περιστροφής του κινητήρα ας εξηγήσουμε λίγο την λειτουργία του L293D. To datasheet του L293D είναι το παρακάτω:

Όπως ίσως παρατηρείτε το L293D μπορεί να ελέγξει έως και 2 κινητήρες. Τα pin που είναι απαραίτητα για τον έλεγχο ενός κινητήρα είναι τα:

Vcc 1 Τροφοδοτείται πάντα με 5V.

Page 27: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

27

Enable 1,2 Το κάνουμε high ή low αντίστοιχα για να κινήσουμε ή να σταματήσουμε τον κινητήρα. Εμείς θα το έχουμε μόνιμα high και θα ελέγξουμε το start – stop του κινητήρα με τα pins Output 1 και Output 2(3,6) μέσω των pins Input 1 και Input 2 (2,7) σύμφωνα με το παρακάτω πίνακα.

Δηλαδή άν δώσουμε στα In1,In2 GND,GND ή 5V, 5V τότε τα output1, output 2 είναι 0,0 και ο κινητήρας σταματά. Ενώ αν δώσουμε 5V, GND τότε έχω στο output 1 high στο output 2 low άρα ο κινητήρας κινείται προς την κατεύθυνση Α αλλιώς ανάποδα κινείται προς την κατεύθυνση Β.

Το πρόγραμμα με το οποίο υλοποιούμε τα παραπάνω είναι το παρακάτω:

Συνδέω τα in1 και in2 στα pin7 και pin8 του arduino. Έτσι κάνοντας manually high ή low τα pin7 και pin8 αντίστοιχα παρατηρώ την συμπεριφορά του κινητήρα.

Page 28: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

28

Όταν πατάω το 1 περιστρέφεται ο κινητήρας προς την μια φορά, όταν πατάω το 2 περιστρέφεται ο κινητήρας αντίστροφα και όταν πατάω το 0 ο κινητήρας σταματάει.

Πάμε να το υλοποιήσουμε αυτό με το switch και το ποτενσιόμετρο. Το κύκλωμα μου είναι το παρακάτω:

Ας δούμε ποιά pin χρησιμοποιούμε

Enablepin είναι το pin11 του arduino in1 είναι το pin10 in2 είναι το pin9

Προσέξτε λίγο τα pin9,10,11 είναι pwm.

Pin7 είναι το switch A0 είναι η έξοδος του ποτενσιόμετρου.

Page 29: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

29

Προγραμματισμός κυκλώματος

Page 30: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

30

Φύλλο εργασίας 9 – Σύνθετη κατασκευή

Στο φύλλο εργασίας αυτό θα συνδυάσουμε χαρακτηριστικά που έχουμε δουλέψει στα προηγούμενα φύλλα, με σκοπό να φτιάξουμε μία πιο σύνθετη κατασκευή.

Παράδειγμα Υλοποιήστε μια κατασκευή όπως το πατακάτω (όχημα με 2 κινητήρες), την οποία θα κινείτε με μιά διάταξη διακοπτών που εσείς θα φτιάξετε.

Εδώ σε λειτουργία από τα παιδιά της Γ Γυμνασίου της ΓΣΘ

Page 31: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

31

Προγραμματισμός κυκλώματος

//moving the car /**********************************/ const int sw1 = 2; const int sw2 = 3; const int sw3 = 4; const int sw4 = 5; const int in1 = 8; const int in2 = 9; const int in3 = 10; const int in4 = 11; /**********************************/ void setup() { pinMode(sw1,INPUT); pinMode(sw2,INPUT); pinMode(sw3,INPUT); pinMode(sw4,INPUT); pinMode(in1,OUTPUT); pinMode(in2,OUTPUT); pinMode(in3,OUTPUT); pinMode(in4,OUTPUT); } /**********************************/ void loop() { //read the state of the key value //and check if the kye is pressed //if it is,the state is HIGH if(digitalRead(sw1) ==HIGH & digitalRead(sw3) ==HIGH & digitalRead(sw2) ==LOW & digitalRead(sw4) ==LOW) { digitalWrite(in1,HIGH); digitalWrite(in2,LOW); digitalWrite(in4,HIGH); digitalWrite(in3,LOW); } if(digitalRead(sw1) ==LOW & digitalRead(sw3) ==LOW & digitalRead(sw2) ==HIGH & digitalRead(sw4) ==HIGH) { digitalWrite(in1,LOW); digitalWrite(in2,HIGH); digitalWrite(in4,LOW); digitalWrite(in3,HIGH); } if(digitalRead(sw1) ==HIGH & digitalRead(sw3) ==LOW & digitalRead(sw2) ==LOW & digitalRead(sw4) ==LOW) {

Page 32: Κωνσταντίνος Γκαλονάκης Arduino: Προγραμματισμός στην πράξηfiles.dst3gym.webnode.com/200000140-5e0be5ffe9... · Προγραμματισμός

32

digitalWrite(in1,HIGH); digitalWrite(in2,LOW); digitalWrite(in4,LOW); digitalWrite(in3,LOW); } if(digitalRead(sw1) ==LOW & digitalRead(sw3) ==HIGH & digitalRead(sw2) ==LOW & digitalRead(sw4) ==LOW) { digitalWrite(in1,LOW); digitalWrite(in2,LOW); digitalWrite(in4,HIGH); digitalWrite(in3,LOW); } if(digitalRead(sw1) ==LOW & digitalRead(sw3) ==LOW & digitalRead(sw2) ==LOW & digitalRead(sw4) ==LOW) { digitalWrite(in1,LOW); digitalWrite(in2,LOW); digitalWrite(in4,LOW); digitalWrite(in3,LOW); } } .Προσπαθείστε να το μετατρέψετε σε Snap4arduino

Ξεχωριστό βοήθημα για την συγγραφή αυτών των σημειώσεων υπήρξε το εγχειρίδιο του Εμμανουήλ Πουλάκη «Προγραμματίζοντας με τον μικροελεγκτή Arduino»

Αλλά βοηθήματα για την συγγραφή του παραπάνω:

http://www.cs.uni-potsdam.de/~mprz/uploads/Anleitung_Snap4Arduino_MyIG_und_Grove.pdf

https://learn.adafruit.com/category/learn-arduino