PUNTHOOFT
ArduinoLooptekst
De basis van dit project is de 8x8 LED Matrix uit dit project.
In dit project gaan we de LED Matrix gebruiken om letters op het scherm te zetten. We bouwen een tekst en lopen dan door teken voor teken door de tekst.
ArduinoBreadboard
Zie beschrijving in het project 8x8 LED Matrix
ArduinoSource code
/* 8x8 segment LED, Display characters from text (C) copyright www.punthooft.nl 2019-2023 */ // Define the pins for the rows #define ROW_1 2 #define ROW_2 3 #define ROW_3 4 #define ROW_4 5 #define ROW_5 6 #define ROW_6 7 #define ROW_7 8 #define ROW_8 9 // Define the pins for the columns #define COL_1 10 #define COL_2 11 #define COL_3 12 #define COL_4 13 #define COL_5 A0 #define COL_6 A1 #define COL_7 A2 #define COL_8 A3 // Bundle the rows and cols in arrays const byte rows[] = { ROW_1, ROW_2, ROW_3, ROW_4, ROW_5, ROW_6, ROW_7, ROW_8 }; const byte cols[] = { COL_1,COL_2, COL_3, COL_4, COL_5, COL_6, COL_7, COL_8 }; // The alphabet const byte alphabet[][8] = { {B00000000,B00000000,B00111000,B00000100,B00111100,B01000100,B00111100,B00000000}, {B01000000,B01000000,B01000000,B01111000,B01000100,B01000100,B01111000,B00000000}, {B00000000,B00000000,B00000000,B00111100,B01000000,B01000000,B00111100,B00000000}, {B00000100,B00000100,B00000100,B00111100,B01000100,B01000100,B00111100,B00000000}, {B00000000,B00000000,B00111100,B01000010,B01111100,B01000000,B00111100,B00000000}, {B00111000,B01000100,B01000000,B01000000,B11110000,B01000000,B01000000,B00000000}, {B00000000,B00000000,B00000000,B01111100,B01000100,B01111100,B00000100,B01111100}, {B01000000,B01000000,B01000000,B01111000,B01000100,B01000100,B01000100,B00000000}, {B00000000,B00100000,B00000000,B00100000,B00100000,B00100000,B00100000,B00000000}, {B00000000,B00000100,B00000000,B00000100,B00000100,B00000100,B01000100,B00111000}, {B01000000,B01000000,B01000100,B01001000,B01110000,B01001000,B01000100,B00000000}, {B01000000,B01000000,B01000000,B01000000,B01000000,B01000000,B01111100,B00000000}, {B00000000,B00000000,B00000000,B01101000,B01010100,B01010100,B01010100,B00000000}, {B00000000,B00000000,B00000000,B01111000,B01000100,B01000100,B01000100,B00000000}, {B00000000,B00000000,B00000000,B00111000,B01000100,B01000100,B00111000,B00000000}, {B00000000,B00000000,B01111000,B01000100,B01000100,B01111000,B01000000,B01000000}, {B00000000,B00000000,B00000000,B00111000,B01000100,B01000100,B00111100,B00000010}, {B00000000,B00000000,B01111000,B01000100,B01111100,B01001000,B01000100,B00000000}, {B00000000,B00000000,B00111100,B01000000,B01111100,B00000100,B01111000,B00000000}, {B00000000,B01000000,B01000000,B01110000,B01000000,B01000100,B00111000,B00000000}, {B00000000,B00000000,B00000000,B01000100,B01000100,B01000100,B00111100,B00000000}, {B00000000,B00000000,B00000000,B01000100,B01000100,B00101000,B00010000,B00000000}, {B00000000,B00000000,B00000000,B10010010,B10010010,B01010100,B00101000,B00000000}, {B00000000,B00000000,B01000100,B00101000,B00010000,B00101000,B01000100,B00000000}, {B00000000,B00000000,B01000100,B00101000,B00010000,B00010000,B00010000,B00000000}, {B00000000,B00000000,B01111100,B00001000,B00010000,B00100000,B01111100,B00000000}, {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000}, {B10000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000}, {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00100000,B00000000} }; // Variables int delayCounter; // Speed int digit; // Current character bool highlight; // Set normal or inverted mode String text; // The text to be displayed int i; // General purpose counter // Setup function runs once when powerup the board and on reset void setup() { // Set digital pins to OUTPUT for (i = 2; i <= 13; i++) { pinMode(i, OUTPUT); } // Set analog pins to OUTPUT pinMode(A0, OUTPUT); pinMode(A1, OUTPUT); pinMode(A2, OUTPUT); pinMode(A3, OUTPUT); // Initialise delayCounter=0; digit = text.length(); // Configure settings highlight = false; text = "WELKOM[OP[]HOOFT"; // SPACE = [ DOT = ] } // The loop function runs over and over again forever void loop() { // Mechanism to slow down everything delayCounter++; delay(1); // When slow enough proceed if (delayCounter>100) { delayCounter=0; // Continue with next character digit++; // On end text start all over if (digit >= text.length() ) { digit=0; } } // Turn off LEDs or only display LEDs if (highlight) { drawScreenHighLight(alphabet[text[digit]-65]); } else { drawScreenLowLight(alphabet[text[digit]-65]); } } // Function for high light view void drawScreenHighLight(byte buffer[]) { // For each row for (int row=0; row<8;row++) { digitalWrite(rows[row], HIGH); //initiate whole row // For each column for (int col=0; col<8; col++) { // Positive when row&col are set digitalWrite(cols[col], (buffer[row] >> col) & 0x01); // Delay in refres of matrix delayMicroseconds(100); // Reset column digitalWrite(cols[col], 1); } // Reset rows digitalWrite(rows[row], LOW); } } // Function for low light view void drawScreenLowLight(byte buffer[]) { // For each row for (int row=0; row<8;row++) { digitalWrite(rows[row], HIGH); //initiate whole row // For each column for (int col=0; col<8; col++) { // Positive when row&col are set, so revert the value digitalWrite(cols[col], !((buffer[row] >> col) & 0x01)); // Delay in refres of matrix delayMicroseconds(100); // Reset column digitalWrite(cols[col], 1); } // Reset rows digitalWrite(rows[row], LOW); } }
ArduinoOpmerkingen
In de array staan de letters A tot en met Z. Plus ook een spatie, een punt en een 'puntje linksboven' character.
In de computerwereld gebruikt met de ASCII tabel om het alfabet te coderen. De letter A heeft daar de code 65. Vandaar dat is hierboven het magische getal 65 gebruik. Om vanaf een getal naar de letter te gaan en andersom.

Copyright 2023 www.punthooft.nl
We do not collect cookies for advertisement. Your data is never send to third parties.