помогите доработать скетч вывод символов с матричной клавиатуры на семи сегментном индикаторе со сдвиговыми регистрами 74нс595
- Войдите на сайт для отправки комментариев
Чт, 24/08/2017 - 22:53
помогите доработать скетч вывод символов с матричной клавиатуры на семи сегментном индикаторе со сдвиговыми регистрами 74нс595. хрень показывает, разобраться с динамической индикацией мозгов паходу не хватает.
#include <Keypad.h>
#define SCLK 12
#define RCLK 11
#define DIO 10
int i;
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] = {5, 4, 3, 2}; //к каким выводам подключаем управление строками
byte colPins[COLS] = {9, 8, 7, 6}; //к каким выводам подключаем управление столбцами
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup() {
pinMode (RCLK, OUTPUT);
pinMode (SCLK, OUTPUT);
pinMode (DIO, OUTPUT);
}
void loop() {
showDisplay();
}
void showDisplay(){
const byte digit[10] = {
0b11000000, //0
0b11111001, //1
0b10100100, //2
0b10110000, //3
0b10011001, //4
0b10010010, //5
0b10000010, //6
0b11111000, //7
0b10000000, //8
0b10010000, //9
};
const byte chr[4] = { //маска для разряда
0b00001000,
0b00000100,
0b00000010,
0b00000001,
};
char customKey = customKeypad.getKey();
if (customKey){
digitalRead (customKey);
}
digitalWrite(RCLK, LOW); //открываем защелку
shiftOut (DIO, SCLK, MSBFIRST, digit[customKey]); //отправляем байт с числом
shiftOut(DIO, SCLK, MSBFIRST, chr[customKey]); //включаем разряд
digitalWrite(RCLK, HIGH); //защелкиваем регистры
delay(1); //ждем немного перед отправкой следующего числа
}
// put your main code here, to run repeatedly:
1 - матричная клавиатура это набор отдельный клавиш с отдельными обработчиками, или устровйство для ввода знаков в буфер. Последнее перспективно.
2- индикатор это просто отдельные светодиоды или вывод знаков на экран.
3- и то и другое это само по себе или костяк системы для задания режима работы устройства
4-перед тем как садится писать программу, программист должен ясно представлять что он пишет и как компоненты между собой будут взаимодействовать.