en enkelt LED kan være praktisk i test Arduino projekter. Men når du tilføjer en LED-matrice, kan du blive rigtig kreativ, stave bogstaver, tal og symboler. Det er også en praktisk måde at lære, hvordan mere komplekse skærme – som den du læser dette på – arbejde. I denne vejledning viser vi dig, hvordan du opretter en grundlæggende 8-lodret 8 LED-matrice.
Sådan fungerer LED-matricer
en grundlæggende LED-matrice som den, vi bruger, har et 8-liters 8-gitter med lysdioder, der kan bruges til at tegne tegn, grundlæggende billeder og mere. I tidligere guider har vi vist, hvordan Arduino kan styre en enkelt LED. Denne komponent strækker dette koncept på tværs af en række 64 LED ‘ er, der alle kan styres med en enkelt Arduino.
LED Matrice
i en LED matrice køres en strøm gennem rækker af lysdioder. For at fuldføre kredsløbet og aktivere et individuelt lys er en søjle forbundet til jorden. Hvor strøm-og jordledningerne krydser hinanden, aktiveres LED ‘ er. Du kan tænke på det lidt ligesom brætspil Battleship. For eksempel, hvis strømmen køres til rækker A, B og C, men kun kolonne 1 er forbundet til jorden, lyser lysene ved A1, B1 og C1. Resten vil forblive mørke.
dette er en praktisk måde at tænde flere lysdioder på en gang, men det skaber et problem, hvis du kun vil have visse lysdioder i en kolonne til at tænde. Sig, i stedet ønskede du lys A1, B2 og C3 for at lyse op og skabe en diagonal linje. Aktivering af alle tre rækker og kolonner ville tænde hele gitteret, hvilket ikke er det, vi ønsker.
for at løse dette problem kan en Arduino løbe gennem en løkke og kun aktivere en enkelt række lysdioder ad gangen. På denne måde kan du aktivere så mange kolonner, som du vil, uden at påvirke den næste række. Uden en lang forsinkelse() funktion, vil rækkerne blive aktiveret i en sådan hurtig rækkefølge, at det menneskelige øje ikke vil være i stand til at fortælle. Men vi viser, hvordan du tilføjer en forsinkelse, så du kan se, hvordan det alligevel fungerer.
hvad du har brug for
vi bruger en mere kompliceret metode til at styre LED – matricen til uddannelsesmæssige formål – andre komponenter kan reducere antallet af krævede stifter-og det vil derfor tage en hel del flere stifter og ledninger end de fleste af vores andre guider. Af den grund bruger vi en Arduino Mega 2560, i stedet for den sædvanlige Arduino Uno, til at styre denne matrice. Du skal også bruge følgende:
Arduino Mega 2560 | |
8×8 LED Matrice | |
8 220ohm modstand
de fleste lysdioder brænder ud, hvis du tilslutter dem direkte til 5V-udgangen fra en Arduino. Placer en modstand fra dit sæt mellem udgangsstiften og LED ‘ en. |
|
et par breadboards | |
Arduino IDE |
du har også brug for et USB – kabel og en hel del ledninger-mindst 32!
der er en række måder at organisere ledningerne til dette projekt, men da det kan blive komplekst, anbefaler vi at bruge et par brødbrædder, der er låst sammen, en til at håndtere LED-matricen og en anden til ledninger i modstandene. Det er muligt at opnå det samme ved at bruge ledninger med kvindelige ender, der løber til LED-matricen, selvom det vil sidde til siden i stedet for stationært, hvilket kan være lidt mere besværligt.
koden
koden til dette projekt vil gøre brug af sløjfer og arrays til at skrive hver LED individuelt. Resultatet bliver et array øverst i dit script, som du nemt kan ændre for at ændre det billede, som din LED-matrice viser. Indsæt først den fulde kode i Arduino IDE og upload den til din 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}
};
void setup() {
til (int i=2; i & lt;=9; i++) {
pinMode (i, OUTPUT);
pinMode (i+44, udgang);
digitalskriv (i, lav);
digitalskriv(i+44, høj);
}
pinMode (A0, INPUT);
}
void loop () {
til (int i=0; i& lt; 8; i++) {
if (i==0) {
digitalskriv (9, lav);
}
else {
digitalskriv (i+1, Lav);
}
til (int j=0; j<8; j++) {
if (toDisplay == 1) {
digitalskriv (j + 46, lav);
}
else {
digitalskriv (j + 46, høj);
}
}
digitalskriv (i+2, høj);
forsinkelse(1);
}
}
|
lad os derefter gennemgå, hvordan hver af disse sektioner 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 af hovedsløjferne i skitsen definerer dette multidimensionelle array, hvilke lysdioder der skal tændes, og hvilke der skal forblive mørke. Der er otte rækker med otte værdier hver, som svarer til de otte rækker af lysdioder på matricen. Ved at lægge dem ud i et gitter på skitsen gør det det lettere at visualisere, hvilken form LED ‘ erne udgør.
1
2
3
4
5
6
7
8
9
|
void setup() {
for (int i=2; i<=9; i++) {
pinMode(i, OUTPUT);
pinMode(i+44, OUTPUT);
digitalskriv(i, lav);
digitalskriv(i, lav);
digitalskriv (i, lav);
digitalskriv (i+44, høj);
}
pinMode (A0, INPUT);
}
|
i afsnittet setup () initialiserer vi de stifter, vi har brug for til matricen. Da der er seksten forskellige stifter, kan vi gøre dette mere effektivt end en ad gangen. Stifterne, der løber til jorden, sættes i stifterne 2 til 9. Stifterne, der sender strøm til matricen, løber til stifter 46 Til 53. Dette afsnit bruger en løkke til at initialisere begge sæt stifter.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
void loop () {
til (int i=0; i& lt; 8; i++) {
if (i==0) {
digitalskriv (9, lav);
}
else {
digitalskriv (i+1, Lav);
}
til (int j=0; j<8; j++) {
if (toDisplay == 1) {
digitalskriv (j + 46, lav);
}
else {
digitalskriv (j + 46, høj);
}
}
digitalskriv (i+2, høj);
forsinkelse(1);
}
}
|
i hovedsløjfen () sektionen af skitsen er der en multi-trins sløjfe. Den første if-sætning nulstiller den sidst anvendte række til lav, hvilket forhindrer strømmen i at strømme til den.
den næste indlejrede for loop vil kontrollere data i arrayet. Hvis en celle er angivet som 1, Indstiller den jordledningen for den kolonne til lav, så strømmen kan strømme ud. Ellers vil den sætte stiften til høj, hvilket forhindrer et kredsløb i at blive afsluttet langs den kolonne. Det vil gøre dette for alle otte celler i en given række.
endelig vil den sidste digitalskriv() sætning tænde hele rækken. Alle kolonner, der er indstillet til lav, lyser. Resten vil forblive mørke. Når skitsen sløjfer igen, starter den straks med at slukke for den række.
den sidste kommando er en delay () – sætning, der angiver forsinkelsen mellem hver række. Det er indstillet til 1 millisekund i vores eksempel, fordi når udsagnet ikke er der, bliver LED ‘ erne lidt for svage. Du kan dog øge forsinkelsen for at se, hvad skitsen gør langsommere. Du skal se hver række lyse en ad gangen, før du slukker, når den næste række tændes.
ledningerne
til dette projekt er ledningerne relativt ligetil, der er bare meget af det. Da der er mange stifter, beskriver vi, hvad du vil gøre for hvert komplet kredsløb, snarere end at liste hver enkelt ledning, som vi normalt gør.
stifter 2 til 9 skal være dine strømstifter, og stifter 46 Til 53 skal være dine jordstifter. Kør en ledning fra strømstiften til LED – matricen (se for flere detaljer om hvilke stifter nedenfor-dette er vigtigt), fra LED-matricen til en 220 ohm modstand, og kør derefter en ledning tilbage til en stift på Arduino. Pin 2 skal i sidste ende føre til pin 46, pin 3 skal føre til pin 47 og så videre.
den største komplikation her er med selve LED-matricen. Modsat er stifterne på hver side af matricen slet ikke i en sammenhængende rækkefølge. For eksempel vil vi have pin 2 til at drive det, vi kalder række A. alligevel er stiften til dette den fjerde pin fra venstre øverst på LED-matricen. Den anden ende af dette kredsløb – som skal føre til kolonne 1 – er den første stift til højre på bunden af matricen.
da denne bestilling er ret kompliceret, vil vi præcisere, hvilke stifter på matricen hver Arduino pin skal tilsluttes direkte.
langs toppen af matricen (siden med nummeret trykt på det) er der otte stifter. Fra venstre mod højre skal disse forbindes til følgende stifter på Arduino:
- Pin 7
- Pin 4
- Pin 49
- Pin 2
- Pin 51
- Pin 52
- Pin 3
- Pin 5
Dernæst skal den nederste række af otte stifter på matricen (siden uden Tal) forbindes til følgende stifter (fra venstre mod højre, med tallene stadig vendt opad):
- Pin 9
- Pin 50
- Pin 48
- Pin 6
- Pin 53
- Pin 8
- Pin 47
- Pin 46
når alle ledninger er tilsluttet, kan du tænde dit projekt, og du vil se din LED-matrice lyse op. Prøv at ændre arrangementet af 1s i det oprindelige array, og upload scriptet igen for at oprette forskellige former. Du kan også justere længden af kommandoen delay() for at se hver række lyse en ad gangen.