+2 голосов
Здравствуйте,

помогите пожалуйста решить вопрос подключения 8 кнопок к Arduino UNO через расширитель портов PCF8574.

Нужна схема подключения и, желательно, подробное объяснение - я еще новичок.

Есть еще один нюанс - на расширителе есть порт int, который можно использовать для отслеживания события нажатия любой кнопки. Т.е. можно ли подключить порт int расширителя к порту аппаратного прерывания Arduino и считывать состояние кнопок по его срабатыванию.
(13 баллов) 1 2 3

1 Ответ

+2 голосов
 
Лучший ответ

Если у вас данная схема присутствует в составе конвертера под дисплей LCD1602

, то можно оставить эту идею, потому что как минимум одна кнопка , подключенная к выводу номер 3 отпрашиваться не может. Так как там стоит транзистор :

(Выводы обозначены буквой Р)

Если же схема не на печатной плате , то вот её распиновка.

Подключение предельно простое:

  • Vcc _+5v
  • Gnd _gnd
  • SDA_SDA
  • SCL_SCL
  • /INT _ D2 или D3

Причем при подключении прерываний указать D2 как 0, а D3 как 1.

Лучше всего для его подключения использовать библиотеку <PCF8574.h>.

#include <PCF8574.h>

#include <Wire.h>

PCF8574 pcf20(0x20);
//------^-------
//Это просто имя, хоть в им Ленина называйте  

void setup() {

pcf20.begin();

//В дальнейшем оно тоже указывается

attachInterrupt(0, read,FALLING);
     //Второй пин


pcf20.write(4, LOW);

pcf20.write(5, LOW);

pcf20.write(6, LOW);

pcf20.write(7, LOW);

}

 

void loop() {

 

}

 

void read()
{//Здесь можно считать состояние всех кнопок по очереди
pcf20.digitalRead(0);

}

(3.1 тыс. баллов) 14 20 41
выбран
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.

    За этот месяц ещё никого.

    ...