SM1628 en SM1628B — Arduino Driver Tutorial

SM1628 of SM1628B?

Beide varianten maken gebruik van dezelfde programmeerbenadering. De drie-draads interface, de displaycommando's en de RAM-layout van 14 bytes zijn identiek voor beide versies. Er is daarom geen aparte sketch of variantenselector nodig.

De belangrijkste hardwareverschillen zitten in de oscillator-aansluiting en de verbeterde bescherming van de B-variant. Let op: dezelfde driver betekent niet automatisch dezelfde bedrading van het paneel. Identificeer altijd eerst je connector en breng je display in kaart voordat je de referentietabel overneemt. Een verandering in de IC-suffix vereist geen nieuwe kaart, maar een ander paneel wel.

Overzicht van de tutorial

StapWat je leertResultaat
IntroductieSM1628 en SM1628BInzicht in variant-afhankelijkheden
1. AansluitenVoeding, GND, DATA, CLK en STBPaneel is verbonden met de Uno
2. Eerste testUploaden van een voorbeeld en resultaat controlerenCijfers tellen op de displayposities
3. MappingKolommen en individuele bits selecterenEigen digit-, segment- en symboolkaart
4. Geheugen & Commando'sNative vs swapped bedrading, frameconstructie en verzendingKeuze van de juiste bytes
5. Cijfers & EffectenTellen, carry-over, patronen en timingUitvoeren van display-demonstraties

Let op: De referentiekaart in deze tutorial is gebaseerd op een DVD-paneel met zeven numerieke cijfers en drie symboolgroepen. Dit is een voorbeeld en geen universele configuratie.

1. Het paneel aansluiten

Voor een referentiepaneel van +5V sluit je de volgende verbindingen aan (zorg dat de stroom uitgeschakeld is):

Arduino Uno / VoedingPaneelverbindingOpmerking
D7 (via 1 kΩ weerstand)DATA (DA of D)Signaalweerstand
D8 (via 1 kΩ weerstand)Clock (CLK of C)Signaalweerstand
D9 (via 1 kΩ weerstand)Strobe (STB of S)Signaalweerstand
GNDPanel GND en voeding GNDGemeenschappelijke aarde
Geschikte +5V voedingPanel +5V inputExterne voeding
Niet aangeslotenInfrared signal (IR of R)Ongebruikt

Belangrijke richtlijnen:

  • Volg de labels op het paneel, niet de posities van de connectoren of de kleuren van de draden.
  • Controleer altijd eerst de voedingsvereisten van een onbekend paneel.
  • Een aparte voeding moet een gemeenschappelijke aarde (GND) delen met de Uno; verbind nooit twee onafhankelijke +5V-bronnen met elkaar.
  • De 1 kΩ weerstanden zijn gebruikt in dit specifieke ontwerp en zijn geen universele level-converters.

In dit ontwerp wordt een externe +5V DC-voeding gebruikt met een condensator van 470 µF over de rails (positief naar +5V en negatief naar GND). De condensator is gespecificeerd op 35V; dit bepaalt niet de voedingsspanning.

Begin de tests met enkel het display aangesloten. De PanelDemo configureert D0–D13 als outputs; ManualMap herstelt D0 voor seriële input. Laat knoppen en andere randapparatuur losgekoppeld van de aangestuurde pinnen tijdens deze tests.

2. Cijfers uploaden en weergeven

Gebruik een Arduino Uno / ATmega328P op 16 MHz en de Arduino IDE. Er is geen externe Arduino-bibliotheek nodig. Download de repository en zorg dat de header-bestanden van elke sketch in dezelfde map staan als het .ino bestand.

Voor het referentiepaneel: open firmware/PanelDemo/PanelDemo.ino, selecteer de Uno en de juiste poort, en upload de code. Elk numeriek vakje telt van 0–9, beginnend aan de linkerkant. Elk cijfer is ongeveer 100 ms zichtbaar. Na de zeven posities wordt het display gewist en begint het proces opnieuw. Symboolgroepen blijven uit.

Mocht je een ander paneel hebben, gebruik dan eerst de diagnostiek in stap 3 voordat je het numerieke voorbeeld aanpast.

3. De kaart van je paneel bepalen

Upload firmware/ManualMap/ManualMap.ino. Open de Seriële Monitor op 9600 baud, met 'Newline' of 'Both NL & CR' geselecteerd.

Stuur de volgende commando's apart naar de monitor:

  • column 0 7
  • n

