[Diao Ye aprende a programar] Arduino práctico (99) --- Módulo de pantalla de matriz de puntos LED 8X32 3

La referencia a 37 sensores y actuadores ha estado muy difundida en Internet, de hecho, debe haber más de 37 módulos sensores compatibles con Arduino. En vista del hecho de que he acumulado algunos módulos de sensores y actuadores a la mano, de acuerdo con el concepto de practicar el conocimiento verdadero (debe hacerse), con el propósito de aprender y comunicar, voy a probar una serie de experimentos uno por uno, independientemente del éxito (el programa se lleva a cabo) o no, se registrarán: pequeños progresos o problemas irresolubles, con la esperanza de inspirar a otros.

[Arduino] 168 tipos de experimentos de la serie de módulos de sensores (código de datos + programación de simulación + programación de gráficos)
Experimento 99: Módulo de pantalla de matriz de puntos LED 8X32 Salida MAX7219 cátodo común Módulo de matriz de puntos de cuatro bits de 5V

inserte la descripción de la imagen aquí
Puntos de conocimiento: MAX7219
es un controlador de pantalla LED de varios dígitos lanzado por MAXIM Company en los Estados Unidos. Utiliza una interfaz serial de 3 hilos para transmitir datos y se puede conectar directamente a la interfaz de un solo chip. Los usuarios pueden modificar fácilmente su interfaz interna. parámetros para realizar una pantalla LED de varios dígitos. Contiene circuito de escaneo dinámico de hardware, decodificador BCD, controlador de segmento y controlador de bits. Además, también contiene RAM estática de 8X8 bits en su interior, que se utiliza para almacenar los datos de visualización de 8 cifras. Obviamente, puede controlar directamente una pantalla de matriz de puntos LED de 64 segmentos. Cuando se conectan en cascada varios MAX7219, se pueden controlar más pantallas LED de matriz de puntos. Los datos mostrados se envían a MAX7219 para su visualización después de ser procesados ​​por la microcomputadora de un solo chip.

Los MAX7219/MAX7221 son controladores de pantalla de cátodo común integrados de entrada/salida en serie que conectan un microprocesador a una pantalla LED de 7 segmentos y 8 dígitos, así como a una pantalla de gráfico de barras o 64 LED individuales. Incluye un codificador BCD de tipo B en chip, un circuito de escaneo multicanal, un controlador de segmento y una RAM estática de 8*8 para almacenar cada dato. Solo se usa un registro externo para configurar la corriente del segmento para cada LED. El MAX7221 es compatible con SPI™, QSPI™ y MICROWIRE™, y tiene un controlador de segmento que limita la corriente de giro para reducir la EMI (interferencia electromagnética). Una conveniente interfaz serial de cuatro hilos puede interactuar con todos los microprocesadores comunes. Cada dirección de datos se puede actualizar sin volver a escribir todas las pantallas. El MAX7219/MAX7221 también permite al usuario elegir codificar o no codificar cada dato. Todo el dispositivo incluye un modo de apagado de bajo consumo de 150 µA, controles de brillo analógicos y digitales, un registro de límite de exploración que permite al usuario mostrar de 1 a 8 bits de datos y un modo de detección que hace que se iluminen todos los LED.

inserte la descripción de la imagen aquí
Módulo de pantalla de matriz de puntos LED 8X32 MAX7219 salida cátodo común 5V módulo de matriz de puntos de cuatro bits

Módulo de cascada de pantalla de matriz de puntos LED 8X32, MAX7219 es un controlador de pantalla de cátodo común integrado de entrada/salida en serie, que conecta el microprocesador y la pantalla LED digital de 7 segmentos de 8 dígitos, y también se puede conectar a una pantalla de gráfico de barras o 64 individuales LED. Incluye un codificador BCD de tipo B en chip, un circuito de escaneo multicanal, un controlador de segmento y una RAM estática de 8*8 para almacenar cada dato. Solo se usa un registro externo para configurar la corriente del segmento para cada LED. Una conveniente interfaz serial de cuatro hilos puede interactuar con todos los microprocesadores comunes. Cada dirección de datos se puede actualizar sin volver a escribir todas las pantallas. El MAX7219 también permite al usuario elegir codificar o no codificar cada dato. Todo el dispositivo incluye un modo de apagado de bajo consumo de 150 µA, controles de brillo analógicos y digitales, un registro de límite de exploración que permite al usuario mostrar de 1 a 8 bits de datos y un modo de detección que hace que se iluminen todos los LED. ¡Solo se necesitan 3 puertos IO para controlar 1 matriz de puntos! ¡No parpadea cuando se muestra la matriz de puntos! ¡Se admite la conexión en cascada!

inserte la descripción de la imagen aquí
Diagrama esquemático del circuito de referencia del módulo de pantalla de matriz de puntos LED 8X32

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Diagrama de cableado del experimento Arduino

inserte la descripción de la imagen aquí

Programación experimental de gráficos de código abierto (Mind+, programación mientras se aprende)

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Programación experimental de simulación de código abierto (Linkboy V5.33)

