Показать сообщение отдельно
Старый 02.12.2013, 15:05   #192
timtman
Старший Пользователь
 
Аватар для timtman
 
Регистрация: 05.04.2013
Возраст: 49
Город: Казань
Регион: 16, 116
Машина: X-Trail T30
Сообщений: 181
timtman has a spectacular aura abouttimtman has a spectacular aura about
По умолчанию

Рабочий код чтения кнопок для 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().
__________________
Ровной дороги! мой проект: X-Trail T30 + Nexus7

Последний раз редактировалось timtman; 11.04.2014 в 11:30.
timtman вне форума   Ответить с цитированием