Εργαστηριακή Άσκηση 9: Ενδείκτης 7 τμημάτων
Θεωρία: Ενδείκτης 7 τμημάτων
Οι ενδείκτες 7 τμημάτων χρησιμοποιούνται για την αναπαράσταση των ψηφίων του δεκαδικού συστήματος αρίθμησης (0-9). Για την κατασκευή των 7 τμημάτων (a, b, c, d, e, f και g) χρησιμοποιούνται δίοδοι εκπομπής φωτός ( Light Emitting Diodes) τα γνωστά LEDS. Οι ενδείκτες βασίζουν τη λειτουργία τους στο γεγονός ότι οι δίοδοι εκπέμπουν φως όταν διαρρέονται από ρεύμα.

Τα ψηφία του δεκαδικού συστήματος σχηματίζονται από την ενεργοποίηση (εφαρμογή τάσης 0 ή 5 volt) στα τμήματα a, b, c, d, e, f και g, του ενδείκτη. Για παράδειγμα το ψηφίο 1 σχηματίζεται µε ενεργοποίηση των τμημάτων b και c, ενώ το ψηφίο 5 µε την ενεργοποίηση των τμημάτων a, f, g, c και d. Στο σχήμα φαίνεται ο τρόπος σύνδεσης ενός δεκαδικού ενδείκτη. Οι δεκαδικοί ενδείκτες μπορεί να είναι κοινής καθόδου ή κοινής ανόδου. Στη πρώτη περίπτωση όλες οι κάθοδοι των διόδων LED του ενδείκτη είναι συνδεδεμένες σε ένα κοινό σημείο το οποίο γειώνεται, ενώ στη δεύτερη περίπτωση όλες οι άνοδοι των διόδων LED συνδέονται σε ένα κοινό σημείο το οποίο συνδέεται στην τάση τροφοδοσίας.

Αλφαριθμητικοί ενδείκτες 14 και 16 τμημάτων
Υπάρχουν ενδείκτες με 14 και 16 τμήματα ώστε να είναι δυνατή η απεικόνιση και όλων των χαρακτήρων του λατινικού αλφάβητου.

1η Μέθοδος προγραμματισμού
Για την εμφάνιση κάποιου αριθμού στον ενδείκτη θα πρέπει να φτιάξουμε μια ομάδα εντολών με τις οποίες θα δίνουμε λογική κατάσταση HIGH στις εξόδους που είναι συνδεδεμένα τα τμήματα του ενδείκτη που θέλουμε να ανάψουν. Κάθε ομάδα εντολών θα εκτελείται μόνο όταν θέλουμε να εμφανίσουμε τον συγκεκριμένο αριθμό στον ενδείκτη.
Μια ομάδα εντολών ονομάζεται υπορουτίνα. Οι υπορουτίνες είναι τμήματα κώδικα που εκτελούνται μόνο όταν το επιλέξουμε μέσα από την κύρια ρουτίνα του προγράμματος δηλ. μέσα από την void loop(). Επομένως, θα πρέπει να γράψουμε 10 υπορουτίνες, μια για κάθε αριθμό. Μέσα από την διαδικασία void loop() θα καλείται κάθε φορά η υπορουτίνα του αριθμού που θέλουμε να εμφανίζεται στον ενδείκτη. Π.χ. Όταν θέλουμε να απεικονίζεται ο αριθμός 0 θα πρέπει να καλούμε την υπορουτίνα εμφάνισης του αριθμού 0 π.χ. display0();

