caro,
pin8 x6=x8
pin9 x7=x9
pin10 x8=x10
pin11 x9=x11
pin12 x10=x12
pin13 x11=x13
pin27 x12=x6
pin26 x13=x7
caro,
pin8 x6=x8
pin9 x7=x9
pin10 x8=x10
pin11 x9=x11
pin12 x10=x12
pin13 x11=x13
pin27 x12=x6
pin26 x13=x7
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
surinm, ответ здесь.
surinm (23.06.2021)
Обновил первый пост, добавил туда прошивку и все ссылки, необходимые для заказа или изготовления контроллера.
surinm, а переключение qwerty/йцукен уже реализовали?
Что-то в этом роде, сделал по F12, но почему-то переключается через раз. Если нажимать клавиши вместе с F12, то точно будет в другой раскладке... где-то я туплю...
Прошивка с переключаемой раскладкой
#include <PS2KeyRaw.h>
#define AX0 4
#define AX1 5
#define AX2 6
#define AX3 7
#define AY0 8
#define AY1 9
#define AY2 10
#define RSTMT 14
#define CSMT 15
#define DATMT 16
#define STBMT 17
#define DATAPIN 2
#define IRQPIN 3
volatile boolean d = HIGH;
uint8_t table[128] = {127,127,127,39, 43, 47, 45, 127,127,127,
127,127,41, 50,88,127,127,28,30,127,
20,74, 124, 127,127,127,44, 12, 98, 104,
122, 18,127,40, 2, 32, 36, 118, 120, 127,
127,48,68, 108, 100, 72, 116, 127,127,38,
76, 42, 46, 66, 114, 127,127,127,14, 64,
96, 112, 94, 127,127,106,70, 8, 4, 126,
92, 127,127,86, 80 ,102, 34,10, 84,127,
127,127,6,127,78, 90, 127,127,127,16,
62, 0, 127,82,127,127,127,127,127,127,
127,127,52,127,127,109, 127,103, 97, 127,
127,127,111, 70, 107, 101, 99, 79, 24,127,
58,127,105, 127, 127,77, 127,127};
uint8_t t_qwerty[128] = {
127,127,127,44, 42, 40, 41, 127,127,127,
127,127,43, 102,54,127,127,127,112,127,
117,33, 65, 127,127,127,50, 35, 1, 39,
66, 127,127,3, 48, 4, 5, 68, 67, 127,
127,103,38, 6, 36, 34, 69, 127,127,22,
2, 16, 7, 49, 70, 127,127,127,21, 18,
37, 71, 80, 127,127,84,19, 17, 23, 64,
81, 127,127,86, 87 ,20, 83,32, 55,127,
127,127,82,127,51, 127, 127,127,127,119,
96, 53, 127,52,127,127,127,127,127,127,
127,127,101,127,127,9, 127,12, 15, 127,
127,127,8, 22, 10, 13, 14, 24, 115,127,
127,127,11, 85,127,25, 127,127};
boolean qwerty = false;
PS2KeyRaw keyboard;
void setup() {
//Инициализация портов
pinMode(19, OUTPUT);
pinMode(AX0, OUTPUT); //AX0
pinMode(AX1, OUTPUT); //AX1
pinMode(AX2, OUTPUT); //AX2
pinMode(AX3, OUTPUT); //AX3
pinMode(AY0, OUTPUT); //AY0
pinMode(AY1, OUTPUT); //AY1
pinMode(AY2, OUTPUT); //AY2
pinMode(RSTMT, OUTPUT); //RES
pinMode(CSMT, OUTPUT); //CS
pinMode(DATMT, OUTPUT); //DAT
pinMode(STBMT, OUTPUT); //STB
//Инициализация клавиатуры
keyboard.begin( DATAPIN, IRQPIN );
//Инициализация MT8816
SetAddr(0);
digitalWrite(RSTMT, LOW);
digitalWrite(CSMT, LOW);
digitalWrite(DATMT, LOW);
digitalWrite(STBMT, LOW); //инициализация
digitalWrite(CSMT, HIGH); //выбор чипа
digitalWrite(RSTMT, HIGH);
digitalWrite(RSTMT, LOW); //сброс
digitalWrite(CSMT, LOW);
}
void SetAddr(uint8_t addr) {
digitalWrite(AX0,bitRead(addr,0));
digitalWrite(AX1,bitRead(addr,1));
digitalWrite(AX2,bitRead(addr,2));
digitalWrite(AX3,bitRead(addr,3));
digitalWrite(AY0,bitRead(addr,4));
digitalWrite(AY1,bitRead(addr,5));
digitalWrite(AY2,bitRead(addr,6));
}
void SetKey(boolean data){
digitalWrite(CSMT, HIGH); //выбор чипа
digitalWrite(STBMT, HIGH); //строб on
digitalWrite(DATMT, data); //данные
digitalWrite(STBMT, LOW); //строб off
digitalWrite(CSMT, LOW);
}
void loop()
{
if( keyboard.available() ){
int c = keyboard.read(); //чтение кода
switch (c) {
case 0x7E: //если считался код 0x7E
digitalWrite(CSMT, HIGH); //выбор чипа
digitalWrite(RSTMT, HIGH);
digitalWrite(RSTMT, LOW); //сброс
digitalWrite(CSMT, LOW);
break;
case 0x07:
qwerty = !qwerty;
case 0xE0: //если считался префикс 0xE0
break;
case 0xF0: //если считался префикс 0xF0 (отпускание клавиши)
d = LOW;
break;
default:
if (qwerty) SetAddr(t_qwerty[c]);
else SetAddr(table[c]);
SetKey(d);
d = HIGH;
}
}
}[свернуть]
surinm, попробуйте сделать qwerty volatile.
добавил, но думаю это не из-за этой директивы. Думаю, что это было из-за множественных нажатий в мозгу контроллера. Добавил переменную, которая переключает только один раз, дальше ждет нажатия другой клавиши, после этого заработало как надо. Финальную прошивку с переключением раскладок выложил в первом посте, также расширил комментарии к прошивке.
- - - Добавлено - - -
Там в даташите дальше в таблице установки состояний тоже косячек, выводы тоже перепутаны.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)