Stuur eerst column 0 7. Op het referentiepaneel licht hierdoor een '7' op in het meest linkse cijfervak. Gebruik vervolgens n om door de ruwe RAM-kolommen te gaan, of p om terug te gaan. Elk resultaat blijft verlicht zodat je het kunt noteren. Een reset of 'clear' annuleert de selectie.

De volgorde van de ruwe kolommen bevat ook symbolen en komt niet overeen met de volgorde van links naar rechts. Nadat je een kolom hebt geselecteerd, licht cijfer 8 alle zeven segmentrijen voor die kolom op.

Voor het referentiepaneel gebruiken de zeven numerieke posities de kolommen 0, 1, 7, 2, 3, 4, 5 (van links naar rechts). Volg de volledige mapping-procedure voordat je deze kaart kopieert naar een ander paneel.

4. Werking van de driver

Beide varianten gebruiken DATA, CLK en STB om commando's en display-bytes te ontvangen. De voorbeelden verzenden het minst significante bit eerst. De gebruikte commando's zijn:

ByteDoel
0x03Selecteer native 7-cijfer / 10-segment modus
0x40Selecteer RAM-schrijfacties met automatische adresincrement
0xC0Begin met schrijven bij display RAM-adres 0x00
0x80Zet het display uit
0x8FZet het display aan op de maximale helderheid

De IC heeft veertien display-RAM-bytes. Bij het referentiepaneel heeft de fabrikant de rollen van cijfer- en segmentverbindingen omgewisseld (common-anode arrangement) om tien groepen van zeven lampjes te krijgen. Zeven groepen zijn numerieke cijfers en drie zijn symbolen. De driver gebruikt nog steeds de native 7×10 modus.

In deze getransponeerde kaart neemt elke segmentrij een paar bytes in beslag. Om bijvoorbeeld een '7' te tekenen in ruwe kolom 0, begin je met veertien nul-bytes en zet je bit 0 in bytes 0, 2 en 4 (de bovenste, rechtsboven en rechtsonder balken).

De sender schrijft bij elke update een volledig frame van veertien bytes. De geheugengids bevat de adrestabel, de code voor het bouwen van frames en de transactiesequentie.

5. Cijfers en effecten besturen

Upload firmware/PanelShowcase/PanelShowcase.ino. Open de Seriële Monitor op 115200 baud, met 'Newline' of 'Both' geselecteerd.

Stuur één commando per regel:

CommandoVerwacht resultaat (referentiepaneel)
digitsEen '8' veegt door de numerieke posities
countAlle numerieke posities tellen tegelijk van 0–9
value 9995, then carryTelt omhoog via de carry naar 10000
barsBijbehorende segmentrijen lichten over de cijfers op
all / blinkHoudt alle groepen aan / laat ze knipperen
pace 250Zet de stapgrootte van effecten op 250 ms
stopMaakt het display leeg en annuleert het effect

Benodigdheden

  • Arduino Uno / ATmega328P op 16 MHz.
  • Geschikt SM1628 of SM1628B paneel.
  • Passende voeding voor het paneel.
  • Drie 1 kΩ signaalweerstanden.
  • Geen externe Arduino-bibliotheken vereist. (Node.js is alleen nodig voor geautomatiseerde ontwikkelaartests).

Overzicht van de sketches

SketchDoelSeriële Monitor
PanelDemoKlein numeriek voorbeeld; start hier voor het referentiepaneelNiet vereist
ManualMapInspecteren en in kaart brengen van een onbekend paneel9600 baud; Newline of Both
PanelShowcaseSelecteren van cijfers, tellen, carry en effecten115200 baud; Newline of Both

Technische opmerkingen: De gekozen Uno-pinnen zijn gewone GPIO; deze interface vereist geen hardware-SPI-pinnen. Deze voorbeelden schrijven naar het display-RAM; de key-scan leesfunctie en infrarooddecodering van de IC worden niet behandeld. De IR-pin van het paneel is ongebruikt.

Optionele toepassing: Snake

Zodra je het display kunt besturen, kun je het Snake-voorbeeld bouwen. Dit combineert de driver met een joystick, een START-knop en een actieve buzzer. De joystick-test en de game-sketch staan apart van het leerpad voor het display. PanelShowcase bevat ook een gescripte demonstratie van het spel.

De referentie-circuitgids bevat details over de externe voeding, polariteit van de condensator, joystick-weerstanden, het START-netwerk en de door transistor aangestuurde actieve buzzer, inclusief een aansluitschema.