2η Μέθοδος προγραμματισμού
Χρήση μεταβλητών με τη μορφή ακολουθίας τιμών ή πίνακα (array). Στη γλώσσα προγραμματισμού του Arduino μπορούμε να δημιουργήσουμε ακολουθίες τιμών, ακέραιες ή άλλου τύπου που μας διευκολύνουν στη χρήση δομών επανάληψης for.
Π.χ. Για να ορίσουμε σε ποια pins του Arduino συνδέονται τα 7 τμήματα του ενδείκτη μπορούμε να δημιουργήσουμε ένα πίνακα μιας σειράς με τα pins:
int segments[] = {2, 3, 4, 5, 6, 7, 8}; // segments[0] = 2, segments[1] = 3, segments[2] = 4 κ.ο.κ
Για να ορίσουμε τι τιμές πρέπει να έχουν τα pins του Arduino προκειμένου ο ενδείκτης να απεικονίζει τους αριθμούς από 0 έως 9 χρησιμοποιούμε έναν πίνακα numbers[] 2 διαστάσεων.
int numbers[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
- Πρώτη Διάσταση ([10]):
Υπάρχουν 10 γραμμές στον πίνακα, μία για κάθε αριθμό (0–9).
- Δεύτερη Διάσταση ([7]):
Κάθε γραμμή περιέχει 7 τιμές, μία για κάθε τμήμα του ενδείκτη (A, B, C, D, E, F, G).
- Κάθε τιμή (1 ή 0):
1: Το αντίστοιχο τμήμα του ενδείκτη ανάβει.
0: Το αντίστοιχο τμήμα του ενδείκτη σβήνει.
Παράδειγμα για τον αριθμό 0:
Η γραμμή: {1, 1, 1, 1, 1, 1, 0} // 0
- Ενεργοποιεί τα τμήματα: A, B, C, D, E, F.
- Απενεργοποιεί το τμήμα: G.
- Το αποτέλεσμα είναι η εμφάνιση του αριθμού 0 στον ενδείκτη.
** Για καλύτερα αποτελέσματα οι πίνακες πρέπει να χρησιμοποιούνται σε συνδυασμό με δομές επανάληψης for.
Πλεονεκτήματα Χρήσης Πίνακα
- Απλότητα: Δεν χρειάζεται να γράφουμε ξεχωριστές εντολές για κάθε αριθμό.
- Ευελιξία: Μπορούμε εύκολα να αλλάξουμε τις αντιστοιχίες αν έχουμε διαφορετικό τύπο ενδείκτη.
- Επαναχρησιμοποίηση: Η ίδια δομή μπορεί να χρησιμοποιηθεί σε πολλαπλές εφαρμογές με ενδείκτες επτά τμημάτων.
Εν ολίγοις, ο πίνακας numbers είναι ένας “χάρτης” που δείχνει πώς να ανάψουν τα τμήματα για κάθε αριθμό.
int segments[] = {2, 3, 4, 5, 6, 7, 8}; // Pins για A-G
int numbers[10][7] =
{
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
void setup() {
for (int i = 0; i < 7; i++)
{
pinMode(segments[i], OUTPUT);
}
}
void loop()
{
for (int num = 0; num < 10; num++)
{
displayNumber(num); // Εμφάνιση αριθμών 0–9
delay(1000); // 1 δευτερόλεπτο
}
}
void displayNumber(int num)
{
for (int i = 0; i < 7; i++)
{
digitalWrite(segments[i], numbers[num][i]);
}
}
Πρακτική Εφαρμογή: Χρήση ενδείκτη 7 τμημάτων
Υλικά
- 1 x Arduino (π.χ., Uno)
- 1 x Ενδείκτης επτά τμημάτων (κοινής ανόδου ή κοινής καθόδου)
- 7 x Αντιστάσεις (330Ω – 1kΩ)
- Καλώδια σύνδεσης (jumper wires)
- 1 x Breadboard (καρτέλα συνδέσεων)
- Υπολογιστής με εγκατεστημένο το Arduino IDE
- USB καλώδιο για Arduino
Μέρος 1: Σύνδεση Κυκλώματος
- Αναγνώριση του ενδείκτη επτά τμημάτων:
- Εντοπίστε τα 7 τμήματα: A, B, C, D, E, F, G.
- Εντοπίστε τον ακροδέκτη κοινής ανόδου/καθόδου (Common Anode/ Cathode).
- Δημιουργία κυκλώματος:
- Συνδέστε τον κοινό ακροδέκτη του ενδείκτη:
- Αν είναι κοινής ανόδου, συνδέστε τον στο +5V.
- Αν είναι κοινής καθόδου, συνδέστε τον στο GND.
- Συνδέστε τα τμήματα (A–G) στα pins του Arduino:
- Συνδέστε τον κοινό ακροδέκτη του ενδείκτη:
Α -> 2, Β – > 3, C – > 4, D – > 5, E – > 6, F – > 7, G – > 8
- Τοποθετήστε μία αντίσταση (220Ω) μεταξύ κάθε pin του Arduino και του ενδείκτη.

Μέρος 2: Προγραμματισμός του Arduino
- Γράψτε τον Κώδικα: Χρησιμοποιήστε ένα από τα δύο παραδείγματα που δίνονται παραπάνω.
- Μεταφόρτωση στο Arduino:
- Συνδέστε το Arduino στον υπολογιστή μέσω USB.
- Πατήστε το κουμπί Upload στο Arduino IDE.
Μέρος 3: Λειτουργία
- Παρατηρήστε τον ενδείκτη:
- Πρέπει να εμφανίζει διαδοχικά τους αριθμούς από το 0 έως το 9, με παύση 1 δευτερολέπτου ανάμεσα.
- Πειραματισμός:
- Τροποποιήστε τον κώδικα ώστε να εμφανίζονται οι αριθμοί με φθίνουσα σειρά.
Ερωτήσεις:
- Τι αλλαγές θα πρέπει να κάνετε στον κώδικα αν ο ενδείκτης είναι κοινής ανόδου αντί για κοινής καθόδου;
- Πώς θα προσθέσετε την εμφάνιση της τελείας (δεκαδικού σημείου) στον ενδείκτη;
- Πώς μπορείτε να χρησιμοποιήσετε δύο ενδείκτες επτά τμημάτων για να εμφανίσετε διψήφιους αριθμούς;
Επέκταση Δραστηριότητας
- Συνδέστε έναν ποτενσιόμετρο και χρησιμοποιήστε την είσοδο του για να ελέγξετε τον αριθμό που εμφανίζεται στον ενδείκτη.
- Προγραμματίστε τον ενδείκτη να εμφανίζει αριθμούς από 0 έως 99, χρησιμοποιώντας δύο ενδείκτες επτά τμημάτων.
- Τροποποιήσετε το προηγούμενο κύκλωμα και πρόγραμμα, ώστε η απαρίθμηση να ξεκινάει με το πάτημα ενός push button.
