Ενσωματωμένα Συστήματα

Σχετικά έγγραφα
Σχεδίαση με μικρο-ελεγκτή 8bit

Ενσωματωμένα Συστήματα

Φύλλο εργασίας 7 - Δημιουργώ τα δικά μου χρώματα με το RGB LED

Λειτουργικά Συστήματα

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Ψηφιακή Σχεδίαση. Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:07. Δρ. Μηνάς Δασυγένης. Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Φύλλο εργασίας 3 - Χριστουγεννιάτικα φωτάκια (σταδιακή αύξηση και μείωση φωτεινότητας ενός LED) Το κύκλωμα σε breadboard

Ενσωματωμένα Συστήματα

Ενσωματωμένα Συστήματα

Ψηφιακή Σχεδίαση. Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:05. Δρ. Μηνάς Δασυγένης. Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Φύλλο εργασίας 9 - Αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων

Το κύκλωμα σε breadboard

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Αρχιτεκτονική Υπολογιστών Εργαστήριο

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

Ενσωματωμένα Συστήματα

ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017)

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Φύλλο εργασίας 4 - Δημιουργώ τα δικά μου χρώματα με το RGB LED

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Ενσωματωμένα Συστήματα

Ενσωματωμένα Συστήματα

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Εργαστηριακές σημειώσεις για το μάθημα: «Εισαγωγή στην Μηχατρονική»

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Υπολογιστικά Συστήματα

Εφαρμογές Σειριακής Επικοινωνίας

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

FOSSCOMM ο Συνέδριο Κοινοτήτων Ανοιχτού Λογισμικού Σάββατο 20 Απριλίου Ομάδα Σχολής Ικάρων Εργαστήριο Arduino

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ψηφιακή Οικονομία. Διάλεξη 7η: Consumer Behavior Mαρίνα Μπιτσάκη Τμήμα Επιστήμης Υπολογιστών

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

3.4 SUM AND DIFFERENCE FORMULAS. NOTE: cos(α+β) cos α + cos β cos(α-β) cos α -cos β

Ψηφιακή Οικονομία. Διάλεξη 11η: Markets and Strategic Interaction in Networks Mαρίνα Μπιτσάκη Τμήμα Επιστήμης Υπολογιστών

Section 8.3 Trigonometric Equations

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

the total number of electrons passing through the lamp.

Business English. Ενότητα # 9: Financial Planning. Ευαγγελία Κουτσογιάννη Τμήμα Διοίκησης Επιχειρήσεων

ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ(Visual Basic)

Πλακέτα Arduino. 1ο ΕΠΑΛ Περάματος - 7ο ΕΚ Πειραιά

9.09. # 1. Area inside the oval limaçon r = cos θ. To graph, start with θ = 0 so r = 6. Compute dr

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

ΔΙΔΑΚΤΙΚΟ ΣΕΝΑΡΙΟ ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΔΙΕΞΑΓΩΓΗΣ ΠΑΙΧΝΙΔΙΟΥ ΕΡΩΤΗΣΕΩΝ/ΑΠΑΝΤΗΣΕΩΝ ΜΕ ΧΡΗΣΗ ARDUINO - QUIZ GAME ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 3

2017 Κατασκευάζω και Προγραμματίζω με τον μικροελεγκτή Arduino

Σχεδίαση Ψηφιακών Συστημάτων

Αρχιτεκτονική Υπολογιστών

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΑΛΛΗΛΟΓΡΑΦΙΑ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑ ΣΤΗΝ ΑΓΓΛΙΚΗ ΓΛΩΣΣΑ

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Δομημένος Προγραμματισμός

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

(C) 2010 Pearson Education, Inc. All rights reserved.

Ψηφιακή Σχεδίαση. Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:01. Δρ. Μηνάς Δασυγένης. Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Οι αδελφοί Montgolfier: Ψηφιακή αφήγηση The Montgolfier Βrothers Digital Story (προτείνεται να διδαχθεί στο Unit 4, Lesson 3, Αγγλικά Στ Δημοτικού)

