Я написал код, когда на клавиатуре нажимается какая-либо клавиша, это значение отображается на ЖК-дисплее, но проблема в том, что если мне нужно нажать только «1» и «4», это значение отображается как «V1 V4»,с тремя промежутками между ними, поэтому кто-то может предложить мне, как печатать их рядом, если нажата какая-либо клавиша.
Вот код:
#include <LiquidCrystal.h>
#include <Keypad.h>
int i=0;
int b=0;
int x =0;
int y =0;
int z =0;
int led1=0;
int led2=0;
int led3=0;
int led4=0;
int led5=0;
int led6=0;
int led7=0;
int led8=0;
char option;
int flag=0;
int flag1=0;
int flag2=0;
int flag3=0;
int show=0;
LiquidCrystal lcd (A0,A1,A2,A3,3,4);
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins [ROWS] = {7,6,5,11}; //Asignacion pines filas
byte colPins [COLS] = {8,9,10,2}; //Asignacion pines columnas
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); // variable_mapa de la matriz
void setup() {
Serial.begin(9600);
}
void loop()
{
x=0;
z=0;
y=0;
option=customKeypad.getKey();
MSNinicio();
if(option) // Check for a valid key.
{
switch(option)
{
case 'A':
lcd.clear();
lcd.setCursor (0, 0);
lcd.print("V channel selected");
delay(1000);
lcd.clear();
lcd.setCursor (0, 0);
lcd.print("Select V ports");
lcd.setCursor (0,1);
delay(1000);
flag1=1;
voltage();
break;
case 'B':
lcd.clear();
lcd.setCursor (0, 0);
lcd.print("I channel selected");
delay(1000);
lcd.clear();
lcd.setCursor (0, 0);
lcd.print("Select I ports");
lcd.setCursor (0,1);
delay(1000);
flag2=1;
current();
break;
case 'C':
lcd.clear();
lcd.setCursor (0, 0);
lcd.print("TK channel selected");
delay(1000);
lcd.clear();
lcd.setCursor (0, 0);
lcd.print("Select TK ports");
lcd.setCursor (0,1);
delay(1000);
thermocouple();
break;
}
}
}
void MSNinicio(){
lcd.clear();
lcd.begin(20, 4);
lcd.setCursor (0, 0);
lcd.print("A-VOLTAGE CHANNELS");
lcd.setCursor (0, 1);
lcd.print("B-CURRENT CHANNELS");
lcd.setCursor (0, 2);
lcd.print("C-THERMO CHANNELS");
lcd.setCursor (0, 3);
lcd.print("4-OUTPUT PORTS");
delay(500);
}
void voltage() {
while(z<1)
{
option=customKeypad.getKey(); // CHOOSE ZONE
switch(option)
{
case '1':
led1=1;
break;
case '2':
led2=1;
break;
case '3':
led3=1;
break;
case '4':
led4=1;
break;
case '5':
led5=1;
break;
case '6':
led6=1;
break;
case '7':
led7=1;
break;
case '8':
led8=1;
break;
case '#':
MSNinicio();
z=z+1;
break;
}
delay(100);
if(led1==1){
lcd.clear();
lcd.setCursor (0, 0);
lcd.print("V1");
}
else {
lcd.print(" ");
}
if(led2==1){
// lcd.clear();
lcd.setCursor (2, 0);
lcd.print("V2");
}
else {
lcd.print(" ");
}
if(led3==1){
// lcd.clear();
lcd.setCursor (4, 0);
lcd.print("V3");
}
else {
lcd.print(" ");
}
if(led4==1){
// lcd.clear();
lcd.setCursor (6, 0);
lcd.print("V4");
}
else {
lcd.print(" ");
}
if(led5==1){
//lcd.clear();
lcd.setCursor (8, 0);
lcd.print("V5");
}
else {
lcd.print(" ");
}
if(led6==1){
// lcd.clear();
lcd.setCursor (10, 0);
lcd.print("V6");
}
else {
lcd.print(" ");
}
if(led7==1){
// lcd.clear();
lcd.setCursor (12, 0);
lcd.print("V7");
}
else {
lcd.print(" ");
}
if(led8==1){
// lcd.clear();
lcd.setCursor (14, 0);
lcd.print("V8");
}
else {
lcd.print(" ");
}
}
}