MSP430 programozás Energia környezetben. LED mátrix vezérlése MAX7219 IC-vel



Hasonló dokumentumok
MSP430 programozás Energia környezetben. LED kijelzok második rész

MSP430 programozás Energia környezetben. LED kijelzok második rész

Bevezetés a mikrovezérlők programozásába: Hétszegmenses LED kijelzők

Bevezetés a mikrovezérlők programozásába: MAX6958: Hétszegmenses LED kijelző vezérlő

MSP430 programozás Energia környezetben. Hétszegmenses LED kijelzok

Bevezetés a mikrovezérlők programozásába: LCD kijelzők

Bevezetés az elektronikába

MSP430 programozás Energia környezetben. Nokia 5110 grafikus kijelzo vezérlése

Vegyes témakörök. A KAT120B kijelző vezérlése Arduinoval

MSP430 programozás Energia környezetben. Alfanumerikus LCD kijelzok

Programozási segédlet DS89C450 Fejlesztőpanelhez

MSP430 programozás Energia környezetben. Szervó motorok vezérlése

Bevezetés az elektronikába

Bevezetés az elektronikába

MSP430 programozás Energia környezetben. Analóg jelek mérése

Bevezetés a mikrovezérlők programozásába: A PM6025 (7 és 16 szegmenses) LCD kijelző vezérlése

LOGSYS LOGSYS ECP2 FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 18. Verzió

Bevezetés a mikrovezérlők programozásába: WS2812 RGB LED-ek vezérlése

LOGSYS LOGSYS SPARTAN-3E FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 19. Verzió

The modular mitmót system. DPY kijelző kártya C API

A vezérlő alkalmas 1x16, 2x16, 2x20, 4x20 karakteres kijelzők meghajtására. Az 1. ábrán látható a modul bekötése.

Újrakonfigurálható eszközök

loop() Referencia:

2008. október 9. Verzió

MSP430 programozás Energia környezetben. Kitekintés, további lehetőségek

Bevezetés a mikrovezérlők programozásába: Léptetőmotorok vezérlése

Bevezetés az elektronikába

MSP430 programozás Energia környezetben. Nem élhetek muzsikaszó nélkül

Bevezetés a mikrovezérlők programozásába: Fényérzékelés, fénymérés

Digitális technika (VIMIAA02) Laboratórium 1

Vegyes témakörök. 5. Gagyiszkóp házilag hangfrekvenciás jelek vizsgálata. Hobbielektronika csoport 2018/2019. Debreceni Megtestesülés Plébánia

Digitális technika (VIMIAA02) Laboratórium 1

SysCVideo: fiktív grafikus kártya SystemC modulként, SDL alapú megjelenítéssel

MSP430 programozás Energia környezetben. Digitális szenzorok

ARM Cortex-M0+ mikrovezérlő programozása KEIL MDK 5 környezetben. 8. Az SPI kommunikációs csatorna

MSP430 programozás Energia környezetben. Az első lépések

MSP430 programozás Energia környezetben. Digitális szenzorok I2C kommunikációval

MSP430 programozás Energia környezetben

Bevezetés a mikrovezérlők programozásába: Programciklusok szervezése, analóg I/O

WiLARM-MICRO GSM Modul Telepítői Útmutató Verzió: 2.0

SIOUX-RELÉ. Sioux relé modul telepítési leírás Szerkesztés MACIE0191

Bevezetés a mikrovezérlők programozásába: DC motorok vezérlése

Bevezetés a mikrovezérlők programozásába: Digitális szenzorok

Bevezetés a mikrovezérlők programozásába: I/O portok kezelése, számrendszerek, bitműveletek

Vegyes témakörök. 1. Soros vezérlésű LCD számkijelző. Hobbielektronika csoport 2018/2019. Debreceni Megtestesülés Plébánia

MSP430 programozás Energia környezetben. Az I/O portok kezelése

Mintavételes szabályozás mikrovezérlő segítségével

11. KÓDÁTALAKÍTÓ TERVEZÉSE HÉTSZEGMENSES KIJELZŐHÖZ A FEJLESZTŐLAPON

Az MSP430 mikrovezérlők digitális I/O programozása

Hobbi Elektronika. A digitális elektronika alapjai: Sorrendi logikai áramkörök 3. rész

Mikrorendszerek tervezése

