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