Μ.Π.Σ. «ΠΡΟΗΓΜΕΝΕΣ ΜΕΘΟΔΟΙ ΚΑΤΑΣΚΕΥΗΣ ΠΡΟΙΟΝΤΩΝ ΑΠΟ ΞΥΛΟ» Μάθημα: Σχεδίαση και Εφαρμογές Διαδραστικών Συστημάτων. Διδάσκοντας: Α.

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Αρχιτεκτονική Υπολογιστών

ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO. Υποψήφιος Διδάκτωρ

Φύλλο εργασίας 4 - Αυτόματο φωτάκι νυκτός

ΟΡΟΛΟΓΙΑ -ΞΕΝΗ ΓΛΩΣΣΑ

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ

Αρχιτεκτονική Υπολογιστών

Démographie spatiale/spatial Demography

How to register an account with the Hellenic Community of Sheffield.

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook

Απλή Δομή Επιλογής. Ο κώδικας. //με χρήση μεταβλητών. delay (3000);

Υπολογιστικά Συστήματα

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1

Αναερόβια Φυσική Κατάσταση

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Παραδείγµατα χρήσης του µικροελεγκτή Arduino Εφαρµογές για το εργαστήριο Μέρος 2 ο :Οδήγηση Κινητήρων DC(PM)

Σχεδίαση Ψηφιακών Συστημάτων

2. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΤΩΝ ΘΥΡΩΝ ΕΙΣΟ ΟΥ/ΕΞΟ ΟΥ ΤΟΥ PIC16F877-ΑΡΙΘΜΗΤΙΚΕΣ ΕΝΤΟΛΕΣ

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

VBA ΣΤΟ WORD. 1. Συχνά, όταν ήθελα να δώσω ένα φυλλάδιο εργασίας με ασκήσεις στους μαθητές έκανα το εξής: Version ΗΜΙΤΕΛΗΣ!!!!

Αρχιτεκτονική Υπολογιστών

derivation of the Laplacian from rectangular to spherical coordinates

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Instruction Execution Times

The Simply Typed Lambda Calculus

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Αρχιτεκτονική Υπολογιστών

Ενσωματωμένα Συστήματα

Areas and Lengths in Polar Coordinates

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Ενσωματωμένα Συστήματα

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Section 9.2 Polar Equations and Graphs

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Transcript:

Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ: CIRC-02 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών http://arch.icte.uowm.gr/mdasyg

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ψηφιακά Μαθήματα του Πανεπιστημίου Δυτικής Μακεδονίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 2

Περιεχόμενα 1.Σκοπός της άσκησης...4 2.Παραδοτέα...4 3.Κατασκευή του κυκλώματος CIRC-02...5 4.Επαλήθευση παραμέτρων στο προγραμματιστικό περιβάλλον του Arduino...5 5.Προγραμματισμός του κυκλώματος CIRC-02...6 6.Παραμετροποίηση του κυκλώματος CIRC-02...6 6.1Αλλαγή συνάρτησης ελέγχου των LEDs...6 6.2Δημιουργία μιας δικιάς μας συνάρτησης για τον έλεγχο των LEDs...7 3

