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() – для создания макета пропущенных символов.

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

Код

 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 }

См.также

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