Zadejte matici, LED matici, která je! Vytvořte si svůj vlastní LED displej s Arduino

jedna LED může být užitečná při testování projektů Arduino. Ale když přidáte led matici, můžete být opravdu kreativní, hláskovat písmena, čísla a symboly. Je to také užitečný způsob, jak zjistit, jak složitější displeje – jako ten, který čtete na-fungují. V této příručce vám ukážeme, jak nastavit základní matici 8×8 LED.

jak fungují matice LED

základní matice LED, jako je ta, kterou použijeme, obsahuje mřížku LED 8×8, kterou lze použít k kreslení znaků,základních obrázků a dalších. V předchozích průvodcích jsme ukázali, jak Arduino může ovládat jednu LED. Tato komponenta táhne tento koncept přes pole 64 LED, které lze ovládat pomocí jediného Arduina.

Tiny Dot-matrix LED displej HP

LED matice

v LED matici je proud veden řadami LED. Za účelem dokončení obvodu a aktivace individuálního světla je sloupec připojen k zemi. Tam, kde se protínají napájecí a zemnící vedení, jsou aktivovány LED diody. Můžete si to představit trochu jako desková hra Battleship. Pokud je například napájení spuštěno do řádků a, B A C, ale pouze sloupec 1 je připojen k zemi, rozsvítí se světla na A1, B1 a C1. Zbytek zůstane tmavý.

Jedná se o praktický způsob, jak zapnout více LED najednou, ale vytváří problém, pokud chcete zapnout pouze určité led ve sloupci. Řekněme, že místo toho jste chtěli, aby se světla A1, B2 A C3 rozsvítila a vytvořila diagonální čáru. Aktivace všech tří řádků a sloupců by zapnula celou mřížku, což Nechceme.

k vyřešení tohoto problému může Arduino běžet smyčkou a aktivovat pouze jednu řadu LED najednou. Tímto způsobem můžete aktivovat tolik sloupců, kolik chcete, aniž byste ovlivnili další řádek. Bez dlouhého zpoždění() funkce, řádky budou aktivovány v tak rychlém sledu, že lidské oko nebude schopen říct. Ukážeme však, jak přidat zpoždění, abyste viděli, jak to funguje.

co budete potřebovat

používáme složitější metodu pro ovládání matice LED pro vzdělávací účely-ostatní komponenty mohou snížit počet požadovaných kolíků – a tak to bude trvat o několik kolíků a vodičů více než většina našich ostatních průvodců. Z tohoto důvodu budeme k ovládání této matice používat Arduino Mega 2560 místo obvyklého Arduino Uno. Budete také potřebovat následující:

Arduino Mega 2560 Arduino Mega 2560
8×8 LED matice 8x8 LED matice
8 x 220ohm rezistor

většina LED diod vyhoří, pokud je připojíte přímo k 5V výstupu Arduina. Umístěte odpor ze sady mezi výstupní kolík a LED.

8 x 220ohm rezistor
pár prkének pár prkének
Arduino IDE Arduino IDE

budete také potřebovat kabel USB a poměrně málo vodičů-alespoň 32!

existuje řada způsobů, jak uspořádat zapojení pro tento projekt, ale protože se může zkomplikovat, doporučujeme použít pár prkének, které jsou spojeny dohromady, jeden pro manipulaci s LED maticí a druhý pro zapojení do odporů. To samé je možné dosáhnout pomocí drátů se samičími konci běžícími k matici LED, i když to bude sedět na straně místo stacionární, což může být trochu těžkopádnější.

kód

kód pro tento projekt bude používat smyčky a pole pro zápis každé LED jednotlivě. Výsledkem bude pole v horní části skriptu, které můžete snadno upravit a změnit obrázek, který zobrazuje vaše LED matice. Nejprve vložte celý kód do Arduino IDE a nahrajte jej do 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 () {
pro (int i=2; i< = 9; i++) {
pinMode (i, výstup) ;
pinMode (i + 44, výstup);
digitalWrite (i, LOW);
digitalWrite (i + 44, HIGH);
}
pinMode (A0, vstup);
}
void loop () {
pro (int i=0; i< 8; i++) {
if (i==0) {
digitalWrite (9, LOW);
}
else {
digitalWrite (i + 1, LOW);
}
pro (int j=0; j< 8; j++) {
if (toDisplay == 1) {
digitalWrite (j + 46, LOW) ;
}
else {
digitalWrite (j + 46, vysoká);
}
}
digitalWrite (i+2, HIGH);
zpoždění(1);
}
}

dále si projdeme, jak každá z těchto sekcí funguje.

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