1. Σκοπός της άσκησης Χρήση του αναπτυξιακού περιβάλλοντος του Arduino 1 για τη συγγραφή και τη μεταφόρτωση προγραμμάτων στην πλακέτα του Arduino Uno. Δημιουργία κυκλώματος ελέγχου ενός LED. 2. Παραδοτέα Ένα αρχείο zip με τα project CIRC_02, CIRC_02_d1, CIRC_02_d2 που θα δημιουργήσετε. Ένα screenshot από το Arduino IDE που δείχνει ότι η μεταγλώττιση (compile) έγινε με επιτυχία και ταυτόχρονα εμφανίζει το μέγεθος του δυαδικού σχεδίου για κάθε κύκλωμα. Ένα video 5-10 sec επίδειξης του κυκλώματος μαζί με ηχητική περιγραφή για κάθε κύκλωμα. Χρόνος ολοκλήρωσης εργαστηρίου: 25 λεπτά. Στην προηγούμενη εργαστηριακή άσκηση υλοποιήθηκε ένα κύκλωμα που ενεργοποιούσε και απενεργοποιούσε ένα LED. Σ' αυτή την εργαστηριακή άσκηση θα υλοποιηθεί ένα κύκλωμα που εφαρμόζει την ίδια λειτουργία σε οκτώ LEDs. Θα υλοποιηθούν διάφορα LED animations και θα κατανοηθούν καλύτερα οι βασικές αρχές λειτουργίας και προγραμματισμού του Arduino, αφού θα χρησιμοποιηθούν πίνακες για ευκολότερη διαχείριση των μεταβλητών και η for() για επαναλήψεις. 1 Χρησιμοποιήθηκε υλικό από το SparkFun Inventors Kit for Arduino 4

3. Κατασκευή του κυκλώματος CIRC-02 Για την εκπόνηση του κυκλώματος CIRC-02 απαιτούνται τα εξής μέρη: Στοιχείο Περιγραφή και ποσότητα 8x 5mm κίτρινο LED 8x Αντίσταση 330 Ohm (Πορτοκαλί Πορτοκαλί Καφέ ) 10x Καλώδια Τα φυλλάδια δεδομένων (datasheets) των υλικών βρίσκονται παρακάτω: LED Αντίσταση 330 Ohm Κατασκευάστε το κύκλωμα, σύμφωνα με την παρακάτω σχηματική αναπαράσταση: Σχήμα 1 Σχήμα 2 Συνδέστε το θετικό ακροδέκτη του LED στο στο αναγραφόμενο pin του Arduino και μια αντίσταση 330 Ohm στον κάθε αρνητικό ακροδέκτη, που να πηγαίνει στη γείωση. Επισημαίνεται ότι o θετικός ακροδέκτης του LED είναι αυτός με το μεγαλύτερο μήκος. 5

Τέλος συνδέστε, στις κατάλληλες θέσεις του breadboard, ένα καλώδιο στο pin τροφοδοσίας 5V του Arduino και ένα σε κάποιο pin γείωσης (Gnd). 4. Επαλήθευση παραμέτρων στο προγραμματιστικό περιβάλλον του Arduino Συνδέστε το Arduino Uno και ανοίξτε το προγραμματιστικό περιβάλλον του. Επιβεβαιώστε ότι η επιλεγμένη σειριακή θύρα είναι η θύρα στην οποία είναι συνδεδεμένο το Arduino. Βεβαιωθείτε ότι η επιλεγμένη πλακέτα είναι το Arduino Uno Βεβαιωθείτε ότι ο επιλεγμένος προγραμματιστής είναι ο AVRISP mkii Όλα τα παραπάνω έχουν περιγραφεί αναλυτικά στην Ενότητα 2 του CIRC-01. 5. Προγραμματισμός του κυκλώματος CIRC-02 Αντιγράψτε τον παρακάτω κώδικα στο προγραμματιστικό περιβάλλον του Arduino. (Εναλλακτικά κατεβάστε τον από εδώ) Κώδικας προγραμματισμού του κυκλώματος --------------------------------------------------------- * Arduino Experimentation Kit Example Code * CIRC-02.: 8 LED Fun :. (Multiple LEDs) * --------------------------------------------------------- * * A few Simple LED animations * * For more information on this circuit http://tinyurl.com/d2hrud * //LED Pin Variables int ledpins[] = {2,3,4,5,6,7,8,9; //An array to hold the pin each LED is connected to //i.e. LED #0 is connected to pin 2, LED #1, 3 and so on //to address an array use ledpins[0] this would equal 2 //and ledpins[7] would equal 9 * setup() - this function runs once when you turn your Arduino on * We the three control pins to outputs void setup() { //Set each pin connected to an LED to output mode (pulling high (on) or low (off) for(int i = 0; i < 8; i++){ //this is a loop and will repeat eight times pinmode(ledpins[i],output); //we use this to set each LED pin to output //the code this replaces is below (commented code will not run) * these are the lines replaced by the for loop above they do exactly the * same thing the one above just uses less typing pinmode(ledpins[0],output); pinmode(ledpins[1],output); pinmode(ledpins[2],output); 6

