Ввод значений с матричной клавиатуры 4х4.

Psychedelic41
Offline
Зарегистрирован: 19.05.2016

Есть дисплей 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);
  }
  }

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Если вы про код,  который после lcd.print("TD="),тогда в строчке 40 напишите

lcd.print(sensorValue + '0');

а ещё проще: 

lcd.print(String(sensorValue));

 

Psychedelic41
Offline
Зарегистрирован: 19.05.2016

не помогло. цифры так же исчезают и появляются через раз

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

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

Psychedelic41
Offline
Зарегистрирован: 19.05.2016

нужно этому значению константу задать? ноль например. А как тогда ввести туда значение, чтобы оно сравнивалось, да и вообще вводилось?