Рабочий код чтения кнопок для Arduino Leonardo и Micro - проверно на китайском Arduino Pro Micro .
выдает клавиатурные сочетания Win+A, Win+B ... Win+G
удобно для настройки через быстрый запуск
http://pccar.ru/showpost.php?p=279247&postcount=54
Код:
int analogPin=A0;
int data;
int myRes[7]={291,197,160,232,263, 66,113}; // значения установлены опытным путем
char myKey[7]={'a','b','c','d','e','f','g'}; //х.з. буквы какие-то
int n=7; //размер массивов выше
int i_old=n+1; //надо так (типа война с дребезгом, хотя тут его нет)
int i;
void setup()
{
// Serial.begin(9600);
pinMode(analogPin,INPUT);
digitalWrite(analogPin,HIGH);
Keyboard.begin();
}
void loop()
{
data=analogRead(analogPin);
// Serial.println(data);
for (i=0;i<n;i=i+1)
{
if(data>myRes[i]-15 && data<myRes[i]+15 && i_old!=i)
{
i_old=i;
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press(myKey[i]);
delay(100);
Keyboard.releaseAll();
}
if(data>1000) { i_old=n+1; }
}
delay(50);
}
Резистивных кнопок у меня 7 шт, номиналы у них 2кОм, 4кОм ... 14кОм (хотя не суть).
Опять ВАЖНО: К ардуине подключаюсь к GND и А0 (делитель самому делать не надо).
P.S. Перевод выражения "подтяжка вверх" (стырено с ардуино.ру):
Если вход/выход (pin) был установлен в режим вход (INPUT), то функция digitalWrite со значением HIGH будет активировать внутренний 20K нагрузочный резистор. Подача LOW в свою очередь отключает этот резистор. Нагрузочного резистра достаточно чтобы светодиод, подключенный к входу, светил тускло. Если вдруг светодиод работает, но очень тускло, возможно необходимо установить режим выход (OUTPUT) функцией pinMode().