Ligando display 7 segmentos com MAX7219 com Arduíno

Eletrônica

Este é um exemplo muito simples, mas preciso, de como usar esse CI MAX7219 e controlar 8 telas de 7 segmentos. Ele usa comunicação serial, portanto, precisamos apenas de 3 fios para dados, relógio e CS. O modulo e alimentado com 5V .

Primeiro, você precisa de uma exibição de 7 segmentos como imagem abaixo. Isso usa dados seriais para mostrar até 8 números de 0 a 9 e 7 pontos decimais. Para enviar dados, tudo o que precisamos fazer é mudar os bytes no pino de dados.





PARTE 1 - Esquemático

Ok, faça as conexões SPI como abaixo entre os pinos do LCD e do Arduíno. Forneça 5V e conecte o GND também. Para ligar a luz de fundo, você deve conectar o GND ao pino da luz. Em seguida, vá abaixo e faça o download da biblioteca e veja o código de exemplo. Faça o upload do código e teste o LCD.


PARTE 2 - Código de exemplo

Não precisamos de nenhuma biblioteca para este exemplo. Tudo o que precisamos fazer é enviar dados para o chip alterando o valor de cada byte no pino de dados. Para saber quais valores temos que enviar para cada registro, verifique esta folha de dados deste módulo para conhecer o mopre. Depois aplique o código do teste, faça as conexões e faça um teste.

#define MAX7219_Data_IN 2
#define MAX7219_Chip_Select  3
#define MAX7219_Clock 4

byte adr = 0x08;
byte num = 0x00;
int i = 0;

void shift(byte send_to_address, byte send_this_data)
{
  digitalWrite(MAX7219_Chip_Select, LOW);
  shiftOut(MAX7219_Data_IN, MAX7219_Clock, MSBFIRST, send_to_address);
  shiftOut(MAX7219_Data_IN, MAX7219_Clock, MSBFIRST, send_this_data);
  digitalWrite(MAX7219_Chip_Select, HIGH);
}

void setup() {
  pinMode(MAX7219_Data_IN, OUTPUT);
  pinMode(MAX7219_Chip_Select, OUTPUT);
  pinMode(MAX7219_Clock, OUTPUT);
  digitalWrite(MAX7219_Clock, HIGH);
  delay(200);

  //Setup of MAX7219 chip
  shift(0x0f, 0x00); //display test register - test mode off
  shift(0x0c, 0x01); //shutdown register - normal operation
  shift(0x0b, 0x07); //scan limit register - display digits 0 thru 7
  shift(0x0a, 0x0f); //intensity register - max brightness
  shift(0x09, 0xff); //decode mode register - CodeB decode all digits

}

void loop() {
  
  //Data transfer
  shift(0x08, 0x00); //digit 7 (leftmost digit) data
  shift(0x07, 0x01);
  shift(0x06, 0x02);
  shift(0x05, 0x03);
  shift(0x04, 0x04);
  shift(0x03, 0x05);
  shift(0x02, 0x06);
  shift(0x01, 0x07); //digit 0 (rightmost digit) data
  delay(1000);
  shift(0x08, 0x07); //digit 7 (leftmost digit) data
  shift(0x07, 0x06);
  shift(0x06, 0x05);
  shift(0x05, 0x04);
  shift(0x04, 0x03);
  shift(0x03, 0x02);
  shift(0x02, 0x01);
  shift(0x01, 0x00); //digit 0 (rightmost digit) data
  delay(1000);
}


Fonte
http://www.electronoobs.com/eng_arduino_tut54.php
Mais Dicas