Опубликовано

8-разрядный расширитель портов PCF8574

По материалам руководства к набору “Умный дом на базе Arduino. Большой набор + КНИГА

Если вы исчерпали для подключения внешних устройств (датчиков, модулей, светодиодов и др.) все выводы Arduino (для Arduino UNO это 6 аналоговых и 14 цифровых), то модуль расширителя портов (рис. M4.1) поможет вам добавить дополнительно 8 контактов (P0 … P7). Эти контакты можно использовать как в качестве входов (например, для чтения сигнала с датчика), так и для выходов (например, для включения светодиодов). Модули расширителя портов работают на шине I2C, и, если подключить в проекте последовательно 8 таких устройств, вы соответственно получите дополнительно 8 × 8 = 64 контакта для ввода и вывода.

Внешний вид, назначение контактов

M4-1-PCF8574

Рис. M4.1. 8-разрядный расширитель портов PCF8574

Основные характеристики

Наименование Значение
Рабочий режим питания, В от 2,5 до 6 В
Низкий ток покоя, мА максимум 10 мА
Адресация на 3 вывода аппаратных адресов для использования до 8 устройств (до 16 устройств при использовании PCF8574A)

Схема подключения

M4-2-PCF8574

Рис. M4.2. Схема подключения кнопки и светодиода

Программный код

  1. Скачайте по ссылке https://github.com/skywodd/pcf8574_arduino_library библиотеку PCF8574/PCF8575 Arduino library для работы Arduino с расширителем PCF8574.
  2. Скачав библиотеку, выберите ее и установить с помощью команды Скетч | Подключить библиотеку | Добавить ZIP библиотеку…
  3. Загрузите скетч из листинга M4.1.

Листинг M4.1. Подключение расширителя портов PCF8574

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <Wire.h>
 
#include "PCF8574.h" //Библиотека для расширителя портов.
 
 
 
PCF8574 expander; //создадим объект класса PCF8574 с расширителем
 
#define pinLed 0 //Номер пина светодиода на расширителе (P0)
 
#define pinButton 1 //Номер пина кнопки на расширителе (P1)
 
 
 
void setup(){
 
expander.begin(0x20); / Инициализация расширителя по адресу 0x20
 
 
 
expander.pinMode(pinLed,OUTPUT); //Настройка пина светодиода
 
//(на расширителе) на выход
 
expander.pinMode(pinButton,INPUT_PULLUP); // Настройка пина кнопки
 
//(на расширителе) на вход
 
}
 
 
 
void loop(){
 
if (expander.digitalRead(pinButton)==HIGH)
 
expander.digitalWrite(pinLed, HIGH);
 
else
 
expander.digitalWrite(pinLed,LOW);
 
}

Примечание

Если вы используете для управления проектом со смартфона платформу RemoteXY, закомментируйте в файле PCF8574.h библиотеки PCF8574 строку:

1
#define PCF8574_INTERRUPT_SUPPORT

Это строка номер 36. Тем самым вы отключите у расширителя поддержку прерываний, но зато предотвратите конфликт приложения RemoteXY и расширителя PCF8574, которые используют одинаковый вектор прерываний.


Добавить комментарий