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-2024 
*/

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



Categorie menu

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