Arduino:Примеры/Demo for a 7-segment display

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Управление 7-сегментным дисплеем[1]

Этот скетч демонстрирует, как при помощи библиотеки LedControl и платы Arduino управлять 7-сегментным дисплеем. Инициализация девайсов осуществляется так же, как и в скетче «Управление матрицей светодиодов». Функция scrollDigits() использует функцию setDigits() для шестнадцатеричных цифр в диапазоне от «0» до «15».

Функция writeArduinoOn7Segment() чуть интересней, т.к. использует функцию setChar() для заранее приготовленных символов «a» и «d», а также функцию setRow() – для создания макета пропущенных символов.

Внимание! Номера контактов к коде нужно поменять на те, что соответствуют вашему проекту.

Код

 
// подключаем библиотеку (это нужно делать всегда):
#include "LedControl.h"

/*
 Теперь настраиваем объект LedControl.

 Эти номера контактов, возможно, не будут работать в вашем проекте.
 Если необходимо, поменяйте их.

 12-ый контакт подключен к DataIn.
 11-ый контакт подключен к CLK.
 10-ый контакт подключен к LOAD.
 У нас есть только один MAX72XX.
 */
LedControl lc=LedControl(12,11,10,1);

/* Делаем небольшую задержку между обновлениями дисплея. */
unsigned long delaytime=250;

void setup() {
  /*
   По умолчанию при запуске у MAX72XX включается энергосберегающий 
   режим, поэтому мы должны его «разбудить». 
   */
  lc.shutdown(0,false);
  /* Задаем среднюю яркость. */
  lc.setIntensity(0,8);
  /* Очищаем дисплей. */ 
  lc.clearDisplay(0);
}


/*
 Эта функция будет показывать на матрице символы  для 
 слова «Arduino» – один за другим. 
 Символы показываются на позиции номер «0».
 */
void writeArduinoOn7Segment() {
  lc.setChar(0,0,'a',false);
  delay(delaytime);
  lc.setRow(0,0,0x05);
  delay(delaytime);
  lc.setChar(0,0,'d',false);
  delay(delaytime);
  lc.setRow(0,0,0x1c);
  delay(delaytime);
  lc.setRow(0,0,B00010000);
  delay(delaytime);
  lc.setRow(0,0,0x15);
  delay(delaytime);
  lc.setRow(0,0,0x1D);
  delay(delaytime);
  lc.clearDisplay(0);
  delay(delaytime);
}

/*
Эта функция прокрутит на дисплее все шестнадцатеричные числа и буквы. 
Вам понадобится по крайней мере четыре 7-сегментных дисплея. 
В противном случае демонстрация будет неполной.
*/
void scrollDigits() {
  for(int i=0;i<13;i++) {
    lc.setDigit(0,3,i,false);
    lc.setDigit(0,2,i+1,false);
    lc.setDigit(0,1,i+2,false);
    lc.setDigit(0,0,i+3,false);
    delay(delaytime);
  }
  lc.clearDisplay(0);
  delay(delaytime);
}

void loop() {
  writeArduinoOn7Segment();
  scrollDigits();
}

См.также

Внешние ссылки