Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

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

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


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

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

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

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

Код

  1.  
  2. // подключаем библиотеку (это нужно делать всегда):
  3. #include "LedControl.h"
  4.  
  5. /*
  6.  Теперь настраиваем объект LedControl.
  7.  
  8.  Эти номера контактов, возможно, не будут работать в вашем проекте.
  9.  Если необходимо, поменяйте их.
  10.  
  11.  12-ый контакт подключен к DataIn.
  12.  11-ый контакт подключен к CLK.
  13.  10-ый контакт подключен к LOAD.
  14.  У нас есть только один MAX72XX.
  15.  */
  16. LedControl lc=LedControl(12,11,10,1);
  17.  
  18. /* Делаем небольшую задержку между обновлениями дисплея. */
  19. unsigned long delaytime=250;
  20.  
  21. void setup() {
  22.   /*
  23.    По умолчанию при запуске у MAX72XX включается энергосберегающий
  24.    режим, поэтому мы должны его «разбудить».
  25.    */
  26.   lc.shutdown(0,false);
  27.   /* Задаем среднюю яркость. */
  28.   lc.setIntensity(0,8);
  29.   /* Очищаем дисплей. */
  30.   lc.clearDisplay(0);
  31. }
  32.  
  33.  
  34. /*
  35.  Эта функция будет показывать на матрице символы  для
  36.  слова «Arduino» – один за другим.
  37.  Символы показываются на позиции номер «0».
  38.  */
  39. void writeArduinoOn7Segment() {
  40.   lc.setChar(0,0,'a',false);
  41.   delay(delaytime);
  42.   lc.setRow(0,0,0x05);
  43.   delay(delaytime);
  44.   lc.setChar(0,0,'d',false);
  45.   delay(delaytime);
  46.   lc.setRow(0,0,0x1c);
  47.   delay(delaytime);
  48.   lc.setRow(0,0,B00010000);
  49.   delay(delaytime);
  50.   lc.setRow(0,0,0x15);
  51.   delay(delaytime);
  52.   lc.setRow(0,0,0x1D);
  53.   delay(delaytime);
  54.   lc.clearDisplay(0);
  55.   delay(delaytime);
  56. }
  57.  
  58. /*
  59. Эта функция прокрутит на дисплее все шестнадцатеричные числа и буквы.
  60. Вам понадобится по крайней мере четыре 7-сегментных дисплея.
  61. В противном случае демонстрация будет неполной.
  62. */
  63. void scrollDigits() {
  64.   for(int i=0;i<13;i++) {
  65.     lc.setDigit(0,3,i,false);
  66.     lc.setDigit(0,2,i+1,false);
  67.     lc.setDigit(0,1,i+2,false);
  68.     lc.setDigit(0,0,i+3,false);
  69.     delay(delaytime);
  70.   }
  71.   lc.clearDisplay(0);
  72.   delay(delaytime);
  73. }
  74.  
  75. void loop() {
  76.   writeArduinoOn7Segment();
  77.   scrollDigits();
  78. }

См.также

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

  1. playground.arduino.cc - Democode for the LedControl-library