Seeedstudio Electronic Brick - 9 Button KeyPad Module
- Войдите на сайт для отправки комментариев
Чт, 21/07/2011 - 04:05
Имееться девятикнопочная клавиатура www.robotshop.com/seeedstudio-electronic-brick-9-button-keypad-module.html.
Данная клавиатура соединятеся с Arduino по средствам шины схематическое изображение которой представлено на изображении ниже
Не могу разобраться как с ней работать. Все что я смог найти это пример кода из которого мне ничего не понятно.
int KeyOPin = 5; int KeyIPin = 2; unsigned char i; unsigned char n; unsigned char key = 0; unsigned char oldkey = 0; unsigned char press = 0; unsigned char reg = 1; void setup() { Serial.begin(9600); for(i=0;i<3;i++) pinMode((KeyOPin + i), OUTPUT); for (i=0;i<3;i++) pinMode(( KeyIPin + i), INPUT); } void loop() { scankey(); if (press) { press=0; Serial.print("Keycode is "); Serial.println(oldkey,HEX); } } void scankey() { reg = 1; for (i=0;i<3;i++) { for (n=0;n<3;n++) { if((reg>>n)&1) digitalWrite(KeyOPin+n , HIGH); else digitalWrite(KeyOPin+n , LOW); } for (n=0;n<3;n++) { if(digitalRead(KeyIPin + n)) { key = key | (1<<(4+n)); key = key | reg ; } } reg = reg << 1; } if (key & 0xf8) { if (key!=oldkey) { press = 1; oldkey = key ; } } else oldkey = 0; key = 0; }
Обьясните пожалуйста как это работает или дайте ссылку на ознакомительный материал.
Найти бы схему этого модуля. А так только гонять этот код. Модуль как я понял использует 6 портов со 2го по 7 включительно.
А дальше я пока не вкурил. Остаётся проверить живучесть кода Вам. Когда кнопка любая нажата press=1 , а дальше снять значение с переменной oldkey
Тому кто написал этот код надо руки вырвать. В действительности все работает очень просто. Если не брать во внимание подтягивающие резисторы то электрическая схема данной клавиатуры имеет вид представленный на изображении ниже
То есть необходимо поочередно подавать напряжение на входы №5,6,7. При нажатой кнопке сигнал появиться на одном из выходов №4,3,2