Κώδικας προγραμματισμού του κυκλώματος pinmode(ledpins[3],output); pinmode(ledpins[4],output); pinmode(ledpins[5],output); pinmode(ledpins[6],output); pinmode(ledpins[7],output); (end of commented code) * loop() - this function will start after setup finishes and then repeat * we call a function called oneafteranother(). if you would like a different behaviour * uncomment (delete the two slashes) one of the other lines void loop() // run over and over again { oneafteranothernoloop(); off //oneafteranotherloop(); //this will turn on each LED one by one then turn each //does the same as oneafteranothernoloop but with //much less typing //oneonatatime(); //this will turn one LED on then turn the next one //on turning the //former off (one LED will look like it is scrolling //along the lin//inandout(); //lights the two middle LEDs then moves them out then back //in again * oneafteranothernoloop() - Will light one LED then delay for delaytime then light * the next LED until all LEDs are on it will then turn them off one after another * * this does it without using a loop which makes for a lot of typing. * oneonatatimeloop() does exactly the same thing with less typing void oneafteranothernoloop(){ int delaytime = 100; //the time (in milliseconds) to pause between LEDs //make smaller for quicker switching and larger for slower digitalwrite(ledpins[0], HIGH); //Turns on LED #0 (connected to pin 2 ) digitalwrite(ledpins[1], HIGH); //Turns on LED #1 (connected to pin 3 ) digitalwrite(ledpins[2], HIGH); //Turns on LED #2 (connected to pin 4 ) digitalwrite(ledpins[3], HIGH); //Turns on LED #3 (connected to pin 5 ) digitalwrite(ledpins[4], HIGH); //Turns on LED #4 (connected to pin 6 ) digitalwrite(ledpins[5], HIGH); //Turns on LED #5 (connected to pin 7 ) digitalwrite(ledpins[6], HIGH); //Turns on LED #6 (connected to pin 8 ) digitalwrite(ledpins[7], HIGH); //Turns on LED #7 (connected to pin 9 ) //Turns Each LED Off digitalwrite(ledpins[7], LOW); //Turns on LED #0 (connected to pin 2 ) digitalwrite(ledpins[6], LOW); //Turns on LED #1 (connected to pin 3 ) digitalwrite(ledpins[5], LOW); //Turns on LED #2 (connected to pin 4 ) digitalwrite(ledpins[4], LOW); //Turns on LED #3 (connected to pin 5 ) digitalwrite(ledpins[3], LOW); //Turns on LED #4 (connected to pin 6 ) digitalwrite(ledpins[2], LOW); //Turns on LED #5 (connected to pin 7 ) 7

