Шаблоны цифр в байтах
Часть раздела Дисплеи и датчики путешествия по Arduino на Coddy. Урок 2 из 24.
Семь строк digitalWrite() для каждой цифры — это много кода. Храни каждую цифру как шаблон: один бит на сегмент, 1 — горит, 0 — не горит.
byte — это целое число от 0 до 255, состоящее из восьми битов. Записывай его в двоичной системе, добавляя спереди 0b. Читай биты справа: последний бит — сегмент a, перед ним b и так далее до g.
// gfedcba
byte one = 0b0000110; // b и c: 1В массиве помещаются десять шаблонов, поэтому digits[3] — это шаблон цифры 3. bitRead() из двоичного счётчика читает один бит, отсчитывая справа, начиная с 0:
bitRead(0b0000110, 0) // 0: сегмент a выключен
bitRead(0b0000110, 1) // 1: сегмент b горитФункция может пройти по семи битам с помощью цикла for и установить каждый вывод сегмента, так что для отображения любой цифры достаточно одного вызова: showDigit(7);
Задание
СреднеВ заготовке есть все шаблоны, кроме 4 и 7, а loop() показывает 1, 4 и 7.
- заполните 4 (сегменты
b,c,f,g) и 7 (a,b,c) - напишите
showDigit(n): для каждогоiот 0 до 6 задайтеsegmentPins[i]значениеLOW, если битiвdigits[n]равен 1, иHIGH, если он равен 0
Нажмите Run, затем Check.
Попробуйте сами
const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8}; // a, b, c, d, e, f, g
// Один шаблон на цифру; читайте справа налево: крайний правый бит соответствует сегменту a.
// gfedcba
const byte digits[10] = {
0b0111111, // 0
0b0000110, // 1
0b1011011, // 2
0b1001111, // 3
0b0000000, // 4: заполнить
0b1101101, // 5
0b1111101, // 6
0b0000000, // 7: заполнить
0b1111111, // 8
0b1101111 // 9
};
void showDigit(int n) {
// Включите сегменты, заданные digits[n], остальные выключите
}
void setup() {
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void loop() {
showDigit(1);
delay(1000);
showDigit(4);
delay(1000);
showDigit(7);
delay(1000);
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Дисплеи и датчики
1Семисегментные дисплеи
Семисегментный дисплейШаблоны цифр в байтахСчёт на дисплееОбратный отсчёт до нуляБросок кубикаПотренируйтесь самостоятельно: Песочница Arduino