Четырехразрядный семисегментный индикатор: различия между версиями
Ангелина (обсуждение | вклад) (Четырехразрядный семисегментный индикатор) |
Artecoll (обсуждение | вклад) (Картинка Джека Воробья) |
||
Строка 16: | Строка 16: | ||
== Пример программы == | == Пример программы == | ||
Продемонстрируем простую программу, чтобы можно было наглядно понять, как работает 4-разрядный 7-сегментный индикатор к Ардуино. | Продемонстрируем простую программу, чтобы можно было наглядно понять, как работает 4-разрядный 7-сегментный индикатор к Ардуино. | ||
<syntaxhighlight lang="c"> | |||
#define g 11 //контакты | |||
#define d1 A1 | |||
#define d2 A2 | |||
#define d3 A3 | |||
#define d4 A4 | |||
void setup() { | |||
pinMode(g, OUTPUT); //режимы работы контактов | |||
pinMode(d1, OUTPUT); | |||
pinMode(d2, OUTPUT); | |||
pinMode(d3, OUTPUT); | |||
pinMode(d4, OUTPUT); | |||
digitalWrite(d1, HIGH); //запись логической 1 на контакты | |||
digitalWrite(d2, HIGH); | |||
digitalWrite(d3, HIGH); | |||
digitalWrite(d4, HIGH); | |||
digitalWrite(g, HIGH); | |||
delay(100); | |||
} | |||
void loop() { | |||
digitalWrite(d1, LOW); //включаем первый разряд | |||
digitalWrite(d4, HIGH); | |||
delay(200); | |||
digitalWrite(d2, LOW); //включаем второй разряд | |||
digitalWrite(d1, HIGH); | |||
delay(200); | |||
digitalWrite(d3, LOW); //включаем третий разряд | |||
digitalWrite(d2, HIGH); | |||
delay(200); | |||
digitalWrite(d4, LOW); //включаем четвёртый разряд | |||
digitalWrite(d3, HIGH); | |||
delay(200); | |||
} | |||
</syntaxhighlight> | |||
В основном цикле void loop мы поочередно включаем разряды (включение происходит при режиме <code>LOW</code>), при этом сегмент G остается всегда включен. | В процедуре void setup() мы подали напряжение на четыре разряда светодиодного индикатора, чтобы они не горели изначально при начале программы; | ||
В основном цикле void loop() мы поочередно включаем разряды (включение происходит при режиме <code>LOW</code>), при этом сегмент G остается всегда включен. |
Текущая версия от 21:05, 14 июня 2021
Четырёхразрядный индикатор - это четыре семисегментных индикатора и управляющая логика, смонтированные на одной плате. Светодиодный четырехразрядный семисегментный индикатор Ардуино используется для создания счетчиков или таймеров на Arduino, вывода числовых значений с датчиков в готовых проектах.
Четырёхразрядный индикатор пригодится, если, например, нужно вывести текущее время или показания с одного из сенсоров. Он прост в использовании: подключается к управляющей плате, такой как Arduino, с помощью двух трёхпроводных шлейфов.
Распиновка индикатора
Распиновка сегментов индикатора, состоящего из четырех символов ничем не отличается от одно символьного семисегментного индикатора Ардуино. Отличие модуля в количестве разрядов (символов) — каждый разряд включается отключением питания от соответствующего катода. Таким образом все светодиоды одного сегмента в разрядах (например, A-A-A-A) подключены параллельно к общему катоду.
С включением сегмента довольно просто разобраться. Разберем небольшой пример. Изначально на все 4 разряда (D1, D2, D3, D4) подано напряжение. Чтобы включить сегмент A на втором символе, необходимо на ножку A (анод) подать напряжение. Но сегмент не загорится, пока мы не отключим напряжение у ножки D2. Таким образом можно включать любой светодиод на модуле 7 сегментного индикатора.
Проблема подключения индикатора к Arduino состоит в том, что используется сразу много пинов на плате. Кроме того, выводить на индикаторе одновременно можно только одну цифру. Поэтому необходимо за очень короткое время по очереди выводить нужную цифру на каждом из разрядов. Человеческое зрение не успевает уловить переключение и вам будет казаться, что все разряды горят одновременно.
Пример программы
Продемонстрируем простую программу, чтобы можно было наглядно понять, как работает 4-разрядный 7-сегментный индикатор к Ардуино.
#define g 11 //контакты #define d1 A1 #define d2 A2 #define d3 A3 #define d4 A4 void setup() { pinMode(g, OUTPUT); //режимы работы контактов pinMode(d1, OUTPUT); pinMode(d2, OUTPUT); pinMode(d3, OUTPUT); pinMode(d4, OUTPUT); digitalWrite(d1, HIGH); //запись логической 1 на контакты digitalWrite(d2, HIGH); digitalWrite(d3, HIGH); digitalWrite(d4, HIGH); digitalWrite(g, HIGH); delay(100); } void loop() { digitalWrite(d1, LOW); //включаем первый разряд digitalWrite(d4, HIGH); delay(200); digitalWrite(d2, LOW); //включаем второй разряд digitalWrite(d1, HIGH); delay(200); digitalWrite(d3, LOW); //включаем третий разряд digitalWrite(d2, HIGH); delay(200); digitalWrite(d4, LOW); //включаем четвёртый разряд digitalWrite(d3, HIGH); delay(200); }
В процедуре void setup() мы подали напряжение на четыре разряда светодиодного индикатора, чтобы они не горели изначально при начале программы;
В основном цикле void loop() мы поочередно включаем разряды (включение происходит при режиме LOW
), при этом сегмент G остается всегда включен.