Zaslal: ne srpen 24 2025, 14:15 Předmět: Arduino a 2xMAX7219
Zdravím. Potreboval by som zapojiť dva moduly 7-segmentové MAX7219. Nájde sa niekto, (myslím, že isto), kto mi poradí, ako bude znieť sketch, alebo kde nájdem návod na program s prepojením na tieto dva moduly? Potrebujem (chcem) vyhodiť LCD displej a namiesto neho zapojiť MAX.... v spajkovacej stanici, kde treba aby jeden displej zobrazoval aktualnu teplotu hrotu a druhý displej nastavovaciu. Hľadam aj na internete, ale asi neviem hľadať, pretože nič také som nenašiel. Stačilo by aj nejakú aplikáciu s dvoma modulmi, ja si už prispôsobím obsah. Nie matrix displeje. Ďakujem.
Tak písať program nie je až tak zložité, céčko nemá krkolomnú syntax. Gro budeš vždy hľadať v datasheete, tzn. ako ten čip správne adresovať a aké príkazy mu posielať tak aby fungovali dva (v datasheete označené ako daisy-chain).
Ale skús ChatGPT. Nedávno som mu dal dotaz, ako správne programovať sekvencer v konkrétnom čipe, určenom pre prácu s MFM harddiskami. Normálne si to samo naštudovalo datasheet z 1991 (generovanie odpovede trvalo tri minúty) a vyplulo funkčný princíp pseudokódu, aj s vysvetlením jednotlivých registrov. Ten som už následne poupravil a doladil tak, aby korešpondoval s tým, ako som mal ten čip pripojený na adresné linky Arduina.
Jasné, že to nevypluje hneď funkčné a škálovatelné riešenie jak na striebornom podnose, ale nakopnúť to vie...
Nic na tom není, prostě do prvního obvodu data pošleš nejdřív pro druhý v řetězu, pak pro první displej a zobrazíš chip selectem, pokud si dobře pamatuju.
Datasheet popisuje spojiť chipselecty dohromady a DOUT prvého MAXu zapojiť do DIN druhého. Cez SPI následne pošle jedno 16bit slovo a jeden no-op. Pri preklopení /CS následne dostane ten prvý čip nič a druhý data - alebo môže takto naprogramovať data hneď pre obidva. V datasheete to má rozpísané do detailu.
Zo strany Arduina mu stačí pozrieť príklad ako sa pracuje so SPI.
Chlapi, priznám sa, že tomu nerozumiem. Teoria (Nic na tom není, prostě do prvního obvodu data pošleš nejdřív pro druhý v řetězu, pak pro první displej a zobrazíš chip selectem), je pekná, ale ja neovládam príkazy na tvorbu programu, ani ako mám zadať do jednotlivých príkazov. Vo veku 65-ke, už nie je ten "memory efekt" v hlave, ako v 20-ke. Ak máte niekto nejaký funkčný program s dvoma MAX, viac by mi pomohlo, keby so ho videl napísaný, skôr ho pochopím. Vďaka.
void setup() {
// Wake up the displays
for (int i = 0; i < 2; i++) {
lc.shutdown(i, false); // Wake up
lc.setIntensity(i, 8); // Set brightness (0–15)
lc.clearDisplay(i); // Clear display
}
// Example: Display text across 16 digits
displayText("HELLO WORLD 1234");
}
void loop() {
// Nothing here for now
}
// Maps characters to 7-segment (limited to supported ones)
void displayText(String text) {
const char* charMap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ -";
byte segmentCodes[] = {
0b01111110, // 0
0b00110000, // 1
0b01101101, // 2
0b01111001, // 3
0b00110011, // 4
0b01011011, // 5
0b01011111, // 6
0b01110000, // 7
0b01111111, // 8
0b01111011, // 9
0b01110111, // A
0b00011111, // B
0b01001110, // C
0b00111101, // D
0b01001111, // E
0b01000111, // F
0b01011110, // G
0b00110111, // H
0b00110000, // I (same as 1)
0b00111100, // J
0b00000000, // K (not displayable)
0b00001110, // L
0b00000000, // M (not displayable)
0b00010101, // N (compromise)
0b01111110, // O
0b01100111, // P
0b01110011, // Q
0b00000101, // R
0b01011011, // S
0b00001111, // T
0b00111110, // U
0b00111110, // V (same as U)
0b00000000, // W (not displayable)
0b00110111, // X (same as H)
0b00111011, // Y
0b01101101, // Z (same as 2)
0b00000000, // space
0b00000001 // dash -
};
Na webu drátek.cz v sekci NAVODY K PRODUKTŮM na str.36 je popsáno ovládání jednoho IO Max 7219 8*8 led diod a na str.21 je ovládání osmimístného led displeje s uvedeným MAX7219 s programy, tyto se dají upravit jak potřebujete. Uvedené led moduly 8*8 i displeje led 7 * 8 s MAX 7219 ovládám pomocí PICAXE i počítačem pomocí sériového portu viz web. _________________ www.mojeelektronika.mzf.cz
Naposledy upravil bum dne st srpen 27 2025, 13:18, celkově upraveno 1 krát.
// vytvoření objektu displeje,
// propojovací piny a počet MAX obvodů (2)
LedControl max7219 = LedControl(DIN, CLK, CS, 2);
// proměnná pro pauzy mezi znaky
int pauza = 250;
Založen: Jul 16, 2007 Příspěvky: 4633 Bydliště: u HK
Zaslal: po srpen 25 2025, 6:56 Předmět:
Trochu jsem s tím měl problémy při řízení matice, pokud jsem neposlal na matici , která neměla nic zobrazit prázdný znak , tak se tam zkopíroval znak z předchozí matice.
Založen: Apr 18, 2011 Příspěvky: 249 Bydliště: Benešov (u Prahy)
Zaslal: čt srpen 28 2025, 17:20 Předmět:
Je několik knihoven a ne všechny umí řetězené displeje ovládat.
Z mých poznámek:
kód:
name=LedControl
version=1.0.6
author=Eberhard Fahle <e.fahle@wayoda.org>
maintainer=Eberhard Fahle <e.fahle@wayoda.org>
sentence=A library for the MAX7219 and the MAX7221 Led display drivers.
paragraph=The library supports multiple daisychained drivers and supports Led-Matrix displays as well as 7-Segment displays.
category=Display
url=http://wayoda.github.io/LedControl/
architectures=*
Je to zřejmě právě ta knihovna, kterou jsem použil po vyzkoušení více různých. A protože mě štvalo, že se občas displej rozsypal (asi jak se tam vadným spojením poslalo něco jiného) tak jsem dopsal funkci na reinit displeje, kterou jsem nakonec volal před každým zobrazením. Nejdřív jsem měl v plánu ji volat v nějakých intervalech, ale zrovna v tom programu bylo času dost, tak jsem to udělal právě tak. Dávám do přílohy.
Můj požadavek bylo právě ovládání několika zřetězených 7219. Jak segmentových tak maticových, možná i nějaké kombinace. Používal jsem i jiné knihovny, už jsem se v tom dlouho nehrabal, tak si přesně nepamatuju, musel bych vzpomínat.
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.