Ввод значений с матричной клавиатуры 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? Поняли, в чём дело?
нужно этому значению константу задать? ноль например. А как тогда ввести туда значение, чтобы оно сравнивалось, да и вообще вводилось?