en ENKELT LED kan være nyttig i testing Arduino prosjekter. Men når du legger TIL EN LED-matrise, kan du bli veldig kreativ, stave ut bokstaver, tall og symboler. Det er også en praktisk måte å lære hvordan mer komplekse skjermer-som den du leser dette på jobb. I denne veiledningen viser vi deg hvordan du setter opp en grunnleggende 8×8 LED-matrise.
HVORDAN LED-Matriser Fungerer
en grunnleggende LED-matrise som den vi bruker, har et 8×8 rutenett Av Lysdioder som kan brukes til å tegne tegn, grunnleggende bilder og mer. I tidligere guider har vi vist hvordan Arduino kan styre en ENKELT LED. Denne komponenten strekker konseptet over en rekke 64 Lysdioder som alle kan styres med En Enkelt Arduino.
LED Matrix
i EN LED-matrise kjøres en strøm gjennom rader Med Lysdioder. For å fullføre kretsen og aktivere et individuelt lys, er en kolonne koblet til bakken. Der kraft-og jordlinjene krysser, aktiveres Lysdioder. Du kan tenke på det litt som brettspillet Battleship. Hvis strømmen for eksempel kjøres til radene A, B Og C, men bare kolonne 1 er koblet til jord, lyser lysene På A1, B1 og C1. Resten blir mørkt.
Dette er en praktisk måte å slå på flere Lysdioder samtidig, men det skaper et problem hvis du bare vil at visse Lysdioder i en kolonne skal slå på. Si i stedet at du ønsket lys A1, B2 Og C3 for å lyse opp med å skape en diagonal linje. Aktivering av alle tre rader og kolonner vil slå på hele rutenettet, noe som ikke er det vi vil ha.
For å løse dette problemet kan En Arduino løpe gjennom en løkke, og aktiverer bare en enkelt rad Lysdioder om gangen. På denne måten kan du aktivere så mange kolonner du vil uten å påvirke neste rad. Uten en lang forsinkelse () – funksjon, vil radene bli aktivert i en slik rask rekkefølge at det menneskelige øye ikke vil kunne fortelle. Men vi vil vise hvordan du legger til en forsinkelse, slik at du kan se hvordan det fungerer uansett.
Hva Du Trenger
Vi bruker en mer komplisert metode for å kontrollere LED matrise for pedagogiske formål – andre komponenter kan redusere antall pinner som kreves – og så dette vil ta ganske mange flere pinner og ledninger enn de fleste av våre andre guider. Av den grunn bruker Vi En Arduino Mega 2560, i stedet for den vanlige Arduino Uno, for å kontrollere denne matrisen. Du trenger også følgende:
Arduino Mega 2560 | |
8×8 LED Matrise | |
8 x 220ohm motstand
De Fleste Lysdioder vil brenne ut hvis du kobler dem direkte til 5v-utgangen På En Arduino. Plasser en motstand fra settet mellom utgangspinnen og LYSDIODEN. |
|
Et par brødbrett | |
Arduino IDE |
DU trenger OGSÅ EN USB-kabel og ganske mange ledninger – minst 32!
det finnes en rekke måter å organisere ledningene for dette prosjektet, men siden det kan bli komplisert, anbefaler vi at du bruker et par brødbrett låst sammen, en til å håndtere LED-matrisen og en annen for ledninger i motstandene. Det er mulig å oppnå det samme ved å bruke ledninger med kvinnelige ender som løper TIL LED-matrisen, selv om den vil sitte av til siden i stedet for stasjonær, noe som kan være litt mer tungvint.
Koden
koden for dette prosjektet vil gjøre bruk av looper og arrays å skrive HVER LED individuelt. Resultatet blir en matrise øverst i skriptet ditt som du enkelt kan endre for å endre bildet SOM LED-matrisen viser. Først limer du inn hele koden I Arduino IDE og laster den opp Til Arduino Mega.
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
|
int toDisplay = {
{1,0,0,0,0,0,0,0},
{1,0,0,0,0,0,0,0},
{1,0,0,0,0,0,1,0},
{1,0,0,0,0,0,0,0},
{1,1,1,1,0,0,1,0},
{1,0,0,1,0,0,1,0},
{1,0,0,1,0,0,1,0},
{1,0,0,1,0,0,1,0}
};
ugyldig oppsett () {
for (int i=2; i& lt;=9; i++) {
pinMode(I, UTGANG);
pinMode(i+44, UTGANG);
digitalWrite(I, LAV);
digitalWrite(I+44, HØY);
}
pinMode (A0, INNGANG);
}
tom sløyfe () {
for (int i=0;i< 8; i++) {
hvis (i==0) {
digitalWrite (9, LAV);
}
else {
digitalWrite(i+1, LAV);
}
for (int j=0; j<8; j++) {
hvis (toDisplay == 1) {
digitalWrite (j + 46, LAV);
}
else {
digitalWrite (j+46, HØY);
}
}
digitalWrite (i + 2, HØY);
forsinkelse(1);
}
}
|
Neste, la oss gå gjennom hvordan hver av disse seksjonene fungerer.
1
2
3
4
5
6
7
8
9
10
|
int toDisplay = {
{1,0,0,0,0,0,0,0},
{1,0,0,0,0,0,0,0},
{1,0,0,0,0,0,1,0},
{1,0,0,0,0,0,0,0},
{1,1,1,1,0,0,1,0},
{1,0,0,1,0,0,1,0},
{1,0,0,1,0,0,1,0},
{1,0,0,1,0,0,1,0}
};
|
Før en av hovedløkkene i skissen, vil dette flerdimensjonale arrayet definere hvilke Lysdioder som skal lyse opp og hvilke som skal forbli mørke. Det er åtte rader med åtte verdier hver, som tilsvarer de åtte radene Av Lysdioder på matrisen. Ved å legge Dem ut i et rutenett i skissen, gjør det lettere å visualisere hvilken form Lysdiodene vil gjøre opp.
1
2
3
4
5
6
7
8
9
|
ugyldig oppsett() {
for (int i=2; i<=9; i++) {
pinMode(I, UTGANG);
pinMode(I+44, UTGANG);
digitalWrite(I, LAV);
digitalWrite(I+44, høy);
}
pinMode (A0, INNGANG) ;
}
|
i setup () – delen initialiserer vi pinnene vi trenger for matrisen. Siden det er seksten forskjellige pins, kan vi gjøre dette mer effektivt enn en om gangen. Pinnene som går til bakken, blir plugget inn i pinnene 2 til 9. Pinnene som sender strøm til matrisen, vil løpe til pinnene 46 til 53. Denne delen vil bruke en sløyfe for å initialisere begge settene med pinner.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
tom sløyfe () {
for (int i=0;i< 8; i++) {
hvis (i==0) {
digitalWrite (9, LAV);
}
else {
digitalWrite(i+1, LAV);
}
for (int j=0; j<8; j++) {
hvis (toDisplay == 1) {
digitalWrite (j + 46, LAV);
}
else {
digitalWrite (j+46, HØY);
}
}
digitalWrite (i + 2, HØY);
forsinkelse(1);
}
}
|
i hovedsløyfen () delen av skissen er det en multi-trinns sløyfe. Den første if-setningen tilbakestiller den sist brukte raden TIL LAV, noe som vil stoppe strømmen fra å strømme til den.
den neste nestede for loop vil sjekke data i matrisen. Hvis en celle er oppført som 1, vil den sette jordledningen for den kolonnen TIL LAV, slik at strømmen kan strømme ut. Ellers vil det sette pinnen TIL HØY som vil hindre en krets blir fullført langs den kolonnen. Det vil gjøre dette for alle åtte celler i en gitt rad.
endelig vil den siste digitalWrite() setningen slå hele raden på. Eventuelle kolonner satt TIL LAV vil lyse opp. Resten blir mørkt. Når skissen løkker igjen, begynner den umiddelbart ved å slå av den raden.
den siste kommandoen er en forsinkelse () – setning som setter forsinkelsen mellom hver rad. Den er satt til 1 millisekund i vårt eksempel fordi Når setningen ikke er der, Blir Lysdiodene litt for svake. Du kan imidlertid øke forsinkelsen for å se hva skissen gjør sakte. Du bør se hver rad lyse opp en om gangen, før du slår av når neste rad slås på.
Ledningene
for dette prosjektet er ledningen relativt enkel, det er bare mye av det. Siden det er mange pinner, beskriver vi hva du vil gjøre for hver komplett krets, i stedet for å liste hver enkelt ledning som vi vanligvis gjør.
Pins 2 til 9 skal være dine strømpinner, og pins 46 til 53 skal være dine bakkepinner. Kjør en ledning fra strømpinnen, TIL LED – matrisen (se etter flere detaljer om hvilke pinner nedenfor-dette er viktig), FRA LED-matrisen til en 220 ohm motstand, og kjør deretter en ledning tilbake til En pinne på Arduino. Pin 2 skal til slutt føre til pin 46, pin 3 skal føre til pin 47 og så videre.
den viktigste komplikasjonen her er MED SELVE LED-matrisen. Counterintuitively, pinnene på hver side av matrisen er ikke i en sammenhengende rekkefølge i det hele tatt. For eksempel vil vi ha pin 2 til å drive Det vi kaller Rad A. likevel er pin for dette den fjerde pinnen fra venstre på toppen AV LED-matrisen. Den andre enden av denne kretsen – som skal fore Til Kolonne 1-er den forste pinnen til hoyre pa bunnen av matrisen.
Siden denne bestillingen er ganske komplisert, vil vi stave ut hvilke pinner på matrisen hver Arduino pin skal kobles til direkte.
Langs toppen av matrisen (siden med tallet trykt på den) er det åtte pinner. Fra venstre til høyre skal disse kobles til følgende pinner På Arduino:
- Pin 7
- Pin 4
- Pin 49
- Pin 2
- Pin 51
- Pin 52
- Pin 3
- Pin 5
deretter skal den nederste raden med åtte pinner på matrisen (siden uten tall) kobles til følgende pinner (fra venstre til høyre, med tallene fortsatt vendt oppover):
- Pin 9
- Pin 50
- Pin 48
- Pin 6
- Pin 53
- Pin 8
- Pin 47
- Pin 46
Når alle ledningene er koblet til, kan du slå på prosjektet ditt, og du vil se AT LED-matrisen lyser opp. Prøv å endre arrangementet av 1s i den første matrisen og last opp skriptet for å lage forskjellige former. Du kan også justere lengden på delay () – kommandoen for å se hver rad lyse opp en om gangen.