Anna matriisi, LED matriisi, joka on! Luo oma light up LED-näyttö Arduino

yhdellä LEDillä voi olla kätevä testata Arduino-projekteja. Mutta kun lisäät LED-matriisin, voit saada todella luovaa, oikeinkirjoituksen kirjaimia, numeroita ja symboleja. Se on myös kätevä tapa oppia, miten monimutkaisempia näyttöjä – kuten se, jota luet tätä työssä. Tässä oppaassa näytämme, miten perustetaan 8×8 LED-matriisi.

miten LED-matriisit toimivat

käyttämämme kaltaisessa PERUSVALOMATRIISISSA on 8×8-ruudukko ledejä, joilla voidaan piirtää merkkejä, peruskuvia ja paljon muuta. Aiemmissa oppaissa, olemme osoittaneet, miten Arduino voi hallita yhden LED. Tämä komponentti ulottuu, että käsite koko joukko 64 LEDit, jotka kaikki voidaan ohjata yhdellä Arduino.

HP

LED-matriisi

LED-matriisissa virtaa LED-rivien läpi. Jotta voidaan suorittaa piiri ja aktivoida yksittäisen valon, sarake on kytketty maahan. Kun virta-ja maajohdot leikkaavat toisensa, LEDit aktivoituvat. Voit ajatella sitä vähän kuin lautapeli Battleship. Jos esimerkiksi virta ajetaan riveille A, B ja C, mutta vain sarake 1 on kytketty maahan, syttyvät valot kohdissa A1, B1 ja C1. Loput pysyvät pimeinä.

tämä on kätevä tapa kytkeä päälle useita ledejä kerralla,mutta se luo ongelman, Jos haluat vain tiettyjen sarakkeen LEDien syttyvän. Sen sijaan, halusit valot A1, B2, ja C3 syttyä luoda diagonaalinen viiva. Aktivoimalla kaikki kolme riviä ja saraketta käynnistäisi koko ruudukon, mitä emme halua.

tämän ongelman ratkaisemiseksi Arduino voi ajaa silmukan läpi aktivoiden vain yhden Ledirivin kerrallaan. Näin voit aktivoida niin monta saraketta kuin haluat vaikuttamatta seuraavaan riviin. Ilman pitkää viivettä () – toimintoa rivit aktivoituvat niin nopeasti peräkkäin, että ihmissilmä ei pysty erottamaan niitä. Mutta näytämme, miten lisätä viive, jotta näet, miten se toimii joka tapauksessa.

mitä tarvitset

käytämme monimutkaisempaa menetelmää LED – matriisin ohjaamiseen opetustarkoituksiin – muut komponentit voivat vähentää vaadittavien tapien määrää-joten tämä vaatii melkoisesti enemmän nastoja ja johtoja kuin useimmat muut oppaamme. Siksi käytämme Arduino Mega 2560: tä tavallisen Arduino Unon sijasta tämän matriisin hallitsemiseen. Tarvitset myös seuraavat:

Arduino Mega 2560 Arduino Mega 2560
8×8 LED – matriisi 8x8 LED-matriisi
8 x 220ohm vastus

useimmat LEDit palaa loppuun, jos liität ne suoraan 5V lähtö Arduino. Aseta vastus kit välillä lähtö pin ja LED.

8 x 220ohm vastus
leipälautapari leipälautapari
Arduino IDE Arduino IDE

tarvitset myös USB-kaapelin ja melko monta johtoa – vähintään 32!

on olemassa useita tapoja järjestää johdotus tähän projektiin, mutta koska se voi saada monimutkainen, suosittelemme käyttämään pari breadboards lukittu yhteen, yksi käsitellä LED matriisi, ja toinen johdotus vastukset. On mahdollista saavuttaa sama asia käyttämällä johdot naisten päät käynnissä LED-matriisi, vaikka se istuu pois sivuun sijaan paikallaan, joka voi olla hieman hankalampi.

koodi

tämän projektin koodi käyttää silmukoita ja taulukoita kunkin ledin kirjoittamiseen erikseen. Tuloksena on array yläosassa komentosarjan, että voit muokata helposti muuttaa kuvan, että LED matriisi näyttää. Ensimmäinen, liitä koko koodi Arduino IDE ja lataa se 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 () {
for (int I=2; i<=9; i++) {
pinMode (i, OUTPUT);
pinMode (i+44, lähtö);
digitalWrite (i, matala);
digitalWrite (i+44, korkea);
}
pinMode(A0, tulo);
}
void loop () {
for (int I=0; i< 8; i++) {
if (i==0) {
digitalWrite (9, Alhainen);
}
else {
digitalWrite (i + 1, LOW);
}
for (int j=0; j<8; J++) {
if (toDisplay == 1) {
digitalWrite (J + 46, matala);
}
else {
digitalWrite(j+46, korkea);
}
}
digitalWrite (i+2, korkea);
viive(1);
}
}

seuraavaksi käydään läpi, miten kukin näistä osista toimii.

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}
};