Dinnyeválogató v2.0. Típus: Dinnyeválogató v2.0 Program: Dinnye2 Gyártási év: 2011 Sorozatszám:

Silabs STK3700, Simplicity Studio laborgyakorlat

Bevezetés a mikrovezérlők programozásába: Ismerkedés az Arduino fejlesztői környezettel

3. Hőmérők elkészítése

DIGITÁLIS TECHNIKA feladatgyűjtemény

Beágyazott és Ambiens Rendszerek Laboratórium BMEVIMIA350. Mérési feladatok az 1., 2. és 3. mérési alkalomhoz

Bevezetés a mikrovezérlők programozásába: Az Arduino, mint logikai analizátor

IDAXA-PiroSTOP. PIRINT PiroFlex Interfész. Terméklap

R2T2. Műszaki leírás 1.0. Készítette: Forrai Attila. Jóváhagyta: Rubin Informatikai Zrt.

Programozás 5. Dr. Iványi Péter

Tarján Péter Nyíregyházi Egyetem. Szenzorok és ötletek Arduinós mérésekhez

AF 088II DIO 16/8 AF 088II DIO 16. Digitális ki-, bemeneti modul. Digitális bemeneti modul

Roger UT-2. Kommunikációs interfész V3.0

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

A LOGSYS GUI. Fehér Béla Raikovich Tamás, Laczkó Péter BME MIT FPGA laboratórium

RUBICON Serial IO kártya

WiLARM-ONE GSM Modul Telepítői Útmutató Verzió: 2.0

Dr. Oniga István DIGITÁLIS TECHNIKA 4

SK-M2EM ADATLAP - HASZNÁLATI ÚTMUTATÓ 1. RFID olvasó 125kHz EM és HID típusú kártyákhoz

DIGITÁLIS TECHNIKA 7. Előadó: Dr. Oniga István

Digitális technika (VIMIAA02) Laboratórium 3

Ellenőrző mérés mintafeladatok Mérés laboratórium 1., 2011 őszi félév

Digitális technika (VIMIAA02) Laboratórium 3

LOGSYS LOGSYS LCD KIJELZŐ MODUL FELHASZNÁLÓI ÚTMUTATÓ november 8. Verzió

Digitális technika (VIMIAA01) Laboratórium 9

Tartalomjegyzék. 8X8 as Led mátrix kijelző old. Llurch Komornyik old. Egyszerű gépek old.

D/A konverter statikus hibáinak mérése

Digitális technika (VIMIAA02) Laboratórium 5.5

Mérési útmutató a Mobil Kommunikáció és Kvantumtechnológiák Laboratórium méréseihez

Arduino bevezető Szenzorhálózatok és alkalmazásaik

Multi-20 modul. Felhasználói dokumentáció 1.1. Készítette: Parrag László. Jóváhagyta: Rubin Informatikai Zrt.

Digitális technika (VIMIAA01) Laboratórium 9

Bevezetés a mikrovezérlők programozásába: Kommunikáció

Bevezetés az Arduino mikrovezérlők programozásába

NIPRESS. P6 programozó készülék

Stack Vezérlés szerkezet Adat 2.

Nyolcbites számláló mintaprojekt

ems2.cp04d [18010] Keriterv Mérnök Kft Programozható Automatikai állomás 14 multifunkcionális bemenet, 6 relé kimenet, 4 analóg kimenet DIGICONTROL

A feladatokat önállóan, meg nem engedett segédeszközök használata nélkül oldottam meg. Olvasható aláírás:...minta VIZSGA...

PLC Versenyfeladat. XIV. Országos Irányítástechnikai Programozó Verseny Budapest, március Összeállította az EvoPro Kft.

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Digitális technika VIMIAA hét

MICROCHIP PIC DEMO PANEL

Programozás és Digitális technika I. Pógár István eng.unideb.hu/pogari

DIGITÁLIS TECHNIKA I

Hobbi Elektronika. A digitális elektronika alapjai: Sorrendi logikai áramkörök 4. rész

AC-MFS. RFID kártyaolvasó és kódzár. Felhasználói leírás

Átírás:

MSP430 programozás Energia környezetben LED mátrix vezérlése MAX7219 IC-vel 1

