AD KeyBoard Module

Ard_Roman_Ard
Offline
Зарегистрирован: 14.12.2015

Приветствую.

Помогите пожалуйста.

Не могу разобраться как правильно подключается AD KeyBoard Module к Arduino MEGA 2560 через плату расширения (MEGA Sensor Shild V2.3).

И написать код проверки работы правильной работы AD KeyBoard Module, т.е. на AD KeyBoard Module есть 5 кнопок, нажимая на любую, должен загореться тестовый светодиод, подключенный к, например pin 8.

AD KeyBoard Module подключаю к аналоговому pin А6, но не уверен в правильности (кабель стандартный, 3-х проводной. но по моему

провода в нем перепутаны, т.к. например провод с GRD приходит на 5В, а провод с 5В приходит на GRD, сигнальный провод вроде там где должен быть) самого кабеля с помощью которого подключаю AD KeyBoard Module к плате расширения.

Помогите,  подскажите, я заблуждаюсь в браке кабеля или нет? и с помощью какой программы можно проверить сам AD KeyBoard Module, желательно, что бы сигналы с кнопок отображались на мониторе последовательного порта.

Спасибо.

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014
Ard_Roman_Ard
Offline
Зарегистрирован: 14.12.2015

там нет примера программы для AD KeyBoard Module

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Прошу прощения наверное чтото не то попало, вот еще раз http://arduinostarterskit.sell.xpshou.com/pz5e93c3d-arduino-module-5-key-keyboard-module.html

И на всякий случай скопировал код от туда

/ / ADKeyboard Module
int adc_key_val [5] = {50, 200, 400, 600, 800};
int NUM_KEYS = 5;
int adc_key_in;
int key = -1;
int oldkey = -1;
void setup ()
{
pinMode (13, OUTPUT); / / we'll use the debug LED to output a heartbeat
Serial.begin (9600); / / 9600 bps
}
void loop ()
{
adc_key_in = analogRead (0); / / read the value from the sensor
digitalWrite (13, LOW);
key = get_key (adc_key_in); / / convert into key press
 
if (key! = oldkey) / / if keypress is detected
{
delay (50); / / wait for debounce time
adc_key_in = analogRead (0); / / read the value from the sensor
key = get_key (adc_key_in); / / convert into key press
if (key! = oldkey)
{
oldkey = key;
if (key> = 0) {
digitalWrite (13, HIGH);
switch (key)
{
case 0: Serial.println ("S1 OK");
break;
case 1: Serial.println ("S2 OK");
break;
case 2: Serial.println ("S3 OK");
break;
case 3: Serial.println ("S4 OK");
break;
case 4: Serial.println ("S5 OK");
break;
}
}
}
}
delay (100);
}
/ / Convert ADC value to key number
int get_key (unsigned int input)
{
int k;
for (k = 0; k <NUM_KEYS; k + +)
{
if (input <adc_key_val [k])
{
return k;
}
}
if (k> = NUM_KEYS) k = -1; / / No valid key pressed
return k;

 

Ard_Roman_Ard
Offline
Зарегистрирован: 14.12.2015

я такой код находил, спасибо. Но когда прошивал он не прошивался, выдавал кучу ошибок.

И еще возможно не правильно впринципе подключал сам модуль, он же к А6 пину подключается??

спасибо

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Вот хорошая статья для понимания как считать кнопки с аналового входа с примерами

http://alxarduino.blogspot.com/2013/09/ReadAnalogKeys.html

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Клавиатура занимает аналоговый пин A0 и состоит из 5 кнопок. Прежде чем начать работать с такой клавиатурой желательно определить значения на аналоговом входе Arduino, соответствующие нажатию каждой из кнопок. Разные экземпляры клавиатур могут выдавать разные значения. Это можно сделать при помощи следующего тестового скетча:

int val = 0; // переменная для хранения считываемого значения
void setup()
{
Serial.begin(9600); // установка связи по serial
}
void loop()
{
val = analogRead(A0); // считываем значение
Serial.println(val); // выводим полученное значение
}
Нажимая последовательно кнопки клавиатуры запишем значения, которые соответствуют
разным клавишам. Поскольку значения могут колебаться в некоторых пределах, определим границы диапазонов (LOW-HIGH), в которых обеспечивается однозначная идентификация
клавиш.
Когда будут извесны значения для каждой кнопки, тогда и можно писать что какая кнопка должна делать