RGB Matrix 32x64 - Cijfers en letters via drukknoppen

Al een tijdje ben ik op zoek naar het volgende en aangezien programmeren niet mijn sterkste kant is moet ik het hebben van voorbeelden op het internet. Helaas heb ik deze niet gevonden.

Ik heb hier voor mij liggen een RGB Matrix panel 32x64 met een Arduino Mega 2560. Dit geheel werkt hardware matig goed want willekeurig gedownloade sketches draaien allemaal goed.

Nu wil ik iets maken dat in drie (of vier) kolommen letters en cijfers laar zien en die in te stellen zijn door middel van drukknoppen. Natuurlijk x, y gevuld.

Dus zoiets als:
Drukknop 1 -> A…Z , 0…9
Drukknop 2 -> A…Z , 0…9
Drukknop 3 -> A…Z , 0…9
Drukknop 4 -> Volgende kolom

Zou iemand mij een beetje op weg kunnen helpen hiermee?

I love it when a plan comes together !

Het leukste is als je zelf snapt hoe het een en ander werkt. De eerste stap heb je gemaakt: voorbeelden van internet downloaden en die werkend krijgen. Je hebt er lol in en wilt meer: eigen projecten realiseren.

Ik raad je aan om klein te beginnen. Probeer zelf een stukje code te schrijven om een LEDje te laten knipperen. Gebruik handleidingen, informatie op internet en voorbeelden van de programmeertaal waar jij mee wilt werken. Het is heel voor de hand liggend en aantrekkelijk, maar probeer niet te kopiëren en te plakken, maar echt zelf te schrijven. Desnoods typ je iets over.

Door zo stap voor stap je uitdaging of te behalen doel te verleggen en zelf met de code bezig te zijn, leer je snel hoe het werkt en hoe je een RGB matrix aan kunt sturen.

Zelf heb ik geen ervaring met Arduino dus kan je inhoudelijk, praktisch, niet helpen hoe en waar je precies het beste kunt beginnen.
Mijn eigen ervaring met software in het algemeen is om met zo min mogelijk (vage) bibliotheken te werken in het begin en echt vanuit de (kale) code iets voor elkaar krijgen. Later, als je beter begrijpt hoe alles werkt, kan je met externe bibliotheken wel dingen vereenvoudigen.

Kwaliteit boven kwantiteit

Hoewel TS er niet mee geholpen is, moet ik hier toch andermaal tegenin gaan.
Dus [offtopic], met excuses.

Stel dat het bijvoorbeeld om Neopixels zou gaan. Wat TS dan mist is een eenvoudig stukje code dat:

  • een knop ontdenderd
  • een getal ophoogt modulus 36
  • daarmee een karakter opzoekt in een matrix gevuld met 0-9, a-z.
  • dat karakter tot slot op de huidige plek op de matrix schrijft

En dan nog wat soortgelijks om die 'huidige plek' en het formaat of wat ook te kunnen kiezen.

Als TS voor de laatste stap gebruik maakt van de bibliotheken die daar voor zijn, en die TS al werkend heeft, dan is dat eenvoudig.
Dat maakt dat dit een uitstekend project is voor een beginner. Het is niet moeilijk, er hoeft niets op tijd, er hoeft geen hardware aangesproken te worden en het kan in kleine stapjes gebouwd worden.

Te stellen dat TS beter kan beginnen met deze bibliotheken zelf te schrijven is in mijn ogen niet handig. Alleen al de routines om de vrij snelle neopixel data efficient naar buiten te schuiven zijn in mijn ogen specialistenwerk, dat in verhouding tot het aantal gebruikers maar een heel kleine groep mensen wereldwijd in de vingers heeft. Om over de gfx graphics core maar te zwijgen.

De mensen die die code maken zijn allerminst beginners. Om efficient low-level code te kunnen schrijven moet toch eerst de nodige kennis en ervaring opgedaan worden, en dat kan imo prima door eens wat leuks te bouwen met de libraries die er al zijn.

Niet iedereen wil of kan de jaren er in steken die nodig zijn om dit voorbeeld werkelijk zelf te kunnen. Ik niet, in elk geval. Ik bouw zo veel mogelijk voort op wat er al is, dat is veel efficienter.

Goede toevoeging Aart.
Volgens mij schrijf je niet andermaal iets anders, maar onderstreep je wat ik wilde zeggen: Bij de basis beginnen en vooral snappen wat je doet. Voor iedereen kan dat een ander startpunt zijn. Ik kwam met een optie zoals ik dat zelf altijd doe met nieuwe dingen. Jij hebt een iets andere visie. Ook prima.

Ik heb jaren in het (wetenschappelijk) onderwijs gewerkt en leer mensen graag wat en breng ze verder om zelf de volgende stap te kunnen maken. Uit een volgend bericht van TS zal naar voren komen of mijn advies aanspreekt of dat hij echt eerst zijn matrix wil besturen. Dan kan jou aanvulling nog eens van onschatbare waarde zijn! :)

Kwaliteit boven kwantiteit
Arco

Special Member

een getal ophoogt modulus 36

Dat gaat mis als je 255 bereikt... ;)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
KGE

Golden Member

Op 4 februari 2023 17:29:18 schreef Arco:
[...]
Dat gaat mis als je 255 bereikt... ;)

The future is > 8 bit :+

Op 4 februari 2023 17:29:18 schreef Arco:
[...ophogen modulus 36]
Dat gaat mis als je 255 bereikt... ;)

Ik denk dat bedoeld wordt:

code:


  g = g + 1;
  if (g >= 36) g = 0;
  if (g > 26) ch = '0' + g-26;
  else        ch = 'A' + g;

en dan vooral het eerste deel als "ophogen modulus 36". Hoe ga je dan 255 bereiken?

Maar goed. Jullie snappen kennelijk wat er in de vraag bedoeld wordt, ik niet.
Ik lees het als:

code:


   if (knop1) output_on_ledmatrix ("A..Z, 0..9");
   if (knop2) output_on_ledmatrix ("A..Z, 0..9");
   if (knop3) output_on_ledmatrix ("A..Z, 0..9");
   if (knop4) kolom++;

maar hoe dat iets zinnigs doet is me een raadsel, dus ik snap niet goed wat er bedoeld wordt.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Schimanski

Golden Member

...dus ik snap niet goed wat er bedoeld wordt.

Zoals ik het begrepen heb uit de startpost

- 4 kolommen waarin per kolom A-Z en 0-9 moet kunnen verschijnen.
- per kolom een drukknop om steeds volgende karakter te tonen.

één druk knop en een 4-standen schakelaar om kolom te kiezen zou dus ook werken.

Het gaat dus vooral om de routine om de karakters A-Z en 0-9 te maken. Ik verwacht dat LED panel wordt aangestuurd met schuifregisters. Of deze al in het panel zitten, of dat het alleen de LED's bevat is niet duidelijk.

What, me worry? // Radiozendamateur - PA2HGJ // Stuff is the junk you keep -- Junk is the stuff you throw away // Tinkeo Ergo Sum