Код (C++): #include <Keypad.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); 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] = {11,10,9,8}; //connect to the row pinouts of the keypad byte colPins[COLS] = {7,6,5,4}; //connect to the column pinouts of the keypad Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); unsigned int numar1=0, numar2=0; void setup(){ Serial.begin(9600); lcd.begin(); // initialize the lcd lcd.backlight(); } void loop() { char key = keypad.getKey(); if(key ='A'){ if (key != NO_KEY && (key=='1'||key=='2'||key=='3'||key=='4'||key=='5'||key=='6'||key=='7'||key=='8'||key=='9'||key=='0')){ numar1=(numar1*10)+int(key-'0'); lcd.setCursor(0,0); lcd.print(numar1); } } if(key ='B'){ if (key != NO_KEY && (key=='1'||key=='2'||key=='3'||key=='4'||key=='5'||key=='6'||key=='7'||key=='8'||key=='9'||key=='0')){ numar2=(numar2*10)+int(key-'0'); lcd.setCursor(0,0); lcd.print(numar1); } } }
Прошу подсказать, кто может. Нужно ввести с матричной клавиатуры на LCD 1602 две переменных, пригодных для независимых операций (сброс, корректировка). Примерным образом - нажимаем клавишу "А", вводим число в одной строке дисплея, затем нажимаем "В" и вводим второе число в другой строке. Отношения к программированию не имею, написал как мог два скетча, не судите строго, если неграмотно. Оба скетча не работают. В чем ошибка?
Второй нерабочий скетч Код (C++): #include <Keypad.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); const byte ROWS = 4; //4 rows const byte COLS = 4; //3 columns //Define the Keymap char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte rowPins[ROWS] = {11,10,9,8}; //connect to the row pinouts of the keypad byte colPins[COLS] = {7,6,5,4}; //connect to the column pinouts of the keypad long first = 0; long second = 0; //Create the keypad Keypad kpd = Keypad (makeKeymap(keys), rowPins, colPins, ROWS, COLS); void setup() { Serial.begin(9600); lcd.begin(); // initialize the lcd lcd.backlight(); } void loop() { char key = kpd.getKey(); switch(key) { if(key ='A'){ case '0' ... '9': // This keeps collecting the first value until a operator is pressed "+-*/" lcd.setCursor(0,0); first = first * 10 + (key - '0'); lcd.print(first); break; } } switch(key) { if(key ='B'){ case '0' ... '9': // This keeps collecting the first value until a operator is pressed "+-*/" lcd.setCursor(0,1); second = second * 10 + (key - '0'); lcd.print(second); break; } } }