V tomto článku ti ukážeme základní práci s modulem LED displeje 32×16 bodů. Modul budeme ovládat pomocí Arduino UNO.
Příprava
Jako první je potřeba zprovoznit podporu pro ovládání v Arduino IDE. Pro jednoduchost použijeme knihovnu LedP10. Knihovnu stačí stáhnout, rozbalit a nakopírovat do složky s knihovnami Arduino IDE – C:\Users\xxxx\Documents\Arduino\libraries.
Knihovna ještě potřebuje jednu podpůrnou knihovnu a tou je TimerOne. Ta se nainstaluje již standardně pomocí Správce knihoven.
Tím je příprava hotová a můžeš se pustit do otestování.
Propojení panelu s Arduino UNO
Propojení Arduina s panelem nejlépe naznačuje následující obrázek:
Pro jednoduchost otestování není v případě použití jednoho panelu nutné zapojovat externí napájení panelu a postačí pouze propojení s datovými piny Arduina. Panel je napájen pomocí nich. Panel však nemusí dosahovat plného jasu LED diod, ale to na prvotní seznámení s funkcemi panelu není na závadu.
Test funkčnosti
Knihovna umožňuje jednoduchým způsobem na panelu zobrazovat statický a dynamický jednořádkový a dvouřádkový text, běžící jdnořádkový a dvouřádkový text.
Statický text
#include "TimerOne.h"
#include "SPI.h"
#include "LedP10.h"
LedP10 myled;
void setup()
{
myled.init(3,4,8,9,1);
/*
P10 Pin A - Arduino Pin 3
P10 Pin B - Arduino Pin 4
P10 Store Pin - Arduino Pin 8
P10 OE Pin - Arduino Pin 9
Pocet propojenych panelu - 1 (Muze byt vice jak 10)
*/
}
void loop()
{
myled.showmsg_single_static("123",0); // Pro jednoradkovy text
//myled.showmsg_double_static("123", "456", 0); // Pro dvouradkovy text
delay(500);
}
Procedura showmsg_single_static přijímá následující parametry:
showmsg_single_static(pole_znaku_k_zobrazeni, font);. Parametrem font lze vybrat jakým fontem se text zobrazí. V knihovně jsou k dispozici fonty dva – 0: Arial_Black_16 a 1: Arial_14. U dvouřádkového textu je automaticky použitý font 1: Arial_14 nehledě na nastavení.
U procedury showmsg_double_static je pouze navíc parametr s textem, který se má zobrazit na druhém řádku.
Dynamický text
Jedná se o statické zobrazování měnícího se textu, např. naměřené hodnoty na analogovém pinu.
#include "TimerOne.h"
#include "SPI.h"
#include "LedP10.h"
LedP10 myled;
void setup()
{
myled.init(3,4,8,9,1);
/*
P10 Pin A - Arduino Pin 3
P10 Pin B - Arduino Pin 4
P10 Store Pin - Arduino Pin 8
P10 OE Pin - Arduino Pin 9
Pocet propojenych panelu - 1 (Muze byt vice jak 10)
*/
}
void loop()
{
int analogValue1 = analogRead(A0);
int analogValue2 = analogRead(A1);
myled.showmsg_single_static(analogValue1, 0);
//myled.showmsg_double_static(analogValue1, analogValue2, 0);
delay(500);
}
Běžící text
#include "TimerOne.h"
#include "SPI.h"
#include "LedP10.h"
LedP10 myled;
void setup()
{
myled.init(3,4,8,9,1);
/*
P10 Pin A - Arduino Pin 3
P10 Pin B - Arduino Pin 4
P10 Store Pin - Arduino Pin 8
P10 OE Pin - Arduino Pin 9
Pocet propojenych panelu - 1 (Muze byt vice jak 10)
*/
myled.showmsg_single_scroll("Test beziciho textu", 2, 3, 0);
//myled.showmsg_double_scroll("Test beziciho textu na 1. radku", "Test beziciho textu na 2. radku", 10, INF, 3, 1, 0);
delay(1000);
}
void loop()
{
}
Procedura showmsg_single_scroll přijímá následující parametry:
showmsg_single_scroll( pole_znaku_k_zobrazeni, pocet_opakovani_zobrazeni_textu, rychlost_posouvani_textu, font);
Hodnota rychlosti se zadává v rozsahu 0 – 30, kde 0 znamená rychlost nejnižší a 30 rychlost nejvyšší. Nastavení fontu je stejné jako u statického textu.
U dvouřádkového textu:
showmsg_double_scroll( pole_znaku_k_zobrazeni_na_1radku, pole_znaku_k_zobrazeni_na_2radku, pocet_opakovani_textu_na_1radku, pocet_opakovani_textu_na_2radku , rychlost_posouvani_textu_na_1radku, rychlost_posouvani_textu_na_2radku, font);
Font je stejně jako u statického dvouřádkového textu automaticky nastaven na 1: Arial_14. Hodnoty počtu opakování a rychlostí posouvání se mohou u obou řádků lišit.
V našem příkladu je u druhého řádku použita hodnota počtu opakování INF. Tato hodnota značí, že text na daném řádku se bude opakovat stále. Tuto hodnotu lze použít i u jednořádkového běžícího textu.
Při použití hodnoty INF měj na paměti, že žádný další kód už nebude vykonáván, protože použitím této hodnoty je text zobrazován v nekonečné smyčce.
Řízení jasu panelu
Panel umožňuje i řízení jasu LED diod.
myled.setbrightness(50);
Tato procedura má pouze jeden parametr, který určuje hodnotu svítivosti LED. Nastavení jasu je možné v rozsahu 0 – 255, kde 0 znamená nejmenší jas – LED diody nesvítí a 255 znamená jas nejvyšší – LED diody svítí na plno.