microdev.gr




Περιγραφή-Σκοπός της εφαρμογής

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

Βίντεο Εφαρμογής #1

Βίντεο Εφαρμογής #2

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

Απαραίτητα Εξαρτήματα

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

Μελετήστε και δοκιμάστε το κύκλωμα στον προσομοιωτή TinkerCAD. Απαιτείται μόνο να έχετε δωρεάν λογαριασμό. Δεν χρειάζεται να έχετε εξοπλισμό, ενώ μπορείτε να κάνετε οποιαδήποτε αλλαγή στον αντίστοιχο κώδικα.
Προσομοιώστε την εφαρμογή >>

Συνδέσεις

Ακροδέκτης Arduino
Κύκλωμα
7
κόκκινο LED
6
πορτοκαλί LED
5
πράσινο LED
GND
κοινή γείωση

Κώδικας (χωρίς σχόλια) στο Arduino IDE

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);
}

Κώδικας (με σχόλια) στο Arduino IDE

//Το πράσινο 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);

}