faculty_project/расширитель портов.txt

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); // Пауза
}