LED 8x8 mátrix 3 mm-es piros LED-ek 8x8 mátrixba szervezve 1088AS vagy M1388AR típusnál a sorkiválasztó vonal a közös katód Multiplex kijelzés, egyidejűleg legfeljebb egy sor, vagy egy oszlop lehet aktív. Kényelmes meghajtás: 1 db MAX7219, vagy 2 db 74HC595 (+ meghajtó +áramkorlátozás) 1 db MCP23017 (+ meghajtó +áramkorlátozás) 2

MAX7219 LED meghajtó IC, beépített áramkorlátozással. 7 szegmens kijelző esetén 1-8 db számjegy meghajtása (opcionálisan beépített dekódolással), vagy 8x8 LED mártix meghajtása. Az IC vezérlése SPI buszon történhet. 3

Komplett kijelző modul (Ebay.com) 8x8 LED mátrix MAX7219 vezérlő Felfűzhető kivitel Tápellátás: 3,5 5 V Bemenetek Kimenetek 1 VCC 1 VCC 2 GND 2 GND 3 DIN 3 DOUT 4 CS 4 CS 5 CLK 5 CLK 4

Kapcsolási rajz 5

Lab15 LED8x8_MAX7219_SPI Egyszerű mintaprogram, hardveres SPI támogatással LED8x8_MAX7219_shiftOut Egyszerű mintaprogram, szoftveres SPI kezeléssel LED8x8_MAX7219_cascaded Fényújság felfűzött 8x8-as LED mátrix kijelzőkön (szöveget görgetünk a kijelzőkön). LED8x8_MAX7219_LedControl LED mátrix kezelése programkönyvtár felhasználásával. LED8x8_MAX7219_LedControl_4 felfűzött LED mátrixok kezelése programkönyvtár felhasználásával. libraries a LedControl programkönyvtár és a 6x8-as fonttábla 6

Lab16: LED8x8_MAX7219_SPI.ino A program felváltva H és W jelet mutat a kijelzőn. #include "SPI.h" const int SPI_CS = P2_4; //SPI Chip select (LED CS bemenetre) const unsigned char led1[]= {0xFF,0x18,0x18,0x18,0x18,0x18,0x18,0xFF; //H const unsigned char led2[]= {0x1F,0x60,0x80,0x40,0x40,0x80,0x60,0x1F; //W void setup() { pinmode(spi_cs,output); digitalwrite(spi_cs,high); SPI.begin(); SPI.setClockDivider(SPI_CLOCK_DIV4); SPI.setBitOrder(MSBFIRST); SPI.setDataMode(SPI_MODE0); Init_MAX7219(); //SPI_CS kimenet inicializálása //Alaphelyzetben magas szinten legyen //LED vezérlő bekonfigurálása void loop (){ for(int i=1; i<9; i++) //Első karakter (8 sor) kiírása SPI_Write2(i,led1[i-1]); delay(1000); //1 s várakozása for(int i=1; i<9; i++) //Második karakter (8 sor) kiírása SPI_Write2(i,led2[i-1]); delay(1000); //1 s várakozása Folytatás a következő lapon... 7

