Добрый день.
никак не могу понять, что делаю не так. Суть в том, что мне надо вывести значение нажатой клавиши на экран. По отдельности все работает. Прерывание срабатывает, клавиатура читается, в Serial port значение клавиши выводится. На экранчик текст тоже выводится.
Но окгда вов ремя прерывания я преобразовываю char в char* что-то идет не так, получаемое значение не выводится на экран, хотя если переменную char* задать в явном виде, то она выводится. Подскажите, что не так.
#include <Keypad.h>
#include <TimerOne.h> // Подключаем библиотеку
#include "U8glib.h"
U8GLIB_ST7920_128X64 u8g(10, 11, 12, U8G_PIN_NONE); // настройка пинов
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' }
};
char k;
char* u;
byte rowPins[ROWS] = { 6, 7, 8, 9 }; //connect to the row pinouts of the keypad
byte colPins[COLS] = { 2, 3, 4, 5 }; //connect to the column pinouts of the keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void toggle() {
k = keypad.getKey();
if (k) {
u = &k;
Serial.print(k);
Serial.print(" ");
Serial.println(u);
}
}
void setup() {
Serial.begin(9600);
Timer1.initialize(10000); //в мкс
Timer1.attachInterrupt(toggle);
}
void loop() {
u8g.firstPage();
do {
u8g.setFont(rus6x12);
u8g.drawStr(0, 22, "Тест 2");
u8g.drawStr(0, 35, u);
} while (u8g.nextPage());
delay(1000);
}
