Подскажите как опросить клавиатуру?
- Войдите на сайт для отправки комментариев
Вс, 26/10/2014 - 22:11
Подскажите как опросить клавиатуру из 5 кнопок. Четыре кнопки - это код. Пятая результат.
Написал пока мало:
#include <Bounce.h>
const int ledPin[] = {8,9,10,11,12};
const int errLed = 13;
/*Кнопки*/
Bounce KH1 = Bounce(6, 1);
Bounce KH2 = Bounce(5, 1);
Bounce KH3 = Bounce(4, 1);
Bounce KH4 = Bounce(3, 1);
Bounce KH5 = Bounce(2, 1);
const int OUT = 10;
int KHT[5];
int TEMP[5];
boolean FKH1 = false;
boolean FKH2 = false;
boolean FKH3 = false;
boolean FKH4 = false;
boolean FKH5 = false;
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
for (int i=0; i<5; i++){
pinMode(ledPin[i], OUTPUT);
digitalWrite(ledPin[i], LOW);
}
pinMode(errLed, OUTPUT);
digitalWrite(errLed, LOW);
Serial.begin(9600);
}
int btnState(){
if (KH1.update()) { //если произошло событие
if (KH1.read()==0) { //если кнопка нажата
return 1;
}
else return 0;
}
if (KH2.update()) { //если произошло событие
if (KH2.read()==0) { //если кнопка нажата
return 2;
}
else return 0;
}
if (KH3.update()) { //если произошло событие
if (KH3.read()==0) { //если кнопка нажата
return 3;
}
else return 0;
}
if (KH4.update()) { //если произошло событие
if (KH4.read()==0) { //если кнопка нажата
return 4;
}
else return 0;
}
if (KH5.update()) { //если произошло событие
if (KH5.read()==0) { //если кнопка нажата
return 5;
}
else return 0;
}
}
void nLed(){
digitalWrite(ledPin[4], HIGH);
delay(3000);
digitalWrite(ledPin[4], LOW);
for (int i=0; i<4; i++){
digitalWrite(ledPin[i], LOW);
}
}
void loop() {
do
{
} while (btnState() != 5 );
nLed();
}
Дальше не знаю как. Если кто знает, подскажите пожалуйста.
5 кнопок - я за решение резистивное одной ножкой
купите или найдите щиток LCDShield там все хорошо
http://chingachgook.net/arduino/podklyuchenie-lcd-keypad-shield-k-arduino.html
// include the library code: #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(8, 9, 4, 5, 6, 7); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.setCursor(0,0); lcd.print("LCD Key Shield"); lcd.setCursor(0,1); lcd.print("Press Key:"); } void loop() { int x; x = analogRead (0); lcd.setCursor(10,1); if (x < 60) { lcd.print ("Right "); } else if (x < 200) { lcd.print ("Up "); } else if (x < 400){ lcd.print ("Down "); } else if (x < 600){ lcd.print ("Left "); } else if (x < 800){ lcd.print ("Select"); } }я бы себе просто купил и забыл массу проблем
я повторял просто на весу подпаяв резисторы
Это тоже не решает проблему. Это еще одно решение как подключить кнопки. Проблема что дальше делать? В моем коде уже есть опрос состояний кнопок, а вот как дальше я не могу дойти... Нужно ввести четырехзначный код, причем если два раза ошибся то блок на минуту, а пятой кнопкой результат.
String Read_Keyboard; String Pass="1234"; void loop() { do { if (btnState() !=0) Read_Keyboard=Read_Keyboard+String(btnState(), DEC); } while (btnState() != 5 ); if ( Read_Keyboard == Pass) { // Выполняем код } Read_Keyboard =""; nLed(); }Это только направление куда идти. Так слишком много нюансов, например дребезг кнопок...
О! Свежая мысль! Спасибо:) От дребезга кнопок избавила библиотека bounce.h