Lab16: LED8x8_MAX7219_SPI.ino void SPI_Write2(unsigned char MSB, unsigned char LSB) {// Két bájt kiküldése digitalwrite(spi_cs,low); SPI.transfer(MSB); SPI.transfer(LSB); regisztercím és adatbájt kiküldése digitalwrite(spi_cs,high); void Init_MAX7219(void){ SPI_Write2(0x09, 0x00); SPI_Write2(0x0A, 0x08); SPI_Write2(0x0B, 0x07); SPI_Write2(0x0C, 0x01); SPI_Write2(0x0F, 0x0F); SPI_Write2(0x01, 0x00); SPI_Write2(0x02, 0x00); SPI_Write2(0x03, 0x00); SPI_Write2(0x04, 0x00); SPI_Write2(0x05, 0x00); SPI_Write2(0x06, 0x00); SPI_Write2(0x07, 0x00); SPI_Write2(0x08, 0x00); SPI_Write2(0x0F, 0x00); // A LED vezérlő IC konfigurálása //Dekódolást kikapcsolni //Közepes fényerő beállítása //Pásztázási korlát beállítása //Megjelenítési mód beállítása //Display teszt engedélyezése //0. sor törlése //1. sor törlése //2. sor törlése //3. sor törlése //4. sor törlése //5. sor törlése //6. sor törlése //7. sor törlése //Display teszt tiltás Adatlap szerinti konfigurálás Kijelző törlése 8

Technikai részletek az inicializáláshoz Nem használt DP a b c d e f g 0: no decode 1: decode 0 0xF 0 7 0: shutdown 1: normal mode 1: test mode 0: normal mode 9

Huzalozási vázlat VCC VCC GND GND P1.7 DIN P2.4 CS P1.5 CLK 10

Változás Változás LED8x8_MAX7219_shiftOut.ino Ugyanaz, mint LED8x8_MAX7219_SPI, csak a kiküldés szoftveresen történik. A program felváltva X és jelet mutat. const int SPI_DIN = P2_3; //SPI MOSI adatvonal (LED DIN bemenetre) const int SPI_CS = P2_4; //SPI Chip select (LED CS bemenetre) const int SPI_ClK = P2_5; //SPI CLK órajel (LED CLK bemenetre) const unsigned char led1[]= {0x0,0x41,0x22,0x14,0x1C,0x14,0x22,0x41; //X const unsigned char led2[]= {0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0xFF; // void setup() { pinmode(spi_cs,output); digitalwrite(spi_cs,high); pinmode(spi_din,output); digitalwrite(spi_din,low); pinmode(spi_clk,output); digitalwrite(spi_clk,high); Init_MAX7219(); //SPI_CS kimenet inicializálása //Alaphelyzetben magas szinten legyen //SPI_DIN kimenet inicializálása //Alaphelyzetben alacsony szinten //SPI_CS kimenet inicializálása //Alaphelyzetben alacsony szinten //LED vezérlő bekonfigurálása void loop (){ for(int i=1; i<9; i++) //Első karakter (8 sor) kiírása SPI_Write2(i,led1[i-1]); delay(1000); //1 s várakozása for(int i=1; i<9; i++) //Második karakter (8 sor) kiírása SPI_Write2(i,led2[i-1]); delay(1000); //1 s várakozása Folytatás a következő lapon... 11

Lab16: LED8x8_MAX7219_SPI.ino void SPI_Write2(unsigned char MSB, unsigned char LSB) {// Két bájt kiküldése digitalwrite(spi_cs,low); shiftout(spi_din,spi_clk,msbfirst,msb); shiftout(spi_din,spi_clk,msbfirst,lsb); Változás digitalwrite(spi_cs,high); void Init_MAX7219(void){ // A LED vezérlő IC konfigurálása SPI_Write2(0x09, 0x00); //Dekódolást kikapcsolni SPI_Write2(0x0A, 0x08); //Közepes fényerő beállítása SPI_Write2(0x0B, 0x07); //Pásztázási korlát beállítása SPI_Write2(0x0C, 0x01); //Megjelenítési mód beállítása SPI_Write2(0x0F, 0x0F); //Display teszt engedélyezése SPI_Write2(0x01, 0x00); //0. sor törlése SPI_Write2(0x02, 0x00); //1. sor törlése SPI_Write2(0x03, 0x00); //2. sor törlése SPI_Write2(0x04, 0x00); //3. sor törlése SPI_Write2(0x05, 0x00); //4. sor törlése SPI_Write2(0x06, 0x00); //5. sor törlése SPI_Write2(0x07, 0x00); //6. sor törlése SPI_Write2(0x08, 0x00); //7. sor törlése SPI_Write2(0x0F, 0x00); //Display teszt tiltás 12

Huzalozási vázlat VCC VCC GND GND P2.3 DIN P2.4 CS P2.5 CLK 13

Fényújságot készítünk, mely bővíthető a kijelző modulok felfűzésével 14

LED8x8_MAX7219_cascaded.ino A huzalozás ugyanaz, mint LED8x8_MAX7219_shiftOut-nál, a kiküldés itt is szoftveresen történik. A program egy előre megadott szöveget görget. #include "english_6x8_pixel.h" //A karakterek bitképének betöltése const int SPI_CS = P2_4; //SPI Chip select (LED CS bemenetre) const int SPI_DIN = P2_3; //SPI MOSI adatvonal (LED DIN bemenetre) const int SPI_CLK = P2_5; //SPI CLK órajel (LED CLK bemenetre) #define NDISP 3 //A felfűzött modulok száma #define NROWS 24 //A pixelsorok száma (8 * NDISP) unsigned char pixels[nrows]; //Bitkép tároló void setup() { pinmode(spi_cs,output); //SPI_CS kimenet inicializálása digitalwrite(spi_cs,high); pinmode(spi_clk,output); //SPI_CLK kimenet inicializálása digitalwrite(spi_clk,low); pinmode(spi_din,output); //SPI_DIN kimenet inicializálása digitalwrite(spi_din,low); Init_MAX7219(); //LED vezérlő bekonfigurálása for(int i=0; i<nrows; i++) { pixels[i] = 0; Folytatás a következő lapon... 15

LED8x8_MAX7219_cascaded.ino void loop() { showtext("hobbielektronika csoport "); showtext("debreceni Megtestesules Plebania "); void scrollinrow(int data) { for(int r=0; r<nrows; r++) { //A bitkép tároló görgetése pixels[r]=pixels[r+1]; //Mindegyik sor balra lép pixels[nrows-1]=data; //Új adat beírás jobbszélen for(int r=1; r<9; r++) { //A tárolt bitkép kiírása soronként digitalwrite(spi_cs,low); //Tranzakció kezdete for(int i=r-1; i<nrows; i +=8) { //Sor kiírása modulonként shiftout(spi_din,spi_clk,msbfirst,r); //Sorszám kiküldése shiftout(spi_din,spi_clk,msbfirst,pixels[i]); //Adat kiküldése digitalwrite(spi_cs,high); //Tranzakció vége 16

LED8x8_MAX7219_cascaded.ino /* Egy karakter kiíratása */ void writechar(char ch) { ch -= 32; for (int line=0; line<6; line++) { scrollinrow(font6x8[ch][line]); delay(100); Adatelővétel az "english_6x8_pixel.h" állományban definiált tömbből. //Sorszámozás a szóköztől //Kiírás a jobbszélső sorba //Egy kis várakozás /* Karakterfüzér kijelzése balra görgetéssel */ void showtext(char *s) { while(*s) { //Addig írunk, amíg nullát nem találunk writechar(*s); s++; void SPI_Write2(unsigned char MSB, unsigned char LSB) void Init_MAX7219(void) Ugyanazok, mint az előző programban! 17

english_6x8pixel.h fonttábla const unsigned char font6x8[][6] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // sp { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, //! { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, // " { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14, // # { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12, // $ { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23, // % { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50, // & { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00, //.... { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20, // t { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C, // u { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C, // v { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C, // w { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, // x { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C, // y { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44, // z { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 // horiz lines ; 18

LED8x8_MAX7219_cascaded.ino 19

LedControl programkönyvtár Kényelmesebb megoldás tűnik, ha a saját függvények helyett k az Arduinohoz készült programkönyvtárat használunk, de a tapasztalatok szerint nem problémamentes az MSP430-ra történő adaptálása. Szerencsére van előzmény MAX7219 programkönyvtár Arduinohoz/Energiához Alkalmas max 8 db. Felfűzött MAX7219 IC-vel meghajtott 8x8- as LED mátrix vagy 8 digites, közös katódú 7 szegmens kijelző vezérlésére 2007 Eberhard Fahle - eredeti változat (http://playground.arduino.cc/main/ledcontrol) 2013 Alessandro Pasotti - MSP430/Energia adaptáció (http://www.itopen.it/2013/08/28/new-energia-ledcontrol-library/) 2014 Cserny István kisebb módosítások, bővítés (pl. getrow() ) (http://megtestesules.info/hobbielektronika/2013.html) 20

LedControl programkönyvtár (A szokásos módon a Dokumentumok\Energia\libraries mappába kell bemásolni!) LedControl(int datapin, int clkpin, int cspin, int numdevices=1); - Konstruktor függvény init() Inicializálás, amelyet a setup()-ban kell meghívni shutdown(int addr, bool status); - Kijelzés leállítása/engedélyezése (true/false) setscanlimit(int addr, int limit); - Pontsorok vagy digitek számának beállítása (0-7) setintensity(int addr, int intensity); - Fényerő beállítása (0 15) cleardisplay(int addr); - Kijelző törlése 8x8 LED mátrix: setled(int addr, int row, int col, boolean state); - egy LED ki-/bekapcsolása getrow(int addr, int row); - Egy LEDsor állapotának kiolvasása setrow(int addr, int row, byte value); - egy LED sor állapotának beállítása setcolumn(int addr, int col, byte value); - egy LED oszlop állapotának beállítása 7-szegmens kijelző: setdigit(int addr, int digit, byte value, boolean dp); - egy számjegy kiírása (0..9) setchar(int addr, int digit, char value, boolean dp); - egy karakter kiírása (A,b,c,d,E,F,H,L,P) 21

LED8x8_MAX7219_LedControl.ino Az előző példában bemutatott fényújság megvalósítása egy kijelző modullal. #include "LedControl.h" #include "english_6x8_pixel.h" Be kell csatolni a könyvtárat #define DATA_PIN P2_3 // DIN for MAX7219 #define CLOCK_PIN P2_5 // CLK for MAX7219 #define LOAD_PIN P2_4 // CS for MAX7219 const char line1[] = "LED8x8_MAX7219_LedControl.ino example program "; LedControl lc=ledcontrol(data_pin, CLOCK_PIN, LOAD_PIN, 1); void setup() { pinmode(red_led,output); pinmode(data_pin,output); pinmode(clock_pin,output); pinmode(load_pin,output); digitalwrite(load_pin,high); lc.init(); lc.shutdown(0,false); lc.setintensity(0,10); lc.cleardisplay(0); void loop() { showtext((char*)line1); Folytatás a következő oldalon... Kimenetek inicializálása Kijelző modul inicializálása Fényújság: szöveg görgetése 22

LED8x8_MAX7219_LedControl.ino /* Egy pontsor begörgetése jobbról */ void scrollinrow(int data) { for(int r=0; r<7; r++) { //Minden sort balra görget lc.setrow(0,r,lc.getrow(0,r+1)); lc.setrow(0,7,data); //Új adat a jobbszélső sorba /* Egy karakter kiíratása */ void writechar(char ch) { ch -= 32; //A szóköztől indul az indexelés for (int line=0; line<6; line++) { scrollinrow(font6x8[ch][line]); //Egy új pontsor kijelzésa delay(100); //Egy kis várakozás... /* Karakterfüzér kijelzése balra görgetéssel */ void showtext(const char *s) { while(*s) { writechar(*s); s++; Adatelővétel az "english_6x8_pixel.h" állományban definiált tömbből. 23

LED8x8_MAX7219_LedControl.ino 24

LED8x8_MAX7219_LedControl_4.ino Az előző példában bemutatott fényújság kiterjesztése 4 db kijelzőre #include "LedControl.h" #include "english_6x8_pixel.h" #define DATA_PIN P2_3 // DIN for MAX7219 #define CLOCK_PIN P2_5 // CLK for MAX7219 #define LOAD_PIN P2_4 // CS for MAX7219 #define NDISP 4 //A felfűzött modulok száma #define NROWS 32 változás //A pixelsorok száma (8*NDISP) const char line1[] = "LED8x8_MAX7219_LedControl_4 example program "; LedControl lc=ledcontrol(data_pin, CLOCK_PIN, LOAD_PIN, NDISP); void setup() { pinmode(red_led,output); pinmode(data_pin,output); pinmode(clock_pin,output); Kimenetek inicializálása pinmode(load_pin,output); digitalwrite(load_pin,high); lc.init(); for(int i=0; i<ndisp; i++) { lc.shutdown(i,false); Kijelző modulok inicializálása lc.setintensity(i,10); lc.cleardisplay(i); Folytatás a következő oldalon... 25

LED8x8_MAX7219_LedControl_4 void loop() { showtext((char*)line1); /* Egy pontsor begörgetése jobbról */ void scrollinrow(int data) { int a0,a1,r0,r1; for(int r=0; r<nrows-1; r++) { a0 = r>>3; // a0 = r/8 a1 = (r+1)>>3; // a1 = (r+1)/8 r0 = r&0x07; // r0 = r % 8 r1 = (r+1)&0x07; // r1 = (r+1)%8 lc.setrow(a0,r0,lc.getrow(a1,r1)); lc.setrow(ndisp-1,7,data); Megjegyzések: A szöveg görgetésnél az a1. modul r1. pontsorából az a0. modul r0. sorába másolunk. A 0 NROWS pontsorok sorszámából maradékos osztással állítjuk elő a modul sorszámát (a0 és a1), valamint a modulon belüli sorszámot (r0 és r1). A korábban kiírt adatokat a getrow() függvényhívással vehetjük elő. A showtext(9 és a writechar() függvény megegyezik a korábbi programban mutatottal. 26

LED8x8_MAX7219_LedControl_4 27