před některou z hlavních smyček v náčrtu bude toto vícerozměrné pole definovat, které LED diody by měly svítit a které by měly zůstat tmavé. Existuje osm řádků po osmi hodnotách, které odpovídají osmi řadám led na matici. Tím, že je položíte do mřížky v náčrtu, usnadňuje vizualizaci toho, jaký tvar budou LED diody tvořit.

1
2
3
4
5
6
7
8
9

void setup () {
pro (int i=2; i<=9; i++) {
pinMode(i, výstup);
pinMode(i + 44, výstup);
digitalWrite (i, LOW);
digitalWrite (i + 44, HIGH);
}
pinMode (A0, vstup);
}

v sekci Nastavení() inicializujeme kolíky, které potřebujeme pro matici. Protože existuje šestnáct různých kolíků, můžeme to udělat efektivněji než jeden po druhém. Kolíky běžící na zem budou zapojeny do kolíků 2 až 9. Kolíky vysílající energii do matice poběží na kolíky 46 až 53. Tato část použije smyčku k inicializaci obou sad pinů.

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

void loop () {
pro (int i=0; i< 8; i++) {
if (i==0) {
digitalWrite (9, nízká);
}
else {
digitalWrite (i + 1, LOW);
}
pro (int j=0; j< 8; j++) {
if (toDisplay == 1) {
digitalWrite (j + 46, LOW);
}
else {
digitalWrite (j + 46, vysoká);
}
}
digitalWrite (i+2, HIGH);
zpoždění(1);
}
}

v hlavní smyčce () části náčrtu je jedna vícestupňová smyčka. První příkaz if resetuje poslední použitý řádek na nízký, což zastaví tok energie do něj.

další vnořená smyčka zkontroluje data v poli. Pokud je buňka uvedena jako 1, nastaví zemnící vodič pro tento sloupec na nízký, umožňující proud vytékat. V opačném případě nastaví kolík na vysokou hodnotu, což zabrání dokončení obvodu podél tohoto sloupce. Udělá to pro všech osm buněk v daném řádku.

nakonec poslední příkaz digitalWrite() zapne celý řádek. Všechny sloupce nastavené na nízké se rozsvítí. Zbytek zůstane tmavý. Když se skica znovu smyje, okamžitě se spustí vypnutím tohoto řádku.

posledním příkazem je příkaz delay (), který nastavuje zpoždění mezi jednotlivými řádky. V našem příkladu je nastavena na 1 milisekundu, protože když prohlášení neexistuje, LED diody jsou příliš slabé. Můžete však zvýšit zpoždění, abyste viděli, co skica dělá pomaleji. Měli byste vidět, jak se každý řádek rozsvítí jeden po druhém, než se vypne, když se zapne další řádek.

zapojení

pro tento projekt je zapojení relativně jednoduché, je toho hodně. Protože existuje mnoho kolíků, popíšeme, co chcete udělat pro každý úplný obvod, spíše než seznam každého jednotlivého drátu, jak to obvykle děláme.

kolíky 2 až 9 by měly být vaše napájecí kolíky a kolíky 46 až 53 by měly být vaše uzemňovací kolíky. Spusťte vodič z napájecího kolíku do matice LED (zkontrolujte další podrobnosti o tom, které kolíky níže-To je důležité), z matice LED do rezistoru 220 ohm a poté spusťte vodič zpět na pin na Arduino. Kolík 2 by měl nakonec vést ke kolíku 46, kolík 3 by měl vést ke kolíku 47 a tak dále.

hlavní komplikací je samotná LED matice. Neintuitivně, kolíky na obou stranách matice nejsou vůbec v koherentním pořadí. Například chceme, aby pin 2 napájel to, čemu říkáme řádek a. PIN pro toto je však čtvrtý pin zleva v horní části matice LED. Druhý konec tohoto obvodu – který by měl vést ke sloupci 1-je první kolík vpravo na spodní straně matice.

vzhledem k tomu, že toto uspořádání je poměrně komplikované, vysvětlíme, ke kterým kolíkům na matici by měl být každý pin Arduino připojen přímo.

podél horní části matice (strana s číslem vytištěným na ní) je osm kolíků. Zleva doprava, ty by měly být připojeny k následujícím pinům na Arduinu:

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

dále by měl být spodní řádek osmi kolíků na matici (strana bez čísel) připojen k následujícím kolíkům (zleva doprava, přičemž čísla stále směřují nahoru):

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

jakmile jsou všechny vodiče připojeny, můžete zapnout svůj projekt a uvidíte, jak se rozsvítí vaše LED matice. Zkuste změnit uspořádání 1s v počátečním poli a znovu nahrát skript a vytvořit různé tvary. Můžete také nastavit délku příkazu delay (), aby se každý řádek rozsvítil jeden po druhém.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.