Εξομοίωση φωτεινού σηματοδότη αυτοκινήτων
Αυτή η εφαρμογή αποτελεί την υλοποίηση ενός φωτεινού σηματοδότη υπό κλίμακα, ο οποίος θα λειτουργεί όπως ακριβώς και ο πραγματικός σηματοδότης αυτοκινήτων στο δρόμο. Το φυσικό κύκλωμα αποτελεί μια επέκταση του αρχικού κυκλώματος ελέγχου LED. Σε αυτή την περίπτωση, έχουμε τρία ανεξάρτητα κυκλώματα ελέγχου LED με αντίσταση, προκειμένου κάθε LED να ελέγχεται ξεχωριστά από την αντίστοιχη θύρα. Το σημαντικό στοιχείο της εφαρμογής από την εκπαιδευτική πλευρά, είναι η υλοποίηση ενός συστήματος το οποίο γνωρίζουμε ήδη στον πραγματικό κόσμο. Με αυτό τον τρόπο γίνεται η «σύνδεση» στο μυαλό των εκπαιδευόμενων οι οποίοι απομυθοποιούν τη λειτουργία του σηματοδότη, συζητούν τη λειτουργία του και πειραματίζονται με πιθανές ρυθμίσεις και επεκτάσεις της εφαρμογής.
1. Arduino UNO
2. Καλώδιο σύνδεσης USB (type-A to type-B)
3. Breadboard
4. Τέσσερα έως επτά Καλώδια, ανάλογα την υλοποίηση (αρσενικό-αρσενικό)
5. Τρία LED 5mm (κόκκινο, πορτοκαλί, πράσινο)
6. Τρείς αντιστάσεις 150-220Ω 1/4W
T I N K E R C A D |
Ακροδέκτης Arduino |
Κύκλωμα |
7 |
κόκκινο LED |
6 |
πορτοκαλί LED |
5 |
πράσινο LED |
GND |
κοινή γείωση |
int led_re=7; int led_or=6; int led_gr=5; int delay_re=10000; int delay_or=2000; int delay_gr=5000; void setup() { for(int i=led_gr;i<=led_re;i++) pinMode(i, OUTPUT); } void loop() { digitalWrite(led_or,LOW); digitalWrite(led_re,HIGH); delay(delay_re); digitalWrite(led_re,LOW); digitalWrite(led_gr,HIGH); delay(delay_gr); digitalWrite(led_gr,LOW); digitalWrite(led_or,HIGH); delay(delay_or); } |
//Το πράσινο LED είναι συνδεδεμένο στον ακροδέκτη 7 int led_re=7; //Το πορτοκαλί LED είναι συνδεδεμένο στον ακροδέκτη 6 int led_or=6; //Το πορτοκαλί LED είναι συνδεδεμένο στον ακροδέκτη 5 int led_gr=5; //Το κόκκινο θα διαρκεί 10 δευτερόλεπτα int delay_re=10000; //Το κόκκινο θα διαρκεί 2 δευτερόλεπτα int delay_or=2000; //Το πράσινο θα διαρκεί 5 δευτερόλεπτα int delay_gr=5000; //Συνάρτηση που εκτελείται μια φορά (μετά από τροφοδοσία ή Reset) void setup() { //Τα LED είναι συνδεδεμένα διαδοχικά στους ακροδέκτες 5,6,7 //Με ένα βρόχο επανάληψης καθορίζουμε τους ακροδέκτες ως έξοδο //Αρχική τιμή μετρητή i=led_gr, δηλαδή 5, τελική τιμή μετρητή i=led_re, //δηλαδή 7 και βήμα 1 for(int i=led_gr;i<=led_re;i++) //Ο ακροδέκτης i θα γίνει έξοδος pinMode(i, OUTPUT); } //Συνάρτηση που εκτελείται συνέχεια void loop() { //Σβήνει το πορτοκαλί και ανάβει το κόκκινο //Την πρώτη φορά δεν έχει νόημα να σβήσει το πορτοκαλί αλλά το χρειαζόμαστε για την επανάληψη digitalWrite(led_or,LOW); digitalWrite(led_re,HIGH); //Αναμονή delay(delay_re); //Σβήνει το κόκκινο και ανάβει το πράσινο digitalWrite(led_re,LOW); digitalWrite(led_gr,HIGH); //Αναμονή delay(delay_gr); //Σβήνει το πράσινο και ανάβει το πορτοκαλί digitalWrite(led_gr,LOW); digitalWrite(led_or,HIGH); //Αναμονή delay(delay_or); } |