Управление 32 светодиодами с Arduino Nano и 4 сдвиговыми регистрами 74HC595 — Руководство для начинающих
Компоненты и материалы
| Компонент | Количество | Примечание |
|---|---|---|
| Arduino Nano R3 | 1 | |
| Сдвиговый регистр 74HC595 (Texas Instruments SN74HC595N) | 4 | Последовательно-параллельный, 8 бит |
| Беспаяльная макетная плата (полноразмерная) | 1 | |
| Светодиоды (любые по желанию) | 32 | |
| Резисторы 100 Ом (под светодиоды) | 32 | Зависят от типа светодиодов |
| Перемычки (много) | 1 набор |
Программное обеспечение
- Arduino IDE
- Библиотека HC595: GitHub
О проекте
Пошаговое руководство для начинающих по управлению 32 светодиодами с помощью четырех каскадно подключенных сдвиговых регистров 74HC595. Рассматриваются базовые принципы работы регистра, последовательное соединение (daisy chain) и использование библиотеки HC595.
Автор столкнулся с проблемой нестабильной работы некоторых регистров (возможно, из-за нехватки питания).
Полезные ссылки
- Даташит 74HC595: TI
- Статья о использовании 74HC595 с Arduino: rastating.github.io
- Цикл for в Arduino: Arduino.cc
Схема подключения
Светодиоды подключены к выходам Q0-Q7 каждого регистра через резисторы 100 Ом. Регистры соединяются каскадом: выход Q7' (pin 9) предыдущего регистра подключается к входу DS (pin 14) следующего. Общие линии: SH_CP (pin 11) — тактирование, ST_CP (pin 12) — защелка, OE (pin 13) — на GND (всегда включены), MR (pin 10) — на VCC (сброс отключен). Arduino Nano: Data → D2, Clock → D3, Latch → D4.
Код (пример из библиотеки HC595)
#include <HC595.h>
const int chipCount = 4; // Количество каскадированных 74HC595 (макс. 8)
const int latchPin = 4; // ST_CP (pin 12)
const int clockPin = 3; // SH_CP (pin 11)
const int dataPin = 2; // DS (pin 14)
HC595 ledArray(chipCount, latchPin, clockPin, dataPin);
int delayMs = 30;
int lastPin = ledArray.lastPin();
void setup() {
ledArray.reset();
}
void loop() {
// Прямой бег
for (int i = 0; i <= lastPin; i++) {
ledArray.setPin(i, ON);
delay(delayMs);
}
// Обратный бег
for (int i = lastPin; i >= 0; i--) {
ledArray.setPin(i, OFF);
delay(delayMs);
}
// Переключение в обратном порядке
for (int i = lastPin; i >= 0; i--) {
ledArray.setPin(i, TOGGLE);
delay(delayMs);
}
// Переключение в прямом порядке
for (int i = 0; i <= lastPin; i++) {
ledArray.setPin(i, TOGGLE);
delay(delayMs);
}
}
Библиотека HC595
Автор: J. Bellavance. Доступна на GitHub: https://github.com/j-bellavance/HC595. Библиотека упрощает управление множеством регистров, предоставляя методы setPin(), reset(), lastPin().
Схема (Fritzing)
Схема подключения показана на изображении. Обратите внимание на правильное питание: все регистры и светодиоды лучше запитывать от отдельного источника 5V, если суммарный ток превышает возможности Arduino.
Производственный процесс
- Проект с датчиком DHT11: индикация температуры светодиодами и пьезо-динамиком на Arduino
- Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
- Управление светодиодами через Alexa с помощью Raspberry Pi – простое пошаговое руководство
- Строим Iron Man на Arduino: компоненты, сенсоры и пошаговый гайд
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Сборка функционального 3D-печатного манипулятора на Arduino: пошаговое руководство
- DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
- NeoPixel Matrix Pong на Arduino Nano: неоновая игра Pong на матрице 15×10
- Своё рулевое управление (джойстик) для игр на Arduino
- FM-радиоприемник на Arduino и модуле TEA5767