Κώδικας προγραμματισμού του κυκλώματος digitalwrite(ledpins[1], LOW); //Turns on LED #6 (connected to pin 8 ) digitalwrite(ledpins[0], LOW); //Turns on LED #7 (connected to pin 9 ) * oneafteranotherloop() - Will light one LED then delay for delaytime then light * the next LED until all LEDs are on it will then turn them off one after another * * this does it using a loop which makes for a lot less typing. * than oneonatatimenoloop() does exactly the same thing with less typing void oneafteranotherloop(){ int delaytime = 100; //the time (in milliseconds) to pause between LEDs //make smaller for quicker switching and larger for slower //Turn Each LED on one after another for(int i = 0; i <= 7; i++){ digitalwrite(ledpins[i], HIGH); //Turns on LED #i each time this runs i delay(delaytime); //gets one added to it so this will repeat //8 times the first time i will = 0 the final //time i will equal 7; //Turn Each LED off one after another for(int i = 7; i >= 0; i--){ //same as above but rather than starting at 0 and counting up //we start at seven and count down digitalwrite(ledpins[i], LOW); //Turns off LED #i each time this runs i delay(delaytime); //gets one subtracted from it so this will repeat //8 times the first time i will = 7 the final //time it will equal 0 * oneonatatime() - Will light one LED then the next turning off all the others void oneonatatime(){ int delaytime = 100; //the time (in milliseconds) to pause between LEDs //make smaller for quicker switching and larger for slower for(int i = 0; i <= 7; i++){ int offled = i - 1; //Calculate which LED was turned on last time through if(i == 0) { //for i = 1 to 7 this is i minus 1 (i.e. if i = 2 we will offled = 7; //turn on LED 2 and off LED 1) //however if i = 0 we don't want to turn of led -1 (doesn't exist) //instead we turn off LED 7, (looping around) digitalwrite(ledpins[i], HIGH); //turn on LED #i digitalwrite(ledpins[offled], LOW); //turn off the LED we turned on last time delay(delaytime); * inandout() - This will turn on the two middle LEDs then the next two out * making an in and out look void inandout(){ int delaytime = 100; //the time (in milliseconds) to pause between LEDs //make smaller for quicker switching and larger for slower //runs the LEDs out from the middle for(int i = 0; i <= 3; i++){ int offled = i - 1; //Calculate which LED was turned on last time through if(i == 0) { //for i = 1 to 7 this is i minus 1 (i.e. if i = 2 we will offled = 3; //turn on LED 2 and off LED 1) //however if i = 0 we don't want to turn of led -1 (doesn't exist) 8

Κώδικας προγραμματισμού του κυκλώματος //instead we turn off LED 7, (looping around) int onled1 = 3 - i; //this is the first LED to go on ie. LED #3 when i = 0 and LED //#0 when i = 3 int onled2 = 4 + i; //this is the first LED to go on ie. LED #4 when i = 0 and LED //#7 when i = 3 int offled1 = 3 - offled; //turns off the LED we turned on last time int offled2 = 4 + offled; //turns off the LED we turned on last time digitalwrite(ledpins[onled1], HIGH); digitalwrite(ledpins[onled2], HIGH); digitalwrite(ledpins[offled1], LOW); digitalwrite(ledpins[offled2], LOW); delay(delaytime); //runs the LEDs into the middle for(int i = 3; i >= 0; i--){ int offled = i + 1; //Calculate which LED was turned on last time through if(i == 3) { //for i = 1 to 7 this is i minus 1 (i.e. if i = 2 we will offled = 0; //turn on LED 2 and off LED 1) //however if i = 0 we don't want to turn of led -1 (doesn't exist) //instead we turn off LED 7, (looping around) int onled1 = 3 I;//this is the first LED to go on ie. LED #3 when i = 0 and LED //#0 when i = 3 int onled2 = 4 + i; //this is the first LED to go on ie. LED #4 when i = 0 and LED //#7 when i = 3 int offled1 = 3 - offled; //turns off the LED we turned on last time int offled2 = 4 + offled; //turns off the LED we turned on last time digitalwrite(ledpins[onled1], HIGH); digitalwrite(ledpins[onled2], HIGH); digitalwrite(ledpins[offled1], LOW); digitalwrite(ledpins[offled2], LOW); delay(delaytime); Πατήστε Αποθήκευση (Ctrl+s). Θα σας ζητηθεί να δώστε όνομα φακέλου (Sketch Folder). Δώστε CIRC-02 και πατήστε Αποθήκευση. Το πρόγραμμα θα δημιουργήσει τον φάκελο CIRC- 02 μέσα στον οποίο θα περιέχεται το αρχείο CIRC-02.ino με τον κώδικα που γράψατε παραπάνω. Στη συνέχεια φορτώστε το πρόγραμμα στην πλακέτα πατώντας Φόρτωση (Ctrl+u). Μόλις ολοκληρωθεί η διαδικασία φόρτωσης το πρόγραμμα θα εκτελεστεί στην πλακέτα, κάνοντας το LED του κυκλώματος και της πλακέτας να αναβοσβήνει. Σε περίπτωση που κάποια LEDs δεν ανάβουν, ελέγξτε την πολικότητα τους. Αν κάποια LEDs ανάβουν εκτός της ακολουθίας που περιγράφεται στη συνάρτηση oneafteranothernoloop() ελέγξτε μήπως τα καλώδια τους έχουν τοποθετηθεί στη λάθος θύρα. 6. Παραμετροποίηση του κυκλώματος CIRC-02 6.1 Αλλαγή συνάρτησης ελέγχου των LEDs Στη συνάρτηση loop() υπάρχουν τέσσερεις συναρτήσεις και οι τελευταίες τρεις ξεκινούν με //. Αυτό σημαίνει ότι η γραμμή αντιμετωπίζεται ως σχόλιο και δεν εκτελείται. Για να αλλάξετε τη 9

