Доброго времени суток. При создании кпп и buttonbox-а столкнулся с проблемой:
При нажатии нескольких кнопок срабатывают и другие, не нажатые. Плата Pro Micro. Скетч:
#include <Keypad.h>
#include <Joystick.h>
#define ENABLE_PULLUPS
#define NUMBUTTONS 32
#define NUMROWS 9
#define NUMCOLS 4
byte buttons[NUMROWS][NUMCOLS] = {
{0,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}
};
byte rowPins[NUMROWS] = {21,20,19,18,15,14,16,10};
byte colPins[NUMCOLS] = {9,8,7};
Keypad buttbx = Keypad( makeKeymap(buttons), rowPins, colPins, NUMROWS, NUMCOLS);
Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,
JOYSTICK_TYPE_JOYSTICK, 32, 0,
false,false,false,false,false,false,false,false,false,false,false);
void setup() {
Joystick.begin();
}
void loop() {
CheckAllButtons();
}
void CheckAllButtons(void) {
if (buttbx.getKeys())
{
for (int i=0; i<LIST_MAX; i++)
{
if ( buttbx.key[i].stateChanged )
{
switch (buttbx.key[i].kstate) {
case PRESSED:
case HOLD:
Joystick.setButton(buttbx.key[i].kchar, 1);
break;
case RELEASED:
case IDLE:
Joystick.setButton(buttbx.key[i].kchar, 0);
break;
}
}
}
}
}
Схема подключения - 21,20,19,18,15,14,16,10 идут на крышку (H-шифтер), 9 идет на рычаг кпп. При включении передачи контакт 9 замыкается с 21 или 20 или… Дальше от контакта 8 и 7 идут провода через тактовые кнопки с пинам с 21 по 10. При условном включении контактов 21 и 9 и при нажатии нескольких кнопок, ПК показывает активацию других кнопок, которые не замкнуты физически. Использую подобную схему, но 8 на 1 а не 5 на 1( 8 кнопок на одном пине)