Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Arduino a 2xMAX7219

 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Miniaturní počítače (Arduino, Raspberry a další)
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
jankrizan



Založen: Dec 30, 2007
Příspěvky: 119

PříspěvekZaslal: ne srpen 24 2025, 14:15    Předmět: Arduino a 2xMAX7219 Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rnbw



Založen: Mar 21, 2006
Příspěvky: 36434
Bydliště: Bratislava

PříspěvekZaslal: ne srpen 24 2025, 14:26    Předmět: Citovat

MAX2719 sa daju retazit ("cascading"), vid datasheet.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
jankrizan



Založen: Dec 30, 2007
Příspěvky: 119

PříspěvekZaslal: ne srpen 24 2025, 14:33    Předmět: Citovat

Je mi jasné, ale ako napísať program, aby každý displej zobrazoval niečo iné? To neovládam vytvoriť, na korekcie programu si trúfam.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rampage



Založen: Jan 12, 2025
Příspěvky: 76

PříspěvekZaslal: ne srpen 24 2025, 15:37    Předmět: Citovat

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...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
martinkopp



Založen: Oct 12, 2023
Příspěvky: 897

PříspěvekZaslal: ne srpen 24 2025, 16:10    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rampage



Založen: Jan 12, 2025
Příspěvky: 76

PříspěvekZaslal: ne srpen 24 2025, 16:25    Předmět: Citovat

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.



1.png
 Komentář:
 Velikost:  62.24 kB
 Zobrazeno:  5 krát

1.png


Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
jankrizan



Založen: Dec 30, 2007
Příspěvky: 119

PříspěvekZaslal: ne srpen 24 2025, 18:08    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
HF_Tech



Založen: Apr 25, 2022
Příspěvky: 1514

PříspěvekZaslal: ne srpen 24 2025, 19:04    Předmět: Citovat

Chatgpt říká použít LEDcontrol knihovnu
kód:
#include <LedControl.h>

// Pins: DIN = 11, CLK = 13, CS = 10
// 2 devices daisy chained
LedControl lc = LedControl(11, 13, 10, 2);

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


Připojení:
DIN → Arduino D11
CLK → Arduino D13
CS/LOAD → Arduino D10
VCC → 5V
GND → GND
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
bum



Založen: Sep 04, 2011
Příspěvky: 274

PříspěvekZaslal: ne srpen 24 2025, 19:09    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
Valdano



Založen: Jan 01, 2023
Příspěvky: 2630
Bydliště: Česká Lípa

PříspěvekZaslal: po srpen 25 2025, 2:44    Předmět: Citovat

Dratek: Příklad k MAX7219, popis i se zdrojákem pro Arduino.

Zapojení dvou obvodů MAX7219 viz tento odkaz.

Upravený zdroják pro dva moduly MAX7219.

kód:
#include "LedControl.h"
// nastavení propojovacích pinů
#define DIN 12
#define CS  10
#define CLK 13

#define PRVNI_MAX7219  0
#define DRUHY_MAX7219  1

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

void napisArduino(int addr)
{
  // ukázka nastavení znaků různými způsoby
  // s pauzou mezi zobrazeními
  max7219.setChar(addr, 6, 'a', false);
  delay(pauza);
  max7219.setRow(addr, 5, 0x05);
  delay(pauza);
  max7219.setChar(addr, 4, 'd', false);
  delay(pauza);
  max7219.setRow(addr, 3, 0x1c);
  delay(pauza);
  max7219.setRow(addr, 2, B00010000);
  delay(pauza);
  max7219.setRow(addr, 1, 0x15);
  delay(pauza);
  max7219.setRow(addr, 0, 0x1D);
  delay(10*pauza);
  // vyčištění displeje
  max7219.clearDisplay(addr);
  delay(pauza);
};

void setCas(int addr, unsigned long cas)
{
  // výpis času na všech 8 segmentů
  // postupným získáním jednotlivých číslic
  max7219.setDigit(addr, 7, (cas / 10000000) % 10, false);
  max7219.setDigit(addr, 6, (cas / 1000000) % 10, false);
  max7219.setDigit(addr, 5, (cas / 100000) % 10, false);
  max7219.setDigit(addr, 4, (cas / 10000) % 10, false);
  max7219.setDigit(addr, 3, (cas / 1000) % 10, false);
  max7219.setDigit(addr, 2, (cas / 100) % 10, false);
  max7219.setDigit(addr, 1, (cas / 10) % 10, false);
  max7219.setDigit(addr, 0, cas % 10, false);
};

void setup()
{
  // vypnutí úsporného režimu
  max7219.shutdown(PRVNI_MAX7219, false);
  max7219.shutdown(DRUHY_MAX7219, false);
  // nastavení intenzity na přibližnou polovinu (0-15)
  max7219.setIntensity(PRVNI_MAX7219, 8);
  max7219.setIntensity(DRUHY_MAX7219, 8);
  // vypnutí svitu všech znaků
  max7219.clearDisplay(PRVNI_MAX7219);
  max7219.clearDisplay(DRUHY_MAX7219);
  // výpis textu "Arduino" na segmenty
  napisArduino(PRVNI_MAX7219);
  napisArduino(DRUHY_MAX7219);
};

void loop()
{
  // načtení času od spuštění do proměnné
  unsigned long cas = millis();

  // výpis času na všech 8 segmentů
  // na první MAX7219
  setCas(PRVNI_MAX7219, cas);
  delay(pauza);

  // výpis času na všech 8 segmentů
  // na druhý MAX7219
  setCas(DRUHY_MAX7219, cas);
  delay(pauza);
};

Ohledně dalších úprav se inspirujte z popisu knihovny LedControl.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
bu2520



Založen: Jul 16, 2007
Příspěvky: 4633
Bydliště: u HK

PříspěvekZaslal: po srpen 25 2025, 6:56    Předmět: Citovat

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.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mluno



Založen: Apr 18, 2011
Příspěvky: 249
Bydliště: Benešov (u Prahy)

PříspěvekZaslal: čt srpen 28 2025, 17:20    Předmět: Citovat

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.



7219 uprava programu.zip
 Komentář:
Moje vylepšení knihovny LedControl

Stáhnout
 Soubor:  7219 uprava programu.zip
 Velikost:  11.05 kB
 Staženo:  5 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Miniaturní počítače (Arduino, Raspberry a další) Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
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

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

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.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.26 sekund