56 lines
3.6 KiB
Plaintext
56 lines
3.6 KiB
Plaintext
https://duino.ru/i2c-rasshiritel-portov-pcf8574#:~:text=I2C%20%D1%80%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%20%D0%BF%D0%BE%D1%80%D1%82%D0%BE%D0%B2%20%2D%20%D1%8D%D1%82%D0%BE%20%D0%90%D1%80%D0%B4%D1%83%D0%B8%D0%BD%D0%BE,%D1%81%20%D0%BD%D0%B5%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B8%D0%BC%20%D0%BA%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE%D0%BC%20%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%BE%D0%B2%20GPIO.
|
|
|
|
https://www.hwlibre.com/ru/pcf8574/
|
|
|
|
https://robotchip.ru/uvelichenie-portov-vvoda-vyvoda-na-arduino-pcf8574/
|
|
|
|
|
|
пример использования
|
|
|
|
#include "PCF8574.h" // Подключение библиотеки PCF8574
|
|
PCF8574 pcf8574(0x20); // Создаем объект и указываем адрес устройства 0x20
|
|
|
|
void setup(){
|
|
Serial.begin(9600);
|
|
pcf8574.pinMode(P0, INPUT); // Устанавливаем выход P0, как вход
|
|
pcf8574.pinMode(P1, INPUT); // Устанавливаем выход P1, как вход
|
|
pcf8574.pinMode(P2, INPUT); // Устанавливаем выход P2, как вход
|
|
pcf8574.pinMode(P3, INPUT); // Устанавливаем выход P3, как вход
|
|
pcf8574.pinMode(P4, OUTPUT); // Устанавливаем выход P4, как выход
|
|
pcf8574.pinMode(P5, OUTPUT); // Устанавливаем выход P5, как выход
|
|
pcf8574.pinMode(P6, OUTPUT); // Устанавливаем выход P6, как выход
|
|
pcf8574.pinMode(P7, OUTPUT); // Устанавливаем выход P7, как выход
|
|
|
|
// Проверка инициализация библиотеки pcf8574
|
|
Serial.print("Init pcf8574...");
|
|
if (pcf8574.begin()){
|
|
Serial.println("OK");}
|
|
else{
|
|
Serial.println("ERROR");}
|
|
delay(50); // Необходимо время для инициализации
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
uint8_t val0 = pcf8574.digitalRead(P0); // Чтение состоянии вывода PO
|
|
uint8_t val1 = pcf8574.digitalRead(P1); // Чтение состоянии вывода P1
|
|
uint8_t val2 = pcf8574.digitalRead(P2); // Чтение состоянии вывода P2
|
|
uint8_t val3 = pcf8574.digitalRead(P3); // Чтение состоянии вывода P3
|
|
|
|
if (val0 == HIGH) pcf8574.digitalWrite(P4, HIGH); // Если кнопка не нажата, светодиод не горит
|
|
else pcf8574.digitalWrite(P4, LOW); // Если кнопка нажата, светодиод горит
|
|
delay(5); // Пауза
|
|
|
|
if (val1 == HIGH) pcf8574.digitalWrite(P5, HIGH); // Если кнопка не нажата, светодиод не горит
|
|
else pcf8574.digitalWrite(P5, LOW); // Если кнопка нажата, светодиод горит
|
|
delay(5); // Пауза
|
|
|
|
if (val2 == HIGH) pcf8574.digitalWrite(P6, HIGH); // Если кнопка не нажата, светодиод не горит
|
|
else pcf8574.digitalWrite(P6, LOW); // When Button is Released
|
|
delay(5); // Пауза
|
|
|
|
if (val3 == HIGH) pcf8574.digitalWrite(P7, HIGH); // Если кнопка не нажата, светодиод не горит
|
|
else pcf8574.digitalWrite(P7, LOW); // Если кнопка нажата, светодиод горит
|
|
delay(5); // Пауза
|
|
}
|