Ardumotive Arduino Greek Playground
  • Home
    • About us
    • Contact
    • License
  • Arduino
    • Tutorials
    • Workshop
  • Raspberry Pi
  • DIY 3D Printer
  • News
    • Events >
      • Unboxing & Review
    • Blog
The 1st Arduino Playground in Greece - Open Source Hardware

Digit - LED Display

Available Languages
Greek
English

Εισαγωγή

Picture
Σε αυτό το tutorial θα δούμε πως μπορούμε να χρησιμοποιήσουμε ένα ψηφίο 7 segment display με το Arduino uno με σκοπό να τυπώσουμε σε αυτό μέσω της σειριακής οθόνης έναν αριθμό απ' το 1 μέχρι το 9. Αυτόν τον τύπο οθόνης το συναντάμε συχνά σε ψηφιακά ρολόγια, ξυπνητήρια, ακόμα και σε αγώνες μπάσκετ (πίνακας σκορ, αντίστροφη μέτρηση πάνω απ' το καλάθι) και ποδοσφαίρου (αλλαγή παίχτη).  Το αποτέλεσμα μπορείτε να το δείτε και στο παρακάτω βίντεο.

Τι είναι ένα 7 segment display;

Picture
Picture
Μια οθόνη - ψηφίο 7 segment είναι ένα παραλληλόγραμμο πλαίσιο που ουσιαστικά αποτελείτε απο επτά LED. Κάθε LED ονομάζεται segment γιατί αναπαριστά μέρος του ψηφίου που μπορεί να εμφανιστεί μέσα σε αυτό. Επιπλέον υπάρχει ενα 8ο LED στην κάτω δεξιά γωνία που χρησιμοποιείτε ως τελεία, π.χ. για να αναπαραστήσει δεκαδικό αριθμό όταν υπάρχουν δυο (ή περισσότερα) ψηφία-οθόνες. Κάποια seven segment displays υποστηρίζουν και γράμματα εκτός απ' αριθμούς. Μπορείτε επίσης να τα βρείτε σε διάφορα χρώματα.

Όπως έχουμε ήδη σε προηγούμενο tutorial, κάθε LED έχει δυο ακροδέκτες, την άνοδο και την κάθοδο. Η άνοδος είναι το θετικό άκρο και η κάθοδος το αρνητικό αντίστοιχα. Υπάρχουν δυο τύποι 7 segment: κοινής ανόδου και κοινής καθόδου. Στα displays κοινής ανόδου, όλοι οι ακροδέκτες των LED είναι βραχυκυκλωμένοι μεταξύ τους, ενώ οι ακροδέκτες καθόδου του κάθε LED βγαίνουν απ' το πίσω μέρος αυτού. Το ανάποδο συμβαίνει με τα displays κοινής καθόδου. Κάθε LED έχει ένα όνομα απ' το A μέχρι το G, όπως φαίνεται και στις παραπάνω εικόνες, για να μπορούμε εύκολα να τα ξεχωρίσουμε απ' τα υπόλοιπα.

Στο συγκεκριμένο tutorial θα χρησιμοποιήσω ένα ψηφίο 7 segment display κοινής καθόδου. Αν εσείς έχετε διαφορετικό, μπορείτε να το χρησιμοποιήσετε κανονικά, το μόνο που θα χρειαστεί είναι μια αλλαγή στον κώδικα.
Picture

Τα υλικά που θα χρειαστείτε

Για το tutorial αυτό θα χρειαστείτε:
  • Arduino uno
  • breadboard
  • Ένα ψηφίο seven segment 
  • Μερικά καλώδια 
Προτείνετε να χρησιμοποιήσετε και μια αντίσταση 220 Ohm σε κάθε ακροδέκτη-led του display.
Picture

Το κύκλωμα

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

Συμπληρωματικά και με βάση την ονομασία του κάθε segment LED όπως είδαμε παραπάνω, η συνδεσμολογία είναι η παρακάτω:​
  • Ε - Arduino pin 6
  • D - Arduino pin 7
  • CC - Arduino pin 4 (cc=common cathode)
  • DP - 
  • B - Arduino pin 9
  • A - Arduino pin 10
  • CC - Arduino pin 4 (πάλι)
  • F - Arduino pin 11
  • G - Arduino pin 12

