El proyecto requiere de un Arduino (puede ser cualquiera, yo he implementado el UNO porque lo tenia aquí, pero puede ser cualquier otro) y matrices con controlador MAX7219, en mi caso he utilizado un modulo de 4 matrices interconectadas, pero es posible utilizar mas matrices o menos.
En este proyecto los mensajes podemos enviarlos por puerto serie del mismo arduino, pero podríamos emplear un modulo bluetooth serial, y de esta manera no necesitamos la PC conectada, solo un terminal bluetooth.
El programa utiliza la biblioteca de Adafruit GFX y la de MAX7219, debemos descargarlas, las dejare en mi sitio de GitHub para mayor facilidad.
Luego el resto viene por defecto en ArduinoIDE (como la de puerto SPI "Wire.h").
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/markruys/arduino-Max72xxPanel
El programa es el Siguiente:
- #include <SPI.h>
- #include <Adafruit_GFX.h>
- #include <Max72xxPanel.h>
- //Vcc - Vcc
- //Gnd - Gnd
- //Din - Mosi (Pin 11)
- //Cs - SS (Pin 10)
- //Clk - Sck (Pin 13)
- const int pinCS = 10;
- const int numberOfHorizontalDisplays = 8;
- const int numberOfVerticalDisplays = 1;
- Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);
- const int wait = 50; // Velocidad a la que realiza el scroll
- const int spacer = 1;
- const int width = 5 + spacer; // Ancho de la fuente a 5 pixeles
- void setup(){
- Serial.begin(9600);
- matrix.setIntensity(1); // Ajustar el brillo entre 0 y 15
- matrix.setPosition(0, 0, 0); // El primer display esta en <0, 0>
- matrix.setPosition(1, 1, 0); // El segundo display esta en <1, 0>
- matrix.setPosition(2, 2, 0); // El tercer display esta en <2, 0>
- matrix.setPosition(3, 3, 0); // El cuarto display esta en <3, 0>
- matrix.setPosition(4, 4, 0); // El quinto display esta en <4, 0>
- matrix.setPosition(5, 5, 0); // El sexto display esta en <5, 0>
- matrix.setPosition(6, 6, 0); // El séptimo display esta en <6, 0>
- matrix.setPosition(7, 7, 0); // El octavo display esta en <7, 0>
- matrix.setPosition(8, 8, 0); // El noveno display esta en <8, 0>
- matrix.setRotation(0, 1); // Posición del display
- matrix.setRotation(1, 1); // Posición del display
- matrix.setRotation(2, 1); // Posición del display
- matrix.setRotation(3, 1); // Posición del display
- matrix.setRotation(4, 1); // Posición del display
- matrix.setRotation(5, 1); // Posición del display
- matrix.setRotation(6, 1); // Posición del display
- matrix.setRotation(7, 1); // Posición del display
- matrix.setRotation(8, 1); // Posición del display
- }
- void loop(){
- String cadena = "";
- long int time = millis();
- while(Serial.available()){
- cadena += char(Serial.read());
- }
- for(int i = 0; i < width * cadena.length() + matrix.width() - 1 - spacer; i++){
- matrix.fillScreen(LOW);
- int letter = i / width;
- int x = (matrix.width() - 1) - i % width;
- int y = (matrix.height() - 8) / 2; // Centrar el texto
- while(x + width - spacer >= 0 && letter >= 0){
- if(letter < cadena.length()){
- matrix.drawChar(x, y, cadena[letter], HIGH, LOW, 1);
- }
- letter--;
- x -= width;
- }
- matrix.write(); // Muestra loscaracteres
- delay(wait);
- }
El Circuito es el Siguiente:
Conexiones:
- //Vcc - Vcc
- //Gnd - Gnd
- //Din - Mosi (Pin 11)
- //Cs - SS (Pin 10)
- //Clk - Sck (Pin 13)
¿Dónde fabricamos nuestros PCBs?
Nuestros PCBs los fabricamos con la empresa PCBWay, esta empresa nos permite realizar pequeñas cantidades como prototipos rápidos para nuestros desarrollos a medida.
También nos permite realizar grandes producciones para realizar proyectos comerciales.
Servicio de prototipo de PCB por tan solo $5 las 10 unidades.
Cada nuevo miembro recibirá un bono de $5, más servicio express de 24Hs o 48Hs.
Servicio de ensamblado de PCB por $88 más envió gratis en todo el mundo, más esténcil, más componentes.
Un servicio de calidad!
una pagina excelente.
ResponderBorrarun saludo gracias
No funciona.... se quedan los cuatro con todo encendido y no funciona
ResponderBorrartambién en mi caso
Borrarx3
BorrarA mi tampoco me funciona, estoy usando un arduino mega, ¿puede que los pines cambien?, no veo donde modificar el DIN y el CLK
ResponderBorrarpara mego se debe usar DIN 51 CLK 52 CS 53
Borrartampoco funciona para "mego se debe usar DIN 51 CLK 52 CS 53"
BorrarEste comentario ha sido eliminado por el autor.
ResponderBorrarhola no funciona, estoy usando MEGA2560
ResponderBorrarno funciona la aplicación estoy usando mega2560, haber si me das un consejos mi email: willyry@gmail.com ,gracias
ResponderBorrarEste proyecto es uno de los mas simples de llevar a cabo ya que no requiere de muchas conexiones y con solo cargar el firmware en el Arduino podremos controlar la Matriz de 8x32. consejoscomunales.net/cultura-chincha/
ResponderBorrarsi señora
BorrarNo funciona. Da error de compilación
ResponderBorrarExcelente el aporte, aparte que el vídeo muy bien explicado... Funciona al 100... Gacias...
ResponderBorrar