Иногда для проекта не хватает портов микроконтроллера. И если для плат Arduino на основе ATMEGA328, чаще всего хватает свободных портов, то очень интересные и недорогие микроконтроллеры ESP8266 этим похвастаться не могут - всего 11 портов и к тому-же большинство из них имеют ограничения использования при загрузке.
Для решения этой проблемы можно использовать расширители портов с интерфейсом I2C
Довольно распространенная микросхема PCF8574 позволяет по двум проводам подключить жидкокристаллический индикатор или просто использовать восемь дополнительных цифровых входов или выходов. Максимально к микроконтроллеру можно подключить 8 таких плат с разными адресами и в сумме получить 64 дополнительных вывода.
Микросхема может питаться в большом диапазоне напряжений 3-5,5 Вольт.
На вышеприведенной плате кроме собственно микросхемы расположены джамперы выбора адреса I2C и пара подтягивающих резистора, необходимых для функционирования протокола I2C
Адреса выставляются джамперами следующим образом:
A0 — 0 // A1 — 0 // A2 — 0 // — 0x20
A0 — 0 // A1 — 0 // A2 — 1 // — 0x21A0 — 0 // A1 — 1 // A2 — 0 // — 0x22
A0 — 0 // A1 — 1 // A2 — 1 // — 0x23
A0 — 1 // A1 — 0 // A2 — 0 // — 0x24
A0 — 1 // A1 — 0 // A2 — 1 // — 0x25
A0 — 1 // A1 — 1 // A2 — 0 // — 0x26
A0 — 1 // A1 — 1 // A2 — 1 // — 0x27
В папке примеров есть примеры для всех платформ.
#include "PCF8574.h" // Подключение библиотеки PCF8574
PCF8574 pcf8574(0x20); // Создаем объект и указываем адрес устройства 0x20
В секции void setup() указываем какие выводы будут работать на вход, а какие на выход
и инициализируем его
pcf8574.pinMode(P1, INPUT_PULLUP);
pcf8574.pinMode(P3, INPUT); // Устанавливаем выход P3, как вход
pcf8574.pinMode(P4, OUTPUT); // Устанавливаем выход P4, как выход
и инициализируем его
pcf8574.begin();Чтение цифрового значения
int p1Digital = PCF8574.digitalRead(P1); // read P1Записать цифровое значение тоже довольно просто:
int p1Digital = PCF8574.digitalRead(P1, true); // read P1 without debounce
PCF8574.digitalWrite(P1, HIGH);
PCF8574.digitalWrite(P1, LOW);
Хорошее руководство по работе с библиотекой есть тут:
https://www.mischianti.org/2019/01/02/pcf8574-i2c-digital-i-o-expander-fast-easy-usage/
Отправить комментарий
Отправить комментарий