Проблема с вводом нескольких чисел и записи их в переменные
- Войдите на сайт для отправки комментариев
Сб, 12/12/2015 - 19:37
Возник вопрос, как с клавиатуры 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);
}
}