Arduino Scrolling Text v2.0 – ¡Con dirección y control de velocidad! Deja un comentario

VISIÓN DE CONJUNTO

Hace bastante tiempo, hice un tutorial sobre cómo crear Desplazamiento de texto con una matriz LED MAX7219 y un Arduino.

Funcionó, pero la biblioteca que utilicé en ese momento era muy limitada y difícil de modificar la forma en que el texto se desplaza por múltiples módulos de matriz.

Así que decidí hacer este nuevo tutorial, pero esta vez usando una biblioteca más flexible que proporciona más opciones.

La biblioteca en cuestión es la Biblioteca ‘Parola’ de MajicDesigns .

En este tutorial usaré seis matrices LED MAX7219 unidas con un potenciómetro deslizante para controlar la dirección y la velocidad del texto desplazable en tiempo real.

CONEXIONES

Los módulos MAX7219 que estoy usando tienen dos juegos de cinco pines, IN y OUT, conectan pines IN del primer módulo al Arduino y luego conectan los pines OUT a los pines IN de otros módulos.

Los módulos de matriz MAX7219 se comunican utilizando el protocolo SPI, por lo que debemos utilizar pines específicos. Dado que estamos utilizando Arduino UNO para este tutorial, los pines SPI se encuentran en 10 (SS), 12 (MISO) y 13 (SCK).

Estos módulos por sí solos no requieren mucha corriente, aproximadamente 150mA, pero estamos usando seis de ellos en este tutorial, y cuando todos los Led están encendidos, la corriente sube a 900mA, entonces necesitamos usar una potencia externa de 5V suministro.

* nota: El UNO si está alimentado por USB puede suministrar hasta 500 mA, si lo alimenta con una toma de CC con una fuente de alimentación externa, puede suministrar hasta 1 amperio. Como 900mA es bastante cercano al límite, decidí alimentar el módulo Matrix con una fuente de alimentación externa de 5V 2A separada de la UNO, que utilicé con un simple cable USB de mi computadora.

El potenciómetro Slider tiene dos juegos de 3 pines, (OTA y OTB), ambos hacen lo mismo y puedes usar cualquiera de ellos.

Las conexiones son las siguientes:

Para el control deslizante:

5V y GND de UNO van a VCC y GND del conjunto OTA del control deslizante.

A0 de UNO se conecta a la OTA del control deslizante.

Para la matriz LED, estamos utilizando los pines IN del módulo más a la derecha:

El pin 10 de UNO está conectado al pin derecho de la matriz CLK.

El pin 12 está conectado al pin CS.

y el pin 13 está conectado al pin DOUT.

Después de eso, los pines OUT de un Matrix se conectan con puentes a los pines IN del siguiente módulo.

CONFIGURACIÓN BIBLIOTECA

La biblioteca de Parola como dependencia y requiere biblioteca adicional Biblioteca MD_MAX72xx Arduino

Esta biblioteca tiene soporte para muchos tipos diferentes o modelos de LED Matrix.

Por lo tanto, debe editar el archivo de la biblioteca para establecer la configuración correcta y seleccionar el Led Matrix que está utilizando.

Para obtener más información sobre qué archivo para editar en la biblioteca, eche un vistazo al video tutorial.

EL CÓDIGO

Para simplificar el código, en lugar de usar el Serial Monitor para ingresar el texto deseado que se mostrará en Led Matrix, ingresaremos el mensaje que se mostrará dentro del código en sí.

El valor del potenciómetro deslizante se usa para decidir la dirección y la velocidad del desplazamiento. Cuando se encuentra en el medio, el texto se desplazará lentamente, si lo movemos hacia la derecha o hacia la izquierda, el texto comenzará a desplazarse en esa dirección y cuanto más deslicemos, la velocidad aumentará.

La biblioteca de Parola tiene muchas más opciones con las que puedes experimentar, como desvanecerse, desplazarse hacia arriba y hacia abajo, así que te invito a echar un vistazo más en profundidad a todas las opciones disponibles si deseas experimentar más.

Como siempre, para obtener más información sobre el tutorial y la explicación del código, mire nuestro video tutorial.

#incluir 
// https://github.com/MajicDesigns/MD_Parola 
#incluir 
// https://github.com/MajicDesigns/MD_MAX72xx 
#incluir 

#define MAX_DEVICES 6 // Número de módulos conectados 
#define CLK_PIN 13 // PIN SPI SCK en UNO 
#define DATA_PIN 11 // PIN de SPI MOSI en UNO 
#define CS_PIN 10 // conectado al pin 10 en UNO 

#define slider_pin A0 // Pin OTA o OTB en el control deslizante 
En t slider_val; // usado para mantener el valor analógico del control deslizante 
En t slide_scroll_speed; // usado al cambiar la velocidad de desplazamiento MD_Parola P = MD_Parola (CS_PIN, MAX_DEVICES); // configuración de SPI 

En t Velocidad de desplazamiento; // usado para establecer la velocidad de desplazamiento del texto en Parola al inicio 

// establece la dirección de desplazamiento si el control deslizante está en medio al inicio textEffect_t scrollEffect = PA_SCROLL_LEFT;

 textPosition_t scrollAlign = PA_LEFT; // cómo aligh el texto 

En t scrollPause =  0 ; // ms de pausa después de terminar de mostrar el mensaje 

#define BUF_SIZE 75 // Máximo de 75 caracteres 
carbonizarse curMessage [BUF_SIZE] = { "Brainy-Bits" }; // usado para mantener el mensaje actual 


vacío  preparar ()
 {

   pinMode (slider_pin, INPUT);
  
   P.begin (); // Start Parola 
  
  // configurar Parola P.displayText (curMessage, scrollAlign, scrollSpeed, scrollPause, scrollEffect, scrollEffect);

 } vacío  lazo () {

   slider_val = analogRead (A0); // verifica el valor analógico del control deslizante 
  
  Si (slider_val >  600 ) { // si el control deslizante a la izquierda scrollEffect = PA_SCROLL_LEFT; // Cambiar la dirección a la izquierda P.setTextEffect (scrollEffect, scrollEffect); // establece una nueva dirección en Parola (OLD, NEW) slide_scroll_speed = mapa (slider_val, 1023 , 0 , 15 , 400 ); // mapa del control deslizante a la velocidad de desplazamiento de texto P.setSpeed ​​(slide_scroll_speed); // Establecer nueva velocidad de desplazamiento de texto } Si (slider_val  350 ) { // si deslizador a la derecha scrollEffect = PA_SCROLL_RIGHT;
    
     P.setTextEffect (scrollEffect, scrollEffect);
    
     slide_scroll_speed = mapa (slider_val, 1023 , 0 , 400 , 15 );
    
     P.setSpeed ​​(slide_scroll_speed);
   } Si (slider_val  600  && slider_val >  350 ) { // si el control deslizante en el medio slide_scroll_speed =  500 ;
    
     P.setSpeed ​​(slide_scroll_speed);
   } Si (P.displayAnimate ()) // Si terminó de mostrar el mensaje {
     P.displayReset (); // Restablece y muestra de nuevo }
  
 }

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Enviar Whatsapp
Hola 👋
¿En qué podemos ayudarte?