This project is about making 8x8 LED metrix display with arduino. The base of this project is the 8x8 LED matrix.
In this project you can find how to display texts with scrolling on LED metrix.
Connect the wires as follows
VCC --------- Arduino 5v
GND --------- GND
DIN --------- Pin No 11
CS --------- Pin No 10
CLK --------- Pin No 13
When the wiring part is completed, you have to download the following arduino libraries.
01. MD_Parola
02.MD_MAX72XX
You can download those libraries from the following link.
Having added those libraries you can upload the code to the project.
The code is given below
// Use the Parola library to scroll text on the display // // Demonstrates the use of the scrolling function to display text received // from the serial interface // // User can enter text on the serial monitor and this will display as a // scrolling message on the display. // Speed for the display is controlled by a pot on SPEED_IN analog in. // Scrolling direction is controlled by a switch on DIRECTION_SET digital in. // Invert ON/OFF is set by a switch on INVERT_SET digital in. // // UISwitch library can be found at https://github.com/MajicDesigns/MD_UISwitch // MD_MAX72XX library can be found at https://github.com/MajicDesigns/MD_MAX72XX // #include//Download this library #include //Download this Library #include // set to 1 if we are implementing the user interface pot, switch, etc #define USE_UI_CONTROL 0 #if USE_UI_CONTROL #include #endif // Turn on debug statements to the serial output #define DEBUG 0 #if DEBUG #define PRINT(s, x) { Serial.print(F(s)); Serial.print(x); } #define PRINTS(x) Serial.print(F(x)) #define PRINTX(x) Serial.println(x, HEX) #else #define PRINT(s, x) #define PRINTS(x) #define PRINTX(x) #endif // Define the number of devices we have in the chain and the hardware interface // NOTE: These pin numbers will probably not work with your hardware and may // need to be adapted #define HARDWARE_TYPE MD_MAX72XX::FC16_HW #define MAX_DEVICES 5 #define CLK_PIN 13 #define DATA_PIN 11 #define CS_PIN 10 String str; // HARDWARE SPI MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); // SOFTWARE SPI //MD_Parola P = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES); // Scrolling parameters #if USE_UI_CONTROL const uint8_t SPEED_IN = A5; const uint8_t DIRECTION_SET = 8; // change the effect const uint8_t INVERT_SET = 9; // change the invert const uint8_t SPEED_DEADBAND = 5; #endif // USE_UI_CONTROL uint8_t scrollSpeed = 50; // Running Speed textEffect_t scrollEffect = PA_SCROLL_LEFT; textPosition_t scrollAlign = PA_LEFT; uint16_t scrollPause = 75; // in milliseconds // Change this amount to delay to start next round :-) // Global message buffers shared by Serial and Scrolling functions #define BUF_SIZE 50 char curMessage[BUF_SIZE] = { "Welcome" }; char newMessage[BUF_SIZE] = {"SETNFIX™"}; //Type the word you want to display on LED matrix bool newMessageAvailable = true; #if USE_UI_CONTROL MD_UISwitch_Digital uiDirection(DIRECTION_SET); MD_UISwitch_Digital uiInvert(INVERT_SET); void doUI(void) { // set the speed if it has changed { int16_t speed = map(analogRead(SPEED_IN), 0, 1023, 10, 150); if ((speed >= ((int16_t)P.getSpeed() + SPEED_DEADBAND)) || (speed <= ((int16_t)P.getSpeed() - SPEED_DEADBAND))) { P.setSpeed(speed); scrollSpeed = speed; PRINT("\nChanged speed to ", P.getSpeed()); } } if (uiDirection.read() == MD_UISwitch::KEY_PRESS) // SCROLL DIRECTION { PRINTS("\nChanging scroll direction"); scrollEffect = (scrollEffect == PA_SCROLL_LEFT ? PA_SCROLL_RIGHT : PA_SCROLL_LEFT); P.setTextEffect(scrollEffect, scrollEffect); P.displayClear(); P.displayReset(); } if (uiInvert.read() == MD_UISwitch::KEY_PRESS) // INVERT MODE { PRINTS("\nChanging invert mode"); P.setInvert(!P.getInvert()); } } #endif // USE_UI_CONTROL void readSerial(void) { static char *cp = newMessage; while (Serial.available()) { *cp = (char)Serial.read(); if ((*cp == '\n') || (cp - newMessage >= BUF_SIZE-2)) // end of message character or full buffer { *cp = '\0'; // end the string // restart the index for next filling spree and flag we have a message waiting cp = newMessage; newMessageAvailable = true; } else // move char pointer to next position cp++; } } void setup() { Serial.begin(57600); Serial.print("\n[Parola Scrolling Display]\nType a message for the scrolling display\nEnd message line with a newline"); #if USE_UI_CONTROL uiDirection.begin(); uiInvert.begin(); pinMode(SPEED_IN, INPUT); doUI(); #endif // USE_UI_CONTROL P.begin(); P.displayText(curMessage, scrollAlign, scrollSpeed, scrollPause, scrollEffect, scrollEffect); //Testing purpose only :-) } void loop() { #if USE_UI_CONTROL doUI(); #endif // USE_UI_CONTROL if (P.displayAnimate()) { if (newMessageAvailable) { strcpy(curMessage, newMessage); newMessageAvailable = false; } P.displayReset(); } readSerial(); }
0 comments: