ADVERTISING PANEL V1
Many times we have seen advertising lighting signs of different colors or images with texts sliding from left to right or vice versa, mostly in shopping centers or businesses, and we wonder how expensive it is to have one. But here we will learn how to make an expandable advertising panel (8x40) through the ATMEGA328P-AU(SMD) microcontroller.
Supplies
GERBER DEL PCB
https://mega.nz/file/Kd40GBCa#hh5WNz4eHy24ywPyZN9Gq8O_wNC7hQWsYoROIYh5yrU
DATASHEET ATMEGA328P-AU
https://mega.nz/file/CM5imBTb#XwQ2-X6fQGMp3nv5a_pfC13LZuHpoJuD1Lt_-7jMom8
DATASHEET CH340C
https://mega.nz/file/XBgAGJQK#qQgzdaxvzKvIpuA2bXqwoNivkQ017ndzww7F2CLIXHc
DATASHEET MAX7219CNG
https://mega.nz/file/6ZwyiLyL#1NVYfOsd7tRC3arU-hVszt4Vbili4ojUbbTBU0zxqwM
DATASHEET 7805 SMD
https://mega.nz/file/aMo03ZIB#rrRcrYjqTRfAxjCnJBQ62hXYYR4ltB39aGpndoEJwjo
Module MAX7219
MAX7219 MODULE
Our project is based on the integrated MAX7219CNG is an integrated to control 8x8 matrices, for our project we will use this module as a reference to be able to assemble 5 matrices in a single pcb and with 5mm leds. Next we will see the characteristics of this module:
• Serial control interface: with only 3 pins we can control an entire matrix of LEDs
• Simple external circuit – requires few external components
• Cascading: Multiple MAX7219s can be cascaded. In this way you can control several LED arrays using only 3 pins of the Arduino board.
• Low power mode: can consume only 120 uA.
The matrix of our project is 5 max7219 modules connected in cascade as we will see below:
CODE
In our case there are 5 max7219 connected in cascade and we only control it with 3 DIN-CS-CLOCK pins.
Now we will see the test code to upload our program, We will use the arduino IDE, for this we must know that we need the MAX7219 library. This library is very good and will allow us to move the text from one side to another, for this we must include it in the Arduino libraries. Next we will see the code:
/* Matriz de Desplazamiento LED 8x8 Usando Arduino UNO y el Controlador MAX7219 Debe instalar la libreria MaxMatrix para que funcione el programa Libreria: MaxMatrix Autor: Marcelo Moraes (Brazil) Por: http://elprofegarcia.com/ Tienda: http://dinastiatecnologica.com/ Conexiones del Arduino al Modulo MAX7219: ARDUINIO MAX7219 10 CLK 9 CS 8 DIN GND GND 5V VCC Conexion de la cascada de MAX7219(1) al MAX7219(2) MAX7219(1) MAX7219(2) CLK CLK CS CS DOUT DIN GND GND VCC VCC La cascada se hace conectano de los pines Superiores a los inferiores del modulo MAX7219 y los modulos se instalan de derecha a izquierda */ #include <MaxMatrix.h> #include <avr/pgmspace.h> PROGMEM unsigned char const CH[] = { 3, 8, B00000000, B00000000, B00000000, B00000000, B00000000, // space 1, 8, B01011111, B00000000, B00000000, B00000000, B00000000, // ! 3, 8, B00000011, B00000000, B00000011, B00000000, B00000000, // " 5, 8, B00010100, B00111110, B00010100, B00111110, B00010100, // # 4, 8, B00100100, B01101010, B00101011, B00010010, B00000000, // $ 5, 8, B01100011, B00010011, B00001000, B01100100, B01100011, // % 5, 8, B00110110, B01001001, B01010110, B00100000, B01010000, // & 1, 8, B00000011, B00000000, B00000000, B00000000, B00000000, // ' 3, 8, B00011100, B00100010, B01000001, B00000000, B00000000, // ( 3, 8, B01000001, B00100010, B00011100, B00000000, B00000000, // ) 5, 8, B00101000, B00011000, B00001110, B00011000, B00101000, // * 5, 8, B00001000, B00001000, B00111110, B00001000, B00001000, // + 2, 8, B10110000, B01110000, B00000000, B00000000, B00000000, // , 4, 8, B00001000, B00001000, B00001000, B00001000, B00000000, // - 2, 8, B01100000, B01100000, B00000000, B00000000, B00000000, // . 4, 8, B01100000, B00011000, B00000110, B00000001, B00000000, // / 4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // 0 3, 8, B01000010, B01111111, B01000000, B00000000, B00000000, // 1 4, 8, B01100010, B01010001, B01001001, B01000110, B00000000, // 2 4, 8, B00100010, B01000001, B01001001, B00110110, B00000000, // 3 4, 8, B00011000, B00010100, B00010010, B01111111, B00000000, // 4 4, 8, B00100111, B01000101, B01000101, B00111001, B00000000, // 5 4, 8, B00111110, B01001001, B01001001, B00110000, B00000000, // 6 4, 8, B01100001, B00010001, B00001001, B00000111, B00000000, // 7 4, 8, B00110110, B01001001, B01001001, B00110110, B00000000, // 8 4, 8, B00000110, B01001001, B01001001, B00111110, B00000000, // 9 2, 8, B01010000, B00000000, B00000000, B00000000, B00000000, // : 2, 8, B10000000, B01010000, B00000000, B00000000, B00000000, // ; 3, 8, B00010000, B00101000, B01000100, B00000000, B00000000, // < 3, 8, B00010100, B00010100, B00010100, B00000000, B00000000, // = 3, 8, B01000100, B00101000, B00010000, B00000000, B00000000, // > 4, 8, B00000010, B01011001, B00001001, B00000110, B00000000, // ? 5, 8, B00111110, B01001001, B01010101, B01011101, B00001110, // @ 4, 8, B01111110, B00010001, B00010001, B01111110, B00000000, // A 4, 8, B01111111, B01001001, B01001001, B00110110, B00000000, // B 4, 8, B00111110, B01000001, B01000001, B00100010, B00000000, // C 4, 8, B01111111, B01000001, B01000001, B00111110, B00000000, // D 4, 8, B01111111, B01001001, B01001001, B01000001, B00000000, // E 4, 8, B01111111, B00001001, B00001001, B00000001, B00000000, // F 4, 8, B00111110, B01000001, B01001001, B01111010, B00000000, // G 4, 8, B01111111, B00001000, B00001000, B01111111, B00000000, // H 3, 8, B01000001, B01111111, B01000001, B00000000, B00000000, // I 4, 8, B00110000, B01000000, B01000001, B00111111, B00000000, // J 4, 8, B01111111, B00001000, B00010100, B01100011, B00000000, // K 4, 8, B01111111, B01000000, B01000000, B01000000, B00000000, // L 5, 8, B01111111, B00000010, B00001100, B00000010, B01111111, // M 5, 8, B01111111, B00000100, B00001000, B00010000, B01111111, // N 4, 8, B00111110, B01000001, B01000001, B00111110, B00000000, // O 4, 8, B01111111, B00001001, B00001001, B00000110, B00000000, // P 4, 8, B00111110, B01000001, B01000001, B10111110, B00000000, // Q 4, 8, B01111111, B00001001, B00001001, B01110110, B00000000, // R 4, 8, B01000110, B01001001, B01001001, B00110010, B00000000, // S 5, 8, B00000001, B00000001, B01111111, B00000001, B00000001, // T 4, 8, B00111111, B01000000, B01000000, B00111111, B00000000, // U 5, 8, B00001111, B00110000, B01000000, B00110000, B00001111, // V 5, 8, B00111111, B01000000, B00111000, B01000000, B00111111, // W 5, 8, B01100011, B00010100, B00001000, B00010100, B01100011, // X 5, 8, B00000111, B00001000, B01110000, B00001000, B00000111, // Y 4, 8, B01100001, B01010001, B01001001, B01000111, B00000000, // Z 2, 8, B01111111, B01000001, B00000000, B00000000, B00000000, // [ 4, 8, B00000001, B00000110, B00011000, B01100000, B00000000, // \ backslash 2, 8, B01000001, B01111111, B00000000, B00000000, B00000000, // ] 3, 8, B00000010, B00000001, B00000010, B00000000, B00000000, // hat 4, 8, B01000000, B01000000, B01000000, B01000000, B00000000, // _ 2, 8, B00000001, B00000010, B00000000, B00000000, B00000000, // ` 4, 8, B00100000, B01010100, B01010100, B01111000, B00000000, // a 4, 8, B01111111, B01000100, B01000100, B00111000, B00000000, // b 4, 8, B00111000, B01000100, B01000100, B00101000, B00000000, // c 4, 8, B00111000, B01000100, B01000100, B01111111, B00000000, // d 4, 8, B00111000, B01010100, B01010100, B00011000, B00000000, // e 3, 8, B00000100, B01111110, B00000101, B00000000, B00000000, // f 4, 8, B10011000, B10100100, B10100100, B01111000, B00000000, // g 4, 8, B01111111, B00000100, B00000100, B01111000, B00000000, // h 3, 8, B01000100, B01111101, B01000000, B00000000, B00000000, // i 4, 8, B01000000, B10000000, B10000100, B01111101, B00000000, // j 4, 8, B01111111, B00010000, B00101000, B01000100, B00000000, // k 3, 8, B01000001, B01111111, B01000000, B00000000, B00000000, // l 5, 8, B01111100, B00000100, B01111100, B00000100, B01111000, // m 4, 8, B01111100, B00000100, B00000100, B01111000, B00000000, // n 4, 8, B00111000, B01000100, B01000100, B00111000, B00000000, // o 4, 8, B11111100, B00100100, B00100100, B00011000, B00000000, // p 4, 8, B00011000, B00100100, B00100100, B11111100, B00000000, // q 4, 8, B01111100, B00001000, B00000100, B00000100, B00000000, // r 4, 8, B01001000, B01010100, B01010100, B00100100, B00000000, // s 3, 8, B00000100, B00111111, B01000100, B00000000, B00000000, // t 4, 8, B00111100, B01000000, B01000000, B01111100, B00000000, // u 5, 8, B00011100, B00100000, B01000000, B00100000, B00011100, // v 5, 8, B00111100, B01000000, B00111100, B01000000, B00111100, // w 5, 8, B01000100, B00101000, B00010000, B00101000, B01000100, // x 4, 8, B10011100, B10100000, B10100000, B01111100, B00000000, // y 3, 8, B01100100, B01010100, B01001100, B00000000, B00000000, // z 3, 8, B00001000, B00110110, B01000001, B00000000, B00000000, // { 1, 8, B01111111, B00000000, B00000000, B00000000, B00000000, // | 3, 8, B01000001, B00110110, B00001000, B00000000, B00000000, // } 4, 8, B00001000, B00000100, B00001000, B00000100, B00000000, // ~ }; int data = 8; // DIN pin del modulo MAX7219 int load = 9; // CS pin del modulo MAX7219 int clock = 10; // CLK pin del modulo MAX7219 int maxInUse = 5; //Cambie este valor dependiendo del numero de matrices que use MaxMatrix m(data, load, clock, maxInUse); // Define el modulo byte buffer[10]; char mensaje1[] = " Electronica ABC proyectos y circuitos"; //Escriba el mensaje a desplegar char mensaje2[] = " Patrocinado por JLCPCB 5PCBS A $2 https://jlcpcb.com/RAV"; void setup(){ pinMode(8,OUTPUT); //Conexion a DIN pinMode(9,OUTPUT); //Conexion a CS pinMode(10,OUTPUT); //Conexion a CLK m.init(); // inicializa el modulo m.setIntensity(8); // intencidad de los puntos de la matriz, entre 1-5 Serial.begin(9600); // inicializa el puerto serial } void loop(){ byte c; // Lee el mensaje que llega por el puerto serial while (Serial.available() > 0){ byte c = Serial.read(); Serial.println(c, DEC); printCharWithShift(c, 100); } delay(100); // Tiempo de inicio de un nuevo Ciclo de mensajes m.shiftLeft(false, true); // Despliega los mensajes almacenados en las variables printStringWithShift(mensaje1, 100); // El ultimo termino se usa para la velocidad del mensaje printStringWithShift(mensaje2, 100); } void printCharWithShift(char c, int shift_speed){ // Imprime caracteres if (c < 32) return; c -= 32; memcpy_P(buffer, CH + 7*c, 7); m.writeSprite(maxInUse*8, 0, buffer); m.setColumn(maxInUse*8 + buffer[0], 0); for (int i=0; i<buffer[0]+1; i++) { delay(shift_speed); m.shiftLeft(false, false); } } void printStringWithShift(char* s, int shift_speed){ // Imprime cadena de caracteres while (*s != 0){ printCharWithShift(*s, shift_speed); s++; } } void printString(char* s) // Imprime cadena { int col = 0; while (*s != 0) { if (*s < 32) continue; char c = *s - 32; memcpy_P(buffer, CH + 7*c, 7); m.writeSprite(col, 0, buffer); m.setColumn(col + buffer[0], 0); col += buffer[0] + 1; s++; }
In this project we use the following electronic components:
• 320 leds 5mm
• 5 MAX7219CNG ICs
• 1 IC CH340C
• 1 regulator 7805
• 2 leds 3MM
• 5 electrolyte capacitors 10UF16V
• 2 electrolyte capacitors 100UF16V
• 1 IC ATMEGA328P-AU(SMD)
• 5 resistors 1206 OF 1K
• 1 button
• 1 crystal 16MHZ
• 2 capacitors 22PF
• 1 D-TYPE connector
• 1 DC JACK
• 5 capacitors 104
• 5 resistors 1/4W 1K
• 10 resistors 1/4W 100 ohm
• 5 resistors 1/4W 220 ohm
• 2 capacitors 100nf smd 1206
JLCPCB
This project is thanks to JLCPCB professional PCB manufacturers No. 1 worldwide
Get your pcbs at only $2 for 5pcbs of 100mm x 100mm
we thank JLCPCB for the professional pcbs you can purchase
5 pcbs a $ 2
order your pcb here:
Gerber:
https://mega.nz/file/Kd40GBCa#hh5WNz4eHy24ywPyZN9Gq8O_wNC7hQWsYoROIYh5yrU