Ввод значений с матричной клавиатуры 4х4.
- Войдите на сайт для отправки комментариев
Вс, 26/06/2016 - 19:02
Есть дисплей 16х2 и матричная клавиатура 4х4. Просто выводить буквы и цифры на дисплей получается без проблем, но стоит попробовать ввести цифры как значение, то получается полный трэш. В нижеприведенном скетче как раз эта проблема, цифры в строку TD либо не вводятся, либо вводятся на секунду и исчезают. В чем проблема? Все что можно перерыл.
#include <Keypad.h>
#include <LiquidCrystalRus.h>
LiquidCrystalRus lcd(12, 11, 5, 4, 3, 2);
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {9, 8, 7, 6}; //connect to the column pinouts of the keypad
char pass[5] = "";
byte i = 0;
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
Serial.begin(9600);
pinMode(6,INPUT_PULLUP);
pinMode(13,OUTPUT);
lcd.begin(16, 2);
}
void loop() {
char key = keypad.getKey();
lcd.clear();
int val = analogRead(A0);
char sensorValue = key;
int vax = 0;
val = val * 500.0/1023;
lcd.setCursor(0,0);
lcd.print("TD=");
lcd.setCursor(3,0);
if (key != NO_KEY){
pass[i] = key;
i++;
lcd.print(sensorValue);
}
if(i == 3){
pass[i] = 0;
lcd.print(sensorValue);
i = 0;
}
delay(500);
vax = val * 2.5;
lcd.setCursor(0,1);
lcd.print("Температура");
lcd.setCursor(12,1);
lcd.print(vax);
delay(500);
Serial.println(val);
if((vax)>(sensorValue)){
digitalWrite(13,LOW);
}
if((vax)<(sensorValue)){
digitalWrite(13,HIGH);
}
}
Если вы про код, который после lcd.print("TD="),тогда в строчке 40 напишите
а ещё проще:
не помогло. цифры так же исчезают и появляются через раз

Задумайтесь над строкой 31. Что будет, если ни одна клавиша не нажата? Какое значение примет sensorValue? Поняли, в чём дело?
нужно этому значению константу задать? ноль например. А как тогда ввести туда значение, чтобы оно сравнивалось, да и вообще вводилось?