Ο κώδικας με την χρήση του Codebender

Picture
O κώδικας περιέχει όλα τα σχόλια που χρειάζονται για την κατανόηση του. Αν έχετε οθόνη κοινής ανόδου, πατήστε edit και σβήστε την γραμμή"disp.setCommonCathode();"

Συμπληρωματικά για την καλύτερη κατανόηση του προγράμματος:
  • numOfDigits = 1 Δείχνει οτι έχουμε ένα ψηφίο, αν είχαμε δύο θα ήταν ίσο με 2.
  • digitPins[numOfDigitls]={4} Δείχνει οτι έχουμε συνδέσει την κοινή κάθοδο (cc pin) με το pin 4 του Arduino. Αν είχαμε και δέυτερο ψηφίο και την κοινή κάθοδο συνδεδεμένη με το pin 3 του Arduino τότε θα ήταν ίσο με {4,3}.
  • disp.setDutyCycle(50) Ελέγχει την φωτεινότητα των led (ποσοστό)
  • disp.writeDigit(number) Εκτυπώνει έναν αριθμό απο 0 μέχρι 9.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/* Arduino Tutorial - 7 Segment 
   One 7 segment is one digit, from 0 to  9.
   Dev: Vasilakis Michalis // Date: 25/7/2015 // www.ardumotive.com */

//Library
#include "SevenSeg.h"

//Defines the segments A-G: SevenSeg(A, B, C, D, E, F, G);
SevenSeg disp (10,9,8,7,6,11,12);
//Number of 7 segments
const int numOfDigits =1;
//CC(or CA) pins of segment
int digitPins [numOfDigits]={4};

//Variables
int number=0; //Default number
int flag;

void setup() {
	
  Serial.begin(9600);
  //Defines the number of digits to be "numOfDigits" and the digit pins to be the elements of the array "digitPins"
  disp.setDigitPins ( numOfDigits , digitPins );
  //Only for common cathode 7segments
  disp.setCommonCathode();
  //Control brightness (values 0-100);
  disp.setDutyCycle(50);
  
}

void loop()
{	
	//Check if incoming data is available:
    if (Serial.available() > 0)
    {
      // If it is, we'll use parseInt() to pull out only numbers:
      number = Serial.parseInt();
      flag=0;
    }

	//Valid range is from 1 to 9
	if (number>=1 && number<=9){
		//Print number to 7 segment display
		disp.writeDigit(number);
		
	    //Print message to serial monito only once
	    if (flag==0){ 
	    	//Print number to serial monitor
	    	Serial.print("Number on 7 segment display:");
	    	Serial.println(number);
	    	flag=1;
	    }
	}
}
Κατεβάστε τον κώδικα απ' εδώ και ανοίξτε το αρχείο με το Arduino IDE. Μέσα θα βρείτε και τις σχετικές βιβλιοθήκες.
sevensegment_tutorial.zip
File Size: 14 kb
File Type: zip
Download File


​Ανοίξτε την σειριακή οθόνη απ' το μενού εργαλεία του Arduino IDE, δοκιμάστε να στείλετε έναν αριθμό απ' το 1 μέχρι το 9.

Συγχαρητήρια! 

Picture
Μπορείτε επίσης να δοκιμάστε να εκτυπώσετε ένα γράμμα, π.χ. το F, απλά αλλάξτε την γραμμή κώδικα disp.writeDigit(number); σε disp.writeNumber("F"); (άλλα γράμματα που μπορούν να εκτυπωθούν σε αυτόν τον τύπο 7 seg: b, d, A, E)

Ελπίζω να σας άρεσε, αν θέλετε μπορείτε να αφήσετε το σχόλιο σας παρακάτω.
Picture

Search Engine

Picture

Licence 

Picture

Help us to grow up!

Picture


Donate us
About us
License
Cookies policy

Visit the biggest Arduino Shop in Greece!

Picture
find us on dwrean.net
find us on Codebender
find us on Instructables
Developed and designed by Vasilakis Michalis Copyright © 2013 Ardumotive All Rights Reserved
All trademarks referenced herein are properties of their
Powered by Create your own unique website with customizable templates.
Design by DivTag Templates