Arduino:Примеры/Demo for a 7-segment display: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">») |
Нет описания правки |
||
Строка 13: | Строка 13: | ||
==Код== | ==Код== | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
// подключаем библиотеку (это нужно делать всегда): | // подключаем библиотеку (это нужно делать всегда): | ||
#include "LedControl.h" | #include "LedControl.h" |
Версия от 18:18, 14 мая 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Управление 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();
}