клавиатура, вывод символов

kui
Offline
Зарегистрирован: 09.10.2012
Здравствуйте, если можно подскажите. Осваиваю клавиатуру с помощью библиотеки <Keypad.h> и попал в ступор по поводу вывода символов, а именно вот в этом скетче нажимаем клавишу - получаем значение символов, но как вывести к примеру "22" или "78" то есть два или три символа подряд ума не приложу (пробовал через стринг или массив но не получается). Если можно помогите, достаточно просто подсказки или если не трудно просто кусок кода. Спасибо

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
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};  //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
pinMode(10, OUTPUT); // к десятому выводу подключаем пьезо пищалку  
}

void loop(){
  char key = keypad.getKey();


  if (key != NO_KEY){
    Serial.println(key);
  digitalWrite(10, HIGH);// в случае нажатия клавиатуры пъезо пищалка пищит
delay (5);// время пищалки пъезы
digitalWrite(10, LOW);// выключение пъезы
}
}

 

maksim
Offline
Зарегистрирован: 12.02.2012

Вам нужно собрать строку, для этого нужно определиться как она будет заканчиваться: либо по нажатию кнопки окончания ввода, либо по прохождении времени после последнего нажатия, либо по размеру строки (по количеству нажатий).
Затем объявляете объект String или массив типа char. И просто собираете строку. Вот пример с массивом и с ограничением по колличеству символов:

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
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};  //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
char pass[5] = "";
byte i = 0;

void setup(){
  Serial.begin(9600);
  pinMode(10, OUTPUT); // к десятому выводу подключаем пьезо пищалку  
}

void loop(){
  char key = keypad.getKey();
  if(key != NO_KEY){
    pass[i] = key;
    i++;
    //Serial.println(key);
    digitalWrite(10, HIGH);// в случае нажатия клавиатуры пъезо пищалка пищит
    delay (5);// время пищалки пъезы
    digitalWrite(10, LOW);// выключение пъезы
  }
  if(i == 3){
    pass[i] = 0;
    Serial.println(pass);
    i = 0;
  }
}

 

kui
Offline
Зарегистрирован: 09.10.2012

maksim большое спасибо за помощь