Ввод с Мембранной клавиатуры 4 х 4
- Войдите на сайт для отправки комментариев
Ср, 11/11/2015 - 10:06
Добрый день! Мембранная клавиатура с библиотекой Keypad, передает нажатые символы по одному. Подскажите как мне получить число в переменную Byte например 12. Планирую настраимать с ее помощью RTC часы и вводить время таймеров. Вот код в котором с которым я эксперементирую.
#include <Keypad.h> // Подключаем библиотеку const byte ROWS = 4; // 4 строки const byte COLS = 4; // 4 столбца char array [10]; char str1[5]; int i =0; byte t; 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}; byte colPins[COLS] = {7, 6, 5, 4}; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); void setup(){ Serial.begin(9600); } void loop(){ char key = keypad.getKey(); // читаем клавиатуру if (key){ // если символ был нажат Serial.println(key); // Передаем название нажатой клавиши в сериал порт if (key == '#') {str1[i] = '\0'; Serial.println(str1); for(int a = 0; a<5; a++) { t |= str1[a] << (4-a); } Serial.print(t); Serial.println (" eto t"); // t = byte(str1[0]); i = 0; } //tone(3, (int)key*10, 300); // Издаем звуковой сигнал длиной 300 миллисекунд // array [i] = key; //i++; //for (int a = 0; a < 2; a++) str1[i] = key; i++;}
Гдетто использовал нижепереведенное для ввода шестизначного параметра частоты.
Выод на LCD опционно...
Выводить на экран у меня тоже получается с помощью строки или массива.
А вот как потом из него перекинуть в числовую переменную?? Чтоб образовалось одно число.
Выводить на экран у меня тоже получается с помощью строки или массива.
А вот как потом из него перекинуть в числовую переменную?? Чтоб образовалось одно число.
А в чем, собственно проблема? В школе программирование не преподавали?
тысячи*1000+сотни*100+десятки*10+единицы
поясните подробнее алгоритм. Допустим в строке число 2 и 3. что с ними делать чтоб получилось 23.
поясните подробнее алгоритм. Допустим в строке число 2 и 3. что с ними делать чтоб получилось 23.
вы серьезно?
2*10+3
Большое спасибо. Идея теперь понятна. Прошу прощения за глупые вопросы. Постараюсь воспроизвести это програмно.
.так ведь в 17 строке, где присвоение result и сидит ответ на Ваш исходный вопрос , а вывод на экран вторичен.
Я сделал вот так. Может коряво но работает. Была проблема с кнопкой 0. Никак не хотела выводится. Пришлось извратиться.