http://atmturbo.nedopc.com/atmshem.htm
- - - Добавлено - - -
Одну платку я у Вас специально для атм приобрел, она у меня ввиде платы на столе, корпуса нет к сожалению.
А вторую для горячо любимой Дельты.
Без проблем! В архиве все что нужно.
aleste_keyboard.zip
Не можешь поступить разумно - поступай правильно!
n_sonic, попробуйте, альфа версия для Алесты, сам не проверял. Пока поддержка только JCUKEN.
Скрытый текст
Код:#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,101,127,8,5,3,4,11,127,100,117,127,7,17,118,127,127,65,64,127,33,18,19,127,127,127,50,51,34,35,20,49,127,68,67,52,36,6,21,74,127,70,69,53,22,37,23,127,127,71,54,55,38,39,24,127,127,127,72,56,40,9,10,127,127,57,41,25,26,121,122,127,127,58,88,42,90,106,120,127,127,127,89,127,119,16,127,127,66,64,102,119,127,89,127,127,127,127,127,127,127,127,73,127,127,82,127,83,80,127,127,127,81,97,98,99,115,96,1,127,116,127,114,16,84,112,127,127}; 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 0xE0: //если считался префикс 0xE0 break; case 0xF0: //если считался префикс 0xF0 (отпускание клавиши) d = LOW; break; default: SetAddr(table[c]); SetKey(d); d = HIGH; } } }[свернуть]
Ок! На днях доберусь до мастерской и обязательно отпишусь. Спасибо огромное!
Не можешь поступить разумно - поступай правильно!
n_sonic, если заработает нормально, попробую переделать латиницу на qwerty. Раскладка переключается клавишами Алф? Жаль, нет доступа к реальному железу.
https://zxpress.ru/book_articles.php?id=2357
Тут про клавиатуру есть, но дело в том что дополнительные адресные линии нужны. Я стандартную спековскую о 40ка кнопках подключал. А для сипиэм там еще клавишы нужны.
Да это все понятно, я про другое. Тут дело личных предпочтений - какая кнопка какой будет соответствовать на PS/2 клавиатуре, кроме буквенных, разумеется.
Вот вам тестовая версия:
Скрытый текст
Код:#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,127,127,127,127,127,127,127,127,127,127,40,77,127,127,56,0,127,23,2,3,127,127,127,16,17,1,18,19,127, 127,48,32,33,34,51,35,127,127,7,64,49,66,50,67,127,127,55,71,70,65,69,68,127,127,127,39,54,53,52,36,127, 127,110,38,37,21,4,20,127,127,94,58,22,26,5,11,127,127,127,12,127,43,29,127,127,24,10,6,27,127,74,127,127, 127,127,127,127,127,127,9,127,127,127,127,72,127,127,127,127,127,127,73,127,41,57,8,127,127,45,127,61,126,127,127,127}; PS2KeyRaw keyboard; void setup() { //Инициализация портов 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 0xE0: //если считался префикс 0xE0 break; case 0xF0: //если считался префикс 0xF0 (отпускание клавиши) d = LOW; break; default: SetAddr(table[c]); SetKey(d); d = HIGH; } } }[свернуть]
Подключать так: R0-R7 к J2, С0-С14 к J3
Благодарю Вас Уважаемый Сэр.
С ночи приду буду тестировать.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)