Я решил сделать midi клавиатуру. Мне нужно подключить 88 кнопок к Arduino Leonardo (14 цифровых входов). Пожалуйста, подскажите схему и софт. Схема с подключением n входных регистров (http://amperka.ru/product/74hc165-shift-in-register). Софт должен опрашивать все 88 кнопок, и в зависимости от того, какая нажата, или не нажата, "нажимать" ту или иную клавишу (выступать в роли клавиатуры). Заранее спасибо!
Понадобится 11 регистров (88 клавиш, один регистр - 8 входов, соответственно 88:8=11) SER 11-ого регистра к земле QH 11-ого к SER 10-ого QH 10-ого к SER 9-ого * 9 * 8 * 8 * 7 * 7 * 6 * 6 * 5 * 5 * 4 * 4 * 3 * 3 * 2 * 2 * 1 * 1 с пином 12 Arduino Пин 13 (SCK) и 10 (SS) общие для всех регистров. Код (C++): #include <LineDriver.h> #include <SPI.h> #include <SPI_Bus.h> SPI_Bus reg(_88bit, 10, MSBFIRST); void setup() { Serial.begin(9600); reg.setSelectionPolicy(SPI_Bus::SELECT_BEFORE); } void loop() { static uint64_t last_input_states = 0; uint64_t states = reg.read64bits(); //Тут может быть Ваш код для чтения первых 64 клавиш :) uint64_t last_input_states = 0; uint64_t states = reg.read64bits(); //Тут может быть Ваш код для чтения оставшихся клавиш }
Тогда есть выбор: 1) 11 входных регистров, с необходимостью создания печатной платы, на которой эти регистры будут расположены. 2) купить PS/2 клавиатуру за 200..400 руб, и вытащить из нее контроллер. Есть готовая библиотека: http://playground.arduino.cc/Main/PS2Keyboard, но не могу гарантировать ее работоспособность (хотя информация о библиотеке расположена на оффициальном сайте Arduino).