Подключение 74HC595 к ESP32
Сдвиговый регистр
74HC595 к ESP32 — три сигнальных вывода: DS (данные), SHCP (такты) и RCLK (защёлка). Аппаратный SPI ESP32 (MOSI — GPIO23, SCK — GPIO18) делает передачу быстрой.
Схема подключения 74HC595 к ESP32
| 74HC595 | ESP32 |
|---|---|
| DS | GPIO23 |
| QA | Светодиод led1, вывод A |
| QB | Светодиод led2, вывод A |
| QC | Светодиод led3, вывод A |
| QD | Светодиод led4, вывод A |
| QE | Светодиод led5, вывод A |
| QF | Светодиод led6, вывод A |
| QG | Светодиод led7, вывод A |
| QH | Светодиод led8, вывод A |
| RCLK | GPIO5 |
| SHCP | GPIO18 |
| VCC | 3V3 |
| GND | GND |
Схема из примера «Сдвиговый регистр: восемь выходов из трёх проводов».
Выводы 74HC595
| Вывод | Назначение |
|---|---|
| DS | вход данных (SER) |
| QA | выход 0 |
| QB | выход 1 |
| QC | выход 2 |
| QD | выход 3 |
| QE | выход 4 |
| QF | выход 5 |
| QG | выход 6 |
| QH | выход 7 |
| RCLK | защёлка: переносит биты на выходы |
| SHCP | такт сдвига (SRCLK) |
| VCC | питание |
| GND | общий провод |
Код для ESP32
#include <SPI.h>
// Защёлка (RCLK) — обычный вывод: выбором кристалла здесь
// распоряжается скетч, а не контроллер SPI.
const int LATCH = 5;
void writeByte(uint8_t value) {
digitalWrite(LATCH, LOW);
SPI.transfer(value);
digitalWrite(LATCH, HIGH); // вот здесь байт и попадает на выходы
}
void setup() {
pinMode(LATCH, OUTPUT);
digitalWrite(LATCH, HIGH);
SPI.begin(); // SCK=18, MISO=19, MOSI=23
SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));
}
void loop() {
// Бегущий огонь: старший разряд уходит первым и попадает на QH.
for (int i = 0; i < 8; i++) {
writeByte(1 << i);
delay(120);
}
// И встречная волна — заполнение слева направо.
uint8_t mask = 0;
for (int i = 0; i < 8; i++) {
mask |= (1 << i);
writeByte(mask);
delay(120);
}
}
Скетч можно править и запускать в симуляторе без платы и установки среды.
Что учесть на ESP32
- Микросхема работает от 2 до 6 В, поэтому питание 3,3 В подходит; выходы тогда дают 3,3 В.
- Вывод OE держат на земле, MR — на питании: иначе выходы отключены или регистр сброшен.
В железе
У настоящей микросхемы есть ещё OE (разрешение выходов — на GND) и MR (сброс — на VCC). Оставленные в воздухе, они дают случайное поведение. И резистор — на каждый светодиод.
Частые ошибки при подключении к ESP32
- Оставить MR (SRCLR) неподключённым: регистр случайно сбрасывается.
- Подключить мощную нагрузку к выходам напрямую: суммарный ток микросхемы около 70 мА, мощное включают через транзисторы.
- Выходы не меняются — нет импульса на RCLK: данные сдвинулись, но не защёлкнулись.
- Восемь светодиодов по 20 мА — 160 мА через микросхему при допустимых 70. Берите ток 5–8 мА или ставьте транзисторы.
- OE и MR не подключены — микросхема ведёт себя случайно.
- Порядок битов перевёрнут — замените MSBFIRST на LSBFIRST, а не перепаивайте светодиоды.
Ещё по теме
- плата Подключение 74HC595 к Arduino
- деталь 74HC595: подключение к ESP32 и Arduino
- калькулятор Резистор для светодиода
Другие детали для ESP32
HC-SR04DHT22 (AM2302)BME280DS3231SSD1306 OLED 0,96″LCD 1602 с I2CMAX7219TM1637MPU6050 (GY-521)Модуль релеWS2812B (NeoPixel)KY-040Клавиатура 4×4HX711ФоторезисторМодуль microSDRGB-светодиодСервопривод SG90ИК-приёмник (VS1838B)TFT ST7735 1,8″Шаговый двигательКнопкаПотенциометрПьезопищалкаСветодиодDS18B20Ползунковый переключательHC-SR501TTP223Датчик влажности почвыMQ-2LM35Джойстик KY-023DHT11HTU21DSN65HVD230