/* Домашняя работа №4. Динамическая индикация */
/* на микросхеме 74HC595 + светодиоды */
/* Описание работы кода и устройсвта
Использовал 1 - разрядный 7-сегментный индикатор с общим катодом.
Ограничение тока резисторами номиналом в 220 [Ом].
После кода таблица с подобранными значениями чисел, кодирующих значение цифр для 7-сегментного индикатора в данной сборке
Числа представлены в формате :
Цифра 7 SEG == BIN == HEX форматы
0 == 0b11111100 == 0xFC
1 == 0b01100000 == 0x60
2 == 0b11011010 == 0xDA
3 == 0b11110010 == 0xF2
4 == 0b01100110 == 0x66
5 == 0b10110110 == 0xB6
6 == 0b10111110 == 0xBE
7 == 0b11100000 == 0xE0
8 == 0b11111110 == 0xFE
9 == 0b11110110 == 0xF6
/* Объявление констант для данного проекта */
#define dataPin 10 // Цифровой пин D10 - к выводу приёма данных DS
#define latchPin 11 // Цифровой пин D11 - к выводу защёлки STCP
#define clockPin 12 // Цифровой пин D12 - к выводу тактирования микросхемы SHCP
/* Инициализация переменных и режимов */
void setup()
{
pinMode(dataPin, OUTPUT); // Пин данных - на выход
pinMode(latchPin, OUTPUT); // Пин защёлки - на выход
pinMode(clockPin, OUTPUT); // Пин такт. - на выход
}
/* Рабочий цикл */
void loop()
{
uint8_t arr[10] = {0xFC, 0x60, 0xDA, 0xF2, 0x66, // Инициализируем массив чисел типа uint8 (8 бит)
0xB6, 0xBE, 0xE0, 0xFE, 0xF6}; // от 0 до 9 в формате HEX
for (uint8_t i=0; i <= 9; i++) // Для i от 0, пока не 9, инкремент +1
{
digitalWrite(latchPin, LOW); // Защёлку в 0
shiftOut(dataPin, clockPin, LSBFIRST, arr[i]); // Передать в регистр значение числа по указателю на массив
digitalWrite(latchPin, HIGH); // Защёлку поднять для вывода значений
delay(1000); // Задержка в 1000 [мс]
} // для корректной работе в симулятор, иначе наложение чисел
delay (200); // Общая задержка по циклу в 200 [мс]
}