inserte la descripción de la imagen aquí
【Práctica de HuaDiao】 Serie de visualización de música interesante y divertida de pequeños proyectos (08) - Pantalla de matriz de puntos de 32 segmentos de cuatro dígitos Uno de los proyectos: División de frecuencia de ocho segmentos Espectro de luz de pantalla de matriz de puntos 8X8 Conexión de
clavija
: MAX9814 a A0
MAX7219 UNO
VCC →→→→→ 5V
GND →→→→→ GND
DIN →→→→→ D11 (datos, pin de recepción de datos)
CS →→→→→ D10 (carga, pin de recepción de comandos)
CLK →→ →→→ D13 (reloj, pasador de reloj)

/*
  【花雕动手做】有趣好玩的音乐可视化系列小项目(08)---四位32段点阵屏
  项目之一:八段分频8X8点阵屏的音乐频谱灯
  接脚连线:MAX9814 接A0
  MAX7219 UNO
  VCC →→→→→ 5V
  GND →→→→→ GND
  DIN →→→→→ D11(数据,数据接收引脚)
  CS →→→→→ D10(负载,命令接收引脚)
  CLK →→→→→ D13(时钟,时钟引脚)
*/

#include "LedControl.h"

/* Led matrix - Max7219 Declared */
LedControl lc = LedControl(11, 13, 10, 1);

const int maxScale = 11;

/* Sensor - Max9812 Declared */
const int sensorPin = A0;
const int sampleWindow = 50; // 50ms = 20Hz
unsigned int sample;

unsigned long startMillis;
unsigned long timeCycle;

unsigned int signalMax = 0;
unsigned int signalMin = 1024;
unsigned char index = 0;

unsigned int peakToPeak[8];
unsigned int displayPeak[8];
unsigned int temp[8] = {
    
    0, 0, 0, 0, 0, 0, 0, 0};
unsigned int signalMaxBuff[8];
unsigned int signalMinBuff[8];


void setup() {
    
    
  // Led matrix
  lc.shutdown(0, false); // bật hiện thị
  lc.setIntensity(0, 2); // chỉnh độ sáng
  lc.clearDisplay(0); // tắt tất cả led

  Serial.begin(9600);
}

void loop() {
    
    
  startMillis = millis();
  //peakToPeak = 0;

  signalMax = 0;
  signalMin = 1024;

  // Get data in 50ms
  while (millis() - startMillis < sampleWindow) {
    
    
    sample = analogRead(sensorPin);

    if (sample < 1024) {
    
    
      if (sample > signalMax) {
    
    
        signalMax = sample;
      }
      if (sample < signalMin) {
    
    
        signalMin = sample;
      }
    }

    // 20Hz - 64Hz - 125Hz - 250Hz - 500Hz - 1kHz (timeCycle = 1/F)(ms)
    timeCycle = millis() - startMillis;
    if (timeCycle == 1 || timeCycle == 2 || timeCycle == 4 || timeCycle == 8
        || timeCycle == 16 || timeCycle == 32 || timeCycle == 40 || timeCycle == 50) {
    
    
      signalMaxBuff[index] = signalMax;
      signalMinBuff[index] = signalMin;
      index = (index + 1) % 8;
      delay(1);
      Serial.println(timeCycle);
    }
  }

  // Delete pointer to array
  index = 0;

  // Calculation after get samples
  for (int i = 0; i < 8; i++) {
    
     // i = row (led matrix)
    // sound level
    peakToPeak[i] = signalMaxBuff[i] - signalMinBuff[i];

    // Map 1v p-p level to the max scale of the display
    displayPeak[i] = map(peakToPeak[i], 0, 1023, 0, maxScale);

    // Show to led matrix
    displayLed(displayPeak[i], i);

    // Led drop down
    if (displayPeak[i] >= temp[i]) {
    
    
      temp[i] = displayPeak[i];
    }
    else {
    
    
      temp[i]--;
    }

    lc.setLed(0, i, temp[i], true);
    delayMicroseconds(10);
  }

}

void displayLed(int displayPeak, int row) {
    
    
  switch (displayPeak) {
    
    
    case 0 : lc.setRow(0, row, 0x80); break;
    case 1 : lc.setRow(0, row, 0xC0); break;
    case 2 : lc.setRow(0, row, 0xE0); break;
    case 3 : lc.setRow(0, row, 0xF0); break;
    case 4 : lc.setRow(0, row, 0xF8); break;
    case 5 : lc.setRow(0, row, 0xFC); break;
    case 6 : lc.setRow(0, row, 0xFE); break;
    case 7 : lc.setRow(0, row, 0xFF); break;
  }
}

Diagrama dinámico de la escena experimental

inserte la descripción de la imagen aquí

Videoclip experimental

https://v.youku.com/v_show/id_XNTgyMTcwMzUyNA==.html?spm=a2hcb.playlsit.page.1

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_41659040/article/details/131990518
Recomendado
Clasificación