ennen jompaakumpaa luonnoksen pääsilmukoista tämä moniulotteinen array määrittelee, mitkä LEDit pitäisi sytyttää ja mitkä pitäisi pysyä tummina. Kussakin on kahdeksan riviä kahdeksasta arvosta, jotka vastaavat matriisin kahdeksaa led-riviä. Asettamalla ne ruudukkoon luonnos, se helpottaa visualisoida, mitä muotoa LEDit muodostavat.

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);
digitalWrite(i, LOW);
digitalWrite (i+44, korkea);
}
pinMode (A0, INPUT);
}

setup () – osiossa alustamme matriisiin tarvittavat nastat. Koska erilaisia nastoja on kuusitoista, voimme tehdä tämän tehokkaammin kuin yksi kerrallaan. Nastat käynnissä maahan kytketään nastat 2-9. Matriisiin virtaa lähettävät nastat kulkevat pinneille 46-53. Tässä osassa käytetään silmukkaa alustamaan molemmat nastat.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

void loop () {
for (int I=0; i< 8; i++) {
if (i==0) {
digitalWrite (9, matala);
}
else {
digitalWrite (i + 1, LOW);
}
for (int j=0; j<8; J++) {
if (toDisplay == 1) {
digitalWrite (J+46, matala);
}
else {
digitalWrite(j+46, korkea);
}
}
digitalWrite (i+2, korkea);
viive(1);
}
}

luonnoksen pääsilmukassa () on yksi monivaiheinen silmukka. Ensimmäinen if-lauseke Nollaa viimeisen käytetyn rivin alhaiseksi, mikä estää virran virtaamisen sille.

seuraava sisäkkäinen silmukka tarkistaa tiedot matriisista. Jos solu on lueteltu 1, se asettaa maadoitusjohdon, että sarake on alhainen, jolloin virta virtaa ulos. Muuten se asettaa tappi korkealle, joka estää piiri valmistuu pitkin, että sarake. Se tekee tämän kaikille kahdeksalle solulle tietyllä rivillä.

lopuksi viimeinen digitalWrite () – lauseke kytkee koko rivin päälle. Kaikki matalalle asetetut sarakkeet syttyvät. Loput pysyvät pimeinä. Kun sketsi loops uudelleen, se aloittaa heti sammuttamalla kyseisen rivin.

viimeinen komento on viiveen () lauseke, joka asettaa viiveen jokaisen rivin välille. Se on asetettu 1 millisekunniksi esimerkissämme, koska kun lauseketta ei ole, LEDit himmenevät hieman liikaa. Viivettä voi kuitenkin lisätä, jotta näkee, mitä sketsi tekee hitaammin. Sinun pitäisi nähdä jokaisen rivin syttyvän yksi kerrallaan, ennen kuin sammutat seuraavan rivin käynnistyessä.

johdotus

tässä projektissa johdotus on suhteellisen suoraviivaista, sitä on vain paljon. Koska on olemassa monia nastat, me kuvata, mitä haluat tehdä kunkin täydellinen piiri, sen sijaan luetella jokaisen yksittäisen Lanka kuten yleensä.

nastojen 2-9 tulisi olla tehonappeja ja nastojen 46-53 pitäisi olla maatappeja. Suorita Lanka virtatapista LED-matriisiin (tarkista lisätietoja siitä, mitkä nastat alla – tämä on tärkeää), LED-matriisista 220 ohmin vastukseen ja suorita sitten lanka takaisin tappiin Arduino. Pin 2 pitäisi lopulta johtaa pin 46, pin 3 pitäisi johtaa pin 47 ja niin edelleen.

tärkein komplikaatio tässä on itse LED-matriisi. Vastavaikuttavasti matriisin kummallakin puolella olevat nastat eivät ole lainkaan johdonmukaisessa järjestyksessä. Esimerkiksi, haluamme pin 2 valtaan, mitä kutsumme rivi A. silti pin tähän on neljäs pin vasemmalta päälle LED matriisi. Tämän piirin toinen pää-jonka pitäisi johtaa sarakkeeseen 1-on ensimmäinen tappi oikealla matriisin pohjalla.

koska tämä tilaaminen on melko monimutkaista, selvitämme, mille matriisin pinneille kukin Arduino-pin tulisi kytkeä suoraan.

matriisin yläosassa (sivulla, johon numero on painettu) on kahdeksan pinniä. Vasemmalta oikealle, nämä olisi kytketty seuraaviin nastat Arduino:

  • Pin 7
  • Pin 4
  • Pin 49
  • Pin 2
  • Pin 51
  • Pin 52
  • Pin 3
  • Pin 5

seuraavaksi matriisin kahdeksan nastaa alarivi (sivu ilman numeroita) on johdettava seuraaviin nastojen (vasemmalta oikealle, numerot edelleen ylöspäin):

  • Pin 9
  • Pin 50
  • Pin 48
  • Pin 6
  • Pin 53
  • Pin 8
  • Pin 47
  • Pin 46

kun kaikki johdot on kytketty, voit käynnistää projektin ja näet LED-matriisi syttyy. Yritä muuttaa järjestelyä 1s alkuperäisen array ja uudelleen ladata skripti luoda eri muotoja. Voit myös säätää delay () – komennon pituutta nähdäksesi jokaisen rivin syttyvän yksi kerrallaan.

Vastaa

Sähköpostiosoitettasi ei julkaista.