Собираем 8 семисегментных дисплеев с Arduino Nano

В технике есть такое понятие как Семисегментные дисплеи (англ. - Seven-segment display, SSD) или индикаторы. В этом уроке мы с помощью Arduino Nano соберем 8 семисегментных индикаторов вместе.

Собираем 8 семисегментных дисплеев с Arduino Nano

Введение

MAX7219 - популярный серийный светодиодный драйвер, который широко используется с микроконтроллерами, а у Arduino есть библиотека, созданная сообществом, что упрощает работу с ней. MAX7219 работает с дисплеями Dot Matrix и семисегментными дисплеями, и вы можете подключить их несколько в цепочке для создания большего дисплея. Будем использовать только 3 разъема Arduino.

В этой инструкции я собираюсь показать вам, как начать дружить с семисегментными дисплеи с MAX7219 IC.

Шаг 1: Инструменты и компоненты

Вот что нам понадобится:

  • Arduino Nano
  • Макетная плата
  • 8 семисегментых дисплеев на MAX7219
  • Провода

Шаг 1: Инструменты и компоненты

Шаг 2: Цепь и соединения

Схема проста как и сам проект, так как от Ардуино (Arduino) к Max7219 IC идет только три соединения. Соединяем следующим образом:

  • Max7219 CLK => цифровой пин 2 Arduino
  • Max7219 CS => цифровой пин 3 Arduino
  • Max7219 DIN => цифровой пин 4 Arduino
  • Max7219 GND => Arduino GND (земля)
  • Max7219 VCC => Arduino 5V (5В)

Разъемы могут быть изменены на любые цифровые выходы по вашему выбору, убедитесь, что внесли соответствующие изменения в код на основе выбранной комбинации выводов.

Шаг 2: Цепь и соединения

Шаг 3: Код

Код для этого проекта можно найти ниже, вам нужно будет установить IDE Arudino и библиотеку LEDContol, которую можно скачать здесь.

Убедитесь, что вы правильно прописали путь, чтобы заставить её работать с IDE. В библиотеке также приведены примеры, которые вы могли бы попробовать и для семисегментного примера, но код написан только для четырехзначного семисегментного дисплея. После того, как вы установили IDE Arduino, скопируйте код ниже и вставьте его в среду разработки платы.

#define MAX7219_DIN 4
#define MAX7219_CS  3
#define MAX7219_CLK 2

void initialise()
{
  digitalWrite(MAX7219_CS, HIGH);
  pinMode(MAX7219_DIN, OUTPUT);
  pinMode(MAX7219_CS, OUTPUT);
  pinMode(MAX7219_CLK, OUTPUT);
}

void output(byte address, byte data)
{
  digitalWrite(MAX7219_CS, LOW);
  shiftOut(MAX7219_DIN, MAX7219_CLK, MSBFIRST, address);
  shiftOut(MAX7219_DIN, MAX7219_CLK, MSBFIRST, data);
  digitalWrite(MAX7219_CS, HIGH);
}

void setup() {
  // put your setup code here, to run once:
  initialise();
  output(0x0f, 0x00); //display test register - test mode off
  output(0x0c, 0x01); //shutdown register - normal operation
  output(0x0b, 0x07); //scan limit register - display digits 0 thru 7
  output(0x0a, 0x0f); //intensity register - max brightness
  output(0x09, 0xff); //decode mode register - CodeB decode all digits
  output(0x08, 0x0c); //digit 7 (leftmost digit) data
  output(0x07, 0x0b);
  output(0x06, 0x0d);
  output(0x05, 0x0e);
  output(0x04, 0x08);
  output(0x03, 0x07);
  output(0x02, 0x06);
  output(0x01, 0x05); //digit 0 (rightmost digit) data

}

void loop() {
  // put your main code here, to run repeatedly:

}

Шаг 3: Код

Заключение

Вот так мы научились работать с семисегментами. Чтобы пойти дальше, вы можете попробовать семисегментный генератор и создать с помощью него то, что вы хотите отобразить на дисплее.

Ардуино+