Voor veel toepassingen is er geen noodzaak om een duurdere liquid crystal display te gebruiken om gegevens weer te geven.
Als uw Arduino-toepassing alleen getallen hoeft weer te geven, overweeg dan het gebruik van een zeven-segment display. De zeven-segment display heeft zeven LED’s gerangschikt in de vorm van nummer acht. Ze zijn gemakkelijk te gebruiken en kosteneffectief. De afbeelding hieronder toont een typisch zeven-segment display.
Zeven-segment displays zijn er in twee types: gemeenschappelijke anode en gemeenschappelijke kathode. De interne structuur van beide typen is vrijwel gelijk. Het verschil is de polariteit van de LED’s en de gemeenschappelijke terminal. In een zeven-segment display met gemeenschappelijke kathode (het type dat we in de experimenten hebben gebruikt) zijn de kathodes van alle zeven LED’s plus een punt-LED verbonden met pennen 3 en 8. Om dit display te gebruiken, moeten we GROUND op pin 3 en pin 8 aansluiten, en +5V op de andere pinnen om de afzonderlijke segmenten te laten oplichten. Het volgende schema toont de interne structuur van een 7-segments display met een gemeenschappelijke kathode:
Het common anode display is precies het tegenovergestelde. In een common-anode display zijn de positieve klemmen van alle acht LED’s met elkaar verbonden en vervolgens verbonden met pin 3 en pin 8. Om een individueel segment aan te zetten, zet je een van de pinnen aan massa. Het volgende schema toont de interne structuur van het common-anode zeven-segment display.
De zeven segmenten zijn gelabeld als a-g, waarbij de punt “dp” is, zoals in de onderstaande figuur is aangegeven:
Om een bepaald getal weer te geven, schakelt u de afzonderlijke segmenten in, zoals in de onderstaande tabel wordt weergegeven:
Cijfer gfedcba |
abcdefg |
a |
b |
c |
d |
e |
f |
g |
||
0 0×3F |
0×7E |
on |
aan |
aan |
aan | aan | aan |
uit |
||
1 0×06 |
0×30 |
off |
on |
on |
off |
off |
off |
off |
||
2 0×5B |
0×6D |
on |
on |
off |
on |
on |
off |
on |
||
3 0×4F |
0×79 |
on |
on |
on |
on |
off |
uit |
aan |
||
4 0×66 |
0×33 |
uit |
aan |
aan | uit |
uit |
uit |
aan |
on |
|
5 0×6D |
0×5B |
on |
uit |
aan |
aan | uit | aan | |||
6 0×7D |
0×5F |
on |
off |
op |
op |
op | op | op | ||
7 0×07 |
0×70 |
aan |
aan |
aan |
aan |
uit |
uit |
uit |
uit |
|
8 0×7F |
0×7F |
op |
op | op |
op |
op |
op |
9 0×6F |
0×7B |
on |
on |
on |
on |
off |
op |
A 0×77 |
0×77 |
op |
op |
on |
on |
off |
on | on |
B 0×7C |
0×1F |
off |
off |
aan |
aan |
aan | aan | aan | ||
C 0×39 |
0×4E |
on |
off |
off |
aan |
aan | ||||
D 0×5E |
0×3D |
off |
on |
on |
on |
aan |
uit |
aan | ||
E 0×79 |
0×4F |
on |
off |
off |
on |
on |
on |
aan |
F 0×71 |
0×47 |
aan |
uit |
uit |
uit |
on |
on |
on |
Experiment 1
In dit experiment, zullen we de LED’s gewoon aan- en uitzetten om vertrouwd te raken met de werking van een zeven-segment display.
Nodige hardware
- 1 x zeven-segment display (gemeenschappelijke kathode)
- 1 x Arduino MEGA 2560
- 1 x breadboard
- 7 x 220 ohm weerstanden (1/4 W)
- jumperdraden
Bedradingsdiagram
In deze schakeling, zijn de pennen van het zeven-segment display verbonden met Arduino-pinnen 2-9, zoals weergegeven in de onderstaande tabel. Gemeenschappelijke pinnen (pin 3 en pin 8) zijn verbonden met GND en dp is niet aangesloten, omdat deze in dit experiment niet wordt gebruikt
Zeven segment pinnen | Arduino pinnen | Draadkleur |
---|---|---|
1(e) | 6 | oranje |
2(d) | 5 | wit |
3,8(COM) | GND | n/a |
c | 4 | geel |
5(dp) | – | |
6(b) | 3 | rood |
7(a) | 2 | blauw |
9(f) | 7 | cyaan |
10(g) | 8 | groen |
Code
void setup(){ // define pin modes pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); pinMode(8,OUTPUT); }void loop() { // loop to turn leds od seven seg ON for(int i=2;i<9;i++) { digitalWrite(i,HIGH); delay(600); } // loop to turn leds od seven seg OFF for(int i=2;i<9;i++) { digitalWrite(i,LOW); delay(600); } delay(1000);}
Interface_Seven_Segment.zip
Experiment 2
Beschrijving
In deze tutorial gaan we een zeven-segment display interfacen met Arduino mega en leren we om op een zeven-segment display af te tellen vanaf negen met een vertraging van een seconde.
Nodigde hardware
De benodigde hardware voor dit experiment is dezelfde als voor Experiment 1.
Bedradingsschema
Het bedradingsschema voor dit experiment is hetzelfde als de schakeling voor Experiment 1.
Code
// make an array to save Sev Seg pin configuration of numbersint num_array = { { 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,0,0,1,1 }}; // 9 //function headervoid Num_Write(int);void setup() { // set pin modes pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); }void loop() { //counter loop for (int counter = 10; counter > 0; --counter) { delay(1000); Num_Write(counter-1); } delay(3000);}// this functions writes values to the sev seg pins void Num_Write(int number) { int pin= 2; for (int j=0; j < 7; j++) { digitalWrite(pin, num_array); pin++; }}
aac_interface_a_seven_segment.zip
Video
Probeer dit project zelf eens uit! Krijg de BOM.