συνάρτηση ελέγχου των LEDs από την oneafteranothernoloop(), σε μία από τις άλλες τρεις, βάλτε σχόλιο στην oneafteranothernoloop(), και σβήστε τα από μια άλλη, όπως παρακάτω. Πατήστε Αποθήκευση ως (Ctrl+Shift+s), και μεταβείτε έξω από το φάκελο του project CIRC_02 αν είστε μέσα σ αυτόν. Δώστε όνομα φακέλου CIRC_02_d1 για να αποθηκεύσετε το πρόγραμμα. Στη συνέχεια, φορτώστε το στην πλακέτα (Ctrl+u). Επιβεβαιώστε την ορθή λειτουργία του κυκλώματος. (Σημείωση: Οι oneafteranothernoloop() και oneafteranotherloop() έχουν την ίδια λειτουργία, απλά διαφέρουν ως προς την υλοποίηση) 6.2 Δημιουργία μιας δικιάς μας συνάρτησης για τον έλεγχο των LEDs Στο τέλος του προγράμματος, μετά τη συνάρτηση inandout(), ορίστε μια συνάρτηση με όνομα my_animation() η οποία θα υλοποιεί ένα animation που θα γράψετε εσείς. Ενδεικτικά η δομή μιας συνάρτησης είναι: void <όνομα συνάρτησης>() { <Ορισμόι μεταβλητών> <Εντολές> Μόλις ολοκληρώσετε τη συγγραφή της συνάρτησης, πηγαίνετε στη συνάρτηση loop() και καλέστε την γράφοντας my_animation();. Το animation που πρέπει να υλοποιήσετε είναι το animation που υπάρχει στο video. Θα πρέπει να χρησιμοποιήσετε τουλάχιστον ένα for-loop. Μην παραλείψετε να κάνετε σχόλια όλες τις άλλες κλήσεις συναρτήσεων που περιέχονται στην loop(). Πατήστε Αποθήκευση ως (Ctrl+Shift+s), μεταβείτε έξω από το φάκελο του ήδη αποθηκευμένου project, αν είστε μέσα σ αυτόν, (όμοια με πριν θα πρέπει να βλέπετε τους φακέλους CIRC_02, CIRC_02_d1) και δώστε όνομα φακέλου CIRC_02_d2 για να αποθηκεύσετε το πρόγραμμα. Στη συνέχεια, φορτώστε το στην πλακέτα (Ctrl+u). Επιβεβαιώστε ότι η συνάρτηση σας δουλεύει όπως θα έπρεπε. 10