Amateur Radio Station R9AL

      Cемисегментный индикатор - это еще одно устройство отображения информации, но в отличии от уже знакомых нам светодиодов, может отображать цифры и даже некоторые буквы, используя для этого всего восемь проводов. Сегодня такие индикаторы выпускаются на основе светодиодов:



Выпускаемые семисегментные индикаторы могут быть разных размеров и формы, могут быть по два, по три или более в одном корпусе, могут быть разного цвета и разной яркости:



Отдельные элементы индикатора, сегменты, обозначаются буквами от A до G, а если индикатор содержит еще дополнительный элемент, десятичную точку, то она обозначается буквой H (или DP, от decimal point)





Схема индикатора

Индикаторы различаются по типу соединения светодиодов, внутри индикатора светодиоды могут быть по схеме с общий анодом или общим катодом.





Подключение индикатора



Для примера используем индикатор с общим катодом. Так как индикатор, по сути, это набор светодиодов, подключать индикатор напрямую к Arduino нельзя, иначе индикатор просто выйдет из строя:



Необходимо поставить токоограничительные резисторы, в данном случае 470 Ом будет достаточно:



Программа



После сборки схемы в Tinkercad circuit, напишем скетч, который зажжет на индикаторе цифру 0

void setup()
{
  pinMode(13, OUTPUT); //сегмент A
  pinMode(12, OUTPUT); //сегмент B
  pinMode(11, OUTPUT); //сегмент C
  pinMode(10, OUTPUT); //сегмент D
  pinMode(9, OUTPUT); //сегмент E
  pinMode(8, OUTPUT); //сегмент F
  pinMode(7, OUTPUT); //сегмент G
  pinMode(6, OUTPUT); //сегмент H
}

void loop()
{
  digitalWrite(13, HIGH); //зажечь сегмент A
  digitalWrite(12, HIGH); //зажечь сегмент B
  digitalWrite(11, HIGH); //зажечь сегмент C
  digitalWrite(10, HIGH); //зажечь сегмент D
  digitalWrite(9, HIGH);  //зажечь сегмент E
  digitalWrite(8, HIGH);  //зажечь сегмент F
}
Скетч очень простой, как он работает понятно из комментариев, а результатом работы будет:



Аналогичным образом можно сформировать любую другую цифру, или любой символ, из 128 возможных:







Типы данных

      Мы уже сталкивались с понятием переменная (см. Урок 2) и выяснили, что переменная, это место хранения данных, и каждая объявленная переменная может принимать произвольное значение. Но дело в том, что данные бывают разными. Например, цифры, целые числа, буквы, символы и так далее. Рассмотрим с какими типами данных мы можем столкнуться.

int - (от англ. integer - целое число) один их наиболее часто используемых типов данных для хранения целых чисел, занимает 2 байта памяти (16 бит), а значит может хранить пятнадцати разрядное двоичное число, и еще один, старший разряд нужен для того, чтобы указать отрицательное это число или положительное. Максимальное 15-ти разрядное число в двоичной системе соответствует числу 32768 в десятичной, а значит переменная, с типом данных "int" может хранить любое число из диапазона от -32768 до 32767.

unsigned int - беззнаковый тип целых чисел, аналогичен типу "int", также занимает в памяти 2 байта, но хранит только положительные числа, а значит использует все 16 разрядов, поэтому может хранить любое число из диапазона от 0 до 65535

boolean - Логический (булевый) тип данных. Занимает в памяти один байт и может принимать одно из двух значений "true" или "false".

char - переменные этого типа занимает в памяти один байт и может хранить в памяти всего один алфавитно-цифовой символ. Строго говоря, никакие символы, в привычном нам виде, там не хранятся. Там хранится двоичное число, соответствующее тому или иному символу, в соответствии с таблицей кодировки. В Arduino используется таблица кодировки ASKII. Т.к. символ хранится как число в памяти над ним возможно производить арифметические действия (например, 'A' + 1 будет 66, т.к. ASCII код для 'A' - 65). Тип char знаковый тип, т.е. число (код) хранящийся в памяти может принимать значения от -128 до 127.

byte - Этот тип данных аналогичен типу "char", хранит 8-ми битное беззнаковое число, и может принимать значение от 0 до 255.





Copyright © R9AL 2021 Все права защищены

Рейтинг@Mail.ru Яндекс цитирования