пытаюсь подключить 16 кнопок через CD74HC4067 к ардуино нано + библиотека EncButton
кнопки подключены через землю, EN от мультиплексора также подключён к земле
написал вот такой код
он работает, но есть проблема с тем, что в сериал порт не приходит первое нажатие каждой кнопки
порядок моих действий:
нажал кнопку номер 1 первый раз - сериал порт - пусто
нажал кнопку номер 1 второй\третий и тд раз - сериал порт - кнопка номер 1 нажата
нажал кнопку номер 2 первый раз - сериал порт - пусто
нажал кнопку номер 2 второй\третий и тд раз - сериал порт - кнопка номер 2 нажата
опять нажимаем кнопку номер 1
нажал кнопку номер 1 первый раз - сериал порт - пусто
нажал кнопку номер 1 второй\третий и тд раз - сериал порт - кнопка номер 1 нажата
вопрос скорее в том, как соединить этот мультиплексор и библиотеку с кнопками
да, мне принципиально использовать расщиритель и\о портов - если можете посоветовать какие-то другие варианты вместо CD74HC4067 - буду очень признателен
кнопки подключены через землю, EN от мультиплексора также подключён к земле
написал вот такой код
C++:
#include <Arduino.h>
#include <SPI.h>
#include <EncButton.h>
const int s0 = 9;
const int s1 = 10;
const int s2 = 11;
const int s3 = 12;
const int SIG_pin = 3;
const int numChannels = 16;
VirtButton buttons[numChannels];
void setup()
{
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(SIG_pin, INPUT_PULLUP);
Serial.begin(9600);
}
byte readMux(byte channel)
{
digitalWrite(s0, channel & 0x01);
digitalWrite(s1, channel & 0x02);
digitalWrite(s2, channel & 0x04);
digitalWrite(s3, channel & 0x08);
return digitalRead(SIG_pin);
}
void loop()
{
for (int i = 0; i < numChannels; i++)
{
buttons[i].tick(readMux(i));
if (buttons[i].click())
{
Serial.print("Button at channel ");
Serial.print(i);
Serial.println(" is clicked");
}
}
}
порядок моих действий:
нажал кнопку номер 1 первый раз - сериал порт - пусто
нажал кнопку номер 1 второй\третий и тд раз - сериал порт - кнопка номер 1 нажата
нажал кнопку номер 2 первый раз - сериал порт - пусто
нажал кнопку номер 2 второй\третий и тд раз - сериал порт - кнопка номер 2 нажата
опять нажимаем кнопку номер 1
нажал кнопку номер 1 первый раз - сериал порт - пусто
нажал кнопку номер 1 второй\третий и тд раз - сериал порт - кнопка номер 1 нажата
вопрос скорее в том, как соединить этот мультиплексор и библиотеку с кнопками
да, мне принципиально использовать расщиритель и\о портов - если можете посоветовать какие-то другие варианты вместо CD74HC4067 - буду очень признателен