Inhoudsopgave:
Video: Aangepaste karaktergenerator (Adafruit HT16k33 Matrix): 3 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Speciale karakters printen op LCD's en Led Matrices is erg leuk. De procedure voor het afdrukken van speciale tekens of aangepaste tekens is het genereren van een array met binaire waarden voor elke rij en kolom. Het kan hectisch zijn om de juiste code voor elk aangepast teken te vinden, daarom zal dit project de code automatiseren en genereren voor een 8x8 led-matrix en het aangepaste teken ook afdrukken op Adafruit HT16k33 8x8 Bicolor Matrix.
Adafruit HT16k33, een 1,2'' 8x8 Bicolor Led Matrix communiceert met Arduino via een I2C-communicatieprotocol
Volgens Adafruit: "Deze versie van de LED-rugzak is ontworpen voor de 1,2" 8x8-matrices. Ze meten slechts 1,2"x1,2", dus het is zonde om een enorme reeks chips te gebruiken om ze te besturen. Deze rugzak lost de ergernis van het gebruik van 16 pinnen of een heleboel chips op door een I2C-matrixcontroller met constante stroom netjes op de achterkant van de PCB te plaatsen. De controllerchip zorgt voor alles en trekt alle 64 LED's op de achtergrond. Het enige dat u hoeft te doen, is er gegevens naar toe te schrijven met behulp van de 2-pins I2C-interface. Er zijn twee adresselectiepinnen, dus je kunt een van de 8 adressen selecteren om er maximaal 8 op een enkele 2-pins I2C-bus te bedienen (evenals welke andere I2C-chips of -sensoren je ook wilt). De driverchip kan het hele display 'dimmen' van 1/16 helderheid tot volledige helderheid in stappen van 1/16. Het kan geen individuele LED's dimmen, alleen het hele scherm tegelijk."
In deze instructable zal ik je uitleggen hoe je de code voor elk aangepast personage in realtime kunt krijgen en dat personage op Led Matrix kunt afdrukken.
Stap 1: Componenten
Dit instructable is een basisproject op Adafruit HT16k33 Matrix. Jij hebt nodig:
- Adafruit HT16k33 1.2'' x 1.2'' 8x8 Bicolor Led Matrix.
- Arduino (elke variant maar Uno heeft de voorkeur).
- Breadboard
- Stroomvoorziening
Stap 2: Schema
Bedrading van de Adafruit HT16k33 Led-matrix is heel eenvoudig, omdat we de klok en de datapin moeten aansluiten zoals we gewoonlijk doen voor I2C-apparaten. Verbindingen zullen zijn als:
- SCL (klokpen van Matrix) aangesloten op A5 (klokpen van Arduino Uno. Raadpleeg datasheet voor andere varianten van Arduino)
- SDA (Data pin of Matrix) aangesloten op A4. (Zie datasheet voor andere varianten van Arduino)
- VCC aangesloten op 5V.
- GND aangesloten op 0V.
U kunt ook het schema in de afbeelding raadplegen.
Stap 3: Coderen
Arduino-code
Ten eerste zullen we alle benodigde bibliotheken opnemen.
- Wire.h: - Voor I2C-communicatie
- Adafruit_LedRugzak
- Adafruit_GFX
Al deze bibliotheken zijn beschikbaar in Arduino IDE zelf. Je hoeft ze alleen maar te installeren vanuit Bibliotheekbeheer. Sketch>>Bibliotheek opnemen >> Bibliotheken beheren
Instelfunctie ()
Een unsigned integer 8-bit array instellen op strore8 binaire waarden voor 8 rijen, van 8 bits elk (8 kolommen). Stel het adres in voor I2C-communicatie.
Loop-functie ()
Omdat we het teken moeten afdrukken, hebben we de code voor het teken in realtime nodig. De handigste methode is om de code serieel te verzenden en Arduino zal de seriële gegevens lezen en het teken dienovereenkomstig afdrukken. Het serieel verzenden van een array kan een hectische klus zijn, daarom kunnen we een string verzenden met alle 8 codes (8 bits elk) gescheiden door komma's.
Seriële string lezen:
if (Serial.available()>0) { data=Serial.readStringUntil('\n'); Serial.println(gegevens); }
Na het lezen van de tekst, moeten we deze string decoderen en de binaire waarden terugkrijgen. Zoals we weten, zal het formaat van de invoerreeks altijd hetzelfde zijn. We kunnen het coderen om substrings te vinden en de strings om te zetten naar hun decimale equivalente waarden. Vervolgens geven we de gegenereerde decimale array (uint8_t) door om het teken op de matrix af te drukken.
String van 8 bits converteren naar decimaal:
int val(String str){ int v=0; for (int i=0;i<8;i++) { if (str=='1') { v=v+power(2, (7-i)); } } retour v; }
Voor het evalueren van decimale equivalenten met behulp van de machtsfunctie (pow ()), moet u omgaan met dubbele typewaarden en daarom kunnen we onze eigen machtsfunctie schrijven als:
int power(int basis, int exponent){ int c=1; for (int i=0;i { c=c*base; } return c; }
Nu zullen we eindelijk de code schrijven om het teken af te drukken met behulp van de gegenereerde array van 8 decimale waarden (één voor elke rij).
void print_emoji(uint8_t emoji, String kleur){ matrix.clear(); if (kleur = = "rood") { matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else { matrix.drawBitmap(0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay(); vertraging (500); }
U zult deze code gemakkelijk begrijpen, aangezien we eerst de matrix wissen en vervolgens het teken weergeven met behulp van emoji-array met de functie matrix.drawBitmap(). Vergeet niet om "matrix.writeDisplay()" te schrijven na alle opmaak, aangezien deze functie alleen alle opmaak die tot nu toe op matrix is gedaan, weergeeft.
Nu kunt u de string met alle codewaarden verzenden en Arduino zal het teken op de matrix afdrukken. U kunt de Arduino-code hieronder downloaden. Voor experimentele doeleinden kun je schrijven:
B00111100, B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100
deze string in Serial Monitor en kan het teken op de matrix zien.
Nu moeten we de seriële gegevens automatisch verzenden vanuit een software wanneer we op de knop "Afdrukken" drukken. Om dit te automatiseren, zullen we een demo 8x8-matrix maken en we zullen de gebruiker de mogelijkheid bieden om te kiezen welke cellen moeten worden gekleurd en dan zal de software automatisch de code genereren en de gegevens serieel naar Arduino sturen in string-formaat. Voor de rest van mijn werk heb ik voor Processing gekozen. Tijdens de verwerking kunnen we met 64 knoppen (rechthoeken met ingedrukte functie) een matrix maken en aan het begin een bepaalde waarde en kleur toekennen (laat het de witte kleur zijn met waarde 0). Telkens wanneer de knop wordt ingedrukt, zullen we de kleur van de knop omzetten in zwart en de waarde instellen op 1. Als de gebruiker opnieuw op dezelfde knop drukt, verandert de waarde opnieuw in 0 en kleurt hij terug naar wit. Dit zal de gebruiker helpen om de code keer op keer gemakkelijk te wijzigen en kan gemakkelijk wijzigingen aanbrengen zonder de hele matrix opnieuw te wissen. Door op de knop "Afdrukken" te klikken, maken we een tekenreeks die lijkt op de tekenreeks die hierboven is weergegeven voor de demo. Vervolgens wordt de string naar de specifieke seriële poort gestuurd.
U kunt de verwerkingscode hieronder downloaden. Dit is mijn eerste code in verwerking. Suggesties voor de verbeterde manier van coderen worden zeer op prijs gesteld.
U kunt zien hoe de GUI eruit ziet en hoe het personage met het systeem wordt gemaakt. Het duurt nauwelijks seconden om hetzelfde personage op matrix te maken.
Je kunt de code en afbeeldingen van dit project downloaden van mijn GitHub Repository.
Aanbevolen:
Aan de slag met STM32f767zi Cube IDE en uw aangepaste schets uploaden: 3 stappen
Aan de slag met STM32f767zi Cube IDE en upload uw aangepaste schets: KOPEN (klik op de test om te kopen/bezoek de webpagina)STM32F767ZISONDERSTEUNDE SOFTWARE· STM32CUBE IDE· KEIL MDK ARM µVISION· EWARM IAR EMBEDDED WORKBENCH· ARDUINO-beschikbare IDE gebruikt om STM-microcontrollers te programmeren
HotKeys-toetsenbord met aangepaste profielen: 14 stappen (met afbeeldingen)
HotKeys-toetsenbord met aangepaste profielen: ik hoop dat je het goed doet te midden van deze pandemie. Wees veilig. Wees sterk. #COVID19Als industrieel ontwerper heb ik dagelijks toegang nodig tot meer dan 7-8 software, waaronder Solidworks, Photoshop, Illustrator, Keyshot, Indesign, enz
Bouw een draagbare bewegingstracker (BLE van Arduino naar een aangepaste Android Studio-app): 4 stappen
Bouw een draagbare bewegingstracker (BLE van Arduino tot een aangepaste Android Studio-app): Bluetooth Low Energy (BLE) is een vorm van Bluetooth-communicatie met laag vermogen. Draagbare apparaten, zoals de slimme kleding die ik help ontwerpen bij Predictive Wear, moeten het stroomverbruik waar mogelijk beperken om de levensduur van de batterij te verlengen, en regelmatig gebruik maken van BLE
Aangepaste functie toevoegen in Google Spreadsheets: 5 stappen
Aangepaste functie toevoegen in Google Spreadsheets: ik weet zeker dat u op een bepaald moment in uw leven spreadsheetsoftware zoals Microsoft Excel of Google Spreadsheets moest gebruiken. Ze zijn relatief eenvoudig en eenvoudig te gebruiken, maar ook zeer krachtig en gemakkelijk uitbreidbaar.Vandaag zullen we kijken naar Goo
Adafruit Feather NRF52 aangepaste bedieningselementen, geen codering vereist - Ajarnpa
Adafruit Feather NRF52 aangepaste bedieningselementen, geen codering vereist: update 23 april 2019 -- Voor datum/tijd-plots met alleen Arduino millis() zie Arduino Datum/tijd plotten/logging met Millis() en PfodApp De nieuwste gratis pfodDesigner V3.0.3610+ gegenereerd voltooi Arduino-schetsen om gegevens uit te zetten tegen datum/tijd u