
PCF8574
Adafruit (плата), Texas Instruments (PCF8574) · Adafruit PCF8574 I2C GPIO Expander PID 5545, STEMMA QT
Добавление восьми медленных цифровых входов/выходов через I²C.
Автор: SLDV LAB
Опубликовано · Обновлено
О МОДУЛЕ
Что делает Adafruit PCF8574 I2C GPIO Expander PID 5545, STEMMA QT
PCF8574 расширяет число цифровых контактов для кнопок и индикаторов. Это quasi-bidirectional порт: отдельного регистра направления нет. Для чтения входа сначала записывают в соответствующий бит единицу; внешняя кнопка может затем притянуть контакт к GND.
Единица на выходе создаётся слабым источником тока и не эквивалентна обычному push-pull HIGH. Ноль способен стягивать ток, поэтому светодиод удобнее подключать от VCC через резистор к выводу. Нагрузки, реле и моторы напрямую не подключают; токовые пределы отдельного контакта и всего корпуса проверяют по datasheet. Сохраняйте теневой байт выходов: запись целого порта не должна случайно включать ноль на входе.
Рассматривается Adafruit PID 5545 со STEMMA QT и доступными P0–P7. На LCD-backpack часть контактов уже занята дисплеем, поэтому этот пример для него не подходит. PCF8574A использует другой диапазон адресов. У Adafruit PID 5545 адресные перемычки находятся сзади, а наружу отдельно выведен A0. Пример подключается проводами к площадкам, а не через разъём STEMMA QT; порядок контактов сверяют по маркировке.
Adafruit PCF8574, изделие 5545, версия STEMMA QT.
PCF8574. Фото: Kattni Rembor / Adafruit. Оригинал: https://learn.adafruit.com/assets/113836 . Лицензия фотографии: CC BY-SA 3.0, https://creativecommons.org/licenses/by-sa/3.0/ . Изменения: Удалён исходный фон вокруг платы; очищены только видимые просветы сквозных отверстий с сохранением металлических стенок. Пропорциональное масштабирование, размещение на предоставленном фоне и JPEG-сжатие. Геометрия, маркировка и видимые детали не перерисовывались. Цветокоррекция и повышение детализации не применялись. Адаптация фотографии распространяется по той же лицензии. Adafruit PCF8574, изделие 5545, версия STEMMA QT.
Схема распиновки
Авторская распиновка SLDV LAB: Adafruit 5545, PCF8574 STEMMA QT. Сторона компонентов; VIN снизу слева. Верхний и нижний ряды слева направо. Для других ревизий и плат требуется отдельная проверка.
INT на этой плате подтянут к VIN: высокий уровень зависит от питания платы. Учитывайте допустимое напряжение GPIO контроллера.
Источники: 1, 2. Авторская схема SLDV LAB по фактам документации.
Характеристики
- Контактов порта
- 8
- Тип выходов
- Quasi-bidirectional; запись 1 освобождает вход
- Адреса PCF8574
- 0x20–0x27; PCF8574A: 0x38–0x3F
- Максимальная частота PCF8574
- 100 кГц
- Интерфейс
- I²C
- Питание модуля
- В примере PCF8574 и I²C питаются от 5 В, Uno R3 имеет логику 5 В; 5-вольтовые подтяжки и выходы нельзя напрямую подключать к GPIO ESP32.
ПРАКТИКА
Подключение
| Контакт модуля | Контакт платы | Назначение |
|---|---|---|
| VIN | 5V | Adafruit PID 5545; питание и логика Uno R3 5 В. |
| GND | GND | Общая земля. |
| SDA | A4 / SDA | Один и тот же сигнал Uno R3; подтяжки к питанию модуля. |
| SCL | A5 / SCL | Порядок контактов на модуле определять по маркировке, не по положению. |
| A0; перемычки A0/A1/A2 | A0 не подключать; перемычки открыты | Заводской адрес Adafruit PID 5545 — 0x20. |
| P0 | Кнопка между P0 и GND | P0 всегда записывается как 1; внутренний слабый источник подтягивает его вверх. |
| P1 | Катод LED; анод через 1 кОм к 5V | Светодиод включается при LOW; не подключать его без резистора. |
| /INT | Не подключать | Пример использует опрос; INT имеет открытый сток. |
Подходит для Arduino. Выберите контакты по документации своей платы.
ВАШ ПРОЕКТ · ВАШ ДАТЧИК
Интегрируйте модуль с ChatGPT
Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.
Помоги интегрировать PCF8574 breakout. Сначала уточни точную плату модуля, контроллер, среду, питание и задачу. Проверь схему, логические уровни и маркировку контактов; затем дай согласованные подключение, зависимости и полный минимальный пример с обработкой ошибок. Объясни безопасную первичную проверку и ожидаемый результат. Объясни quasi-bidirectional поведение, слабый HIGH и сохранение теневого байта; уточни суффикс A и наличие подключённого LCD.
Библиотеки
Установите библиотеку для своей среды и откройте пример из её документации.
Что именно прописать
- Плата и ядро
Arduino Uno R3; Arduino AVR Boards 1.8.6Распиновка относится к ATmega328P Uno R3; не Uno R4 и не ESP32.
- Адрес
0x20PCF8574, A0–A2=GND; для PCF8574A адрес иной.
- Начальное значение
0xFFВсе контакты освобождены для входа либо слабого HIGH.
- Вход и выход
P0 = кнопка; P1 = LED с активным LOWТеневой байт всегда сохраняет единицу P0.
- Шина
Wire.setClock(100000)PCF8574 рассчитан на Standard-mode I²C.
Arduino: полный пример кнопки и светодиода
cpp#include <Wire.h>
const uint8_t ADDR = 0x20;
uint8_t outputs = 0xFF;
bool ready = false;
bool writePort(uint8_t value) {
Wire.beginTransmission(ADDR);
Wire.write(value);
return Wire.endTransmission() == 0;
}
void setup() {
Serial.begin(115200);
Wire.begin();
Wire.setClock(100000);
Wire.setWireTimeout(25000, true);
ready = writePort(outputs);
if (!ready) Serial.println("PCF8574 not found");
}
void loop() {
if (!ready) { delay(1000); return; }
if (Wire.requestFrom(ADDR, uint8_t(1)) != 1) {
Serial.println("Port read failed"); delay(500); return;
}
uint8_t inputs = Wire.read();
bool pressed = (inputs & 0x01) == 0;
uint8_t next = outputs | 0x01;
if (pressed) next &= uint8_t(~0x02);
else next |= 0x02;
if (next != outputs) {
if (writePort(next)) outputs = next;
else Serial.println("Port write failed");
}
delay(30);
}
Полный скетч для Uno R3 и Wire из Arduino AVR Boards 1.8.6, API сверено; аппаратный тест и компиляция не выполнялись. Задержка снижает частоту опроса, но не является полноценным подавлением дребезга для подсчёта нажатий.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.


