Проблема с вводом нескольких чисел и записи их в переменные

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

Возник вопрос, как с клавиатуры 4х4 ввести значения и записать их в переменные? Начал писать код и понял, что не могу понять(извиняюсь за тавтологию), как записать вторую переменную сразу же после первой. Клавиши A-D соответствуют комнатам.

И возникла еще одна проблема- после открытия порта- сразу же валят значения с датчика. Как сделать, чтоб после нажатия клавиши "А" вывод остановился и программа ждала, пока я не введу значения переменных tempmin и tempmax? 

#include <Wire.h> 
#include <BMP085.h>
#include <Keypad.h>
 
BMP085 dps = BMP085(); 
const byte ROWS = 4; 
const byte COLS = 4; 
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; // пины выходы
byte colPins[COLS] = {5, 4, 3, 2}; // пины входы
 
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );   

int tempmin = 0, tempmax = 0; 
int Relay3 = 13; //реле подогрева
long Temperature = 0, Pressure = 0;
 
void setup(void) { 
  Serial.begin(9600); 
  Wire.begin(); 
  delay(1000);
  dps.init();  
}           
void loop(void) { 
  dps.getTemperature(&Temperature);
  char key = keypad.getKey();
  if(key != NO_KEY) {
    Serial.print(key);
    static int variable = 0, variable2 = 0;
    static byte in = 0;
      if(key == 'A') in = 1, Serial.print("\nInput value in C\n");
    else if(key == '#' && in > 0)
    {
      if(in == 1)
      tempmin = variable, Serial.print("\nTemperature min = "), Serial.println(tempmin);
      variable = 0;
      in = 0;
    }
    else if(key >= '0' && key <= '9')
    {
      if(in > 0)
      {
        variable *= 10;
        variable += key-48;
      }
    }
  }
  Serial.println("Temperatute in C");
  Serial.println(Temperature*0.1);
        if (Temperature < tempmin) { // проверить нижний предел температуры
      digitalWrite(Relay3, HIGH); // если ниже допустимого, включить реле
                            }
    else {
      digitalWrite(Relay3, LOW);
         }

      if (Temperature > tempmax) { // проверить верхний предел температуры
      digitalWrite(Relay3, LOW); // если больше допустимого, вsключить реле
                            }
    else {
      digitalWrite(Relay3, HIGH);
         }  
}