kopia lustrzana https://github.com/Jean-MarcHarvengt/MCUME
fix joyswapped with I2C keyboard issue
rodzic
d4ea70b196
commit
8b0c601006
|
@ -3,7 +3,7 @@
|
|||
(general
|
||||
(thickness 1.6)
|
||||
(drawings 12)
|
||||
(tracks 1128)
|
||||
(tracks 1131)
|
||||
(zones 0)
|
||||
(modules 1)
|
||||
(nets 1)
|
||||
|
@ -909,8 +909,8 @@
|
|||
(segment (start 151.003 28.956) (end 151.003 27.686) (width 0.8) (layer B.Cu) (net 0))
|
||||
(via (at 135.636 45.466) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
||||
(via (at 133.604 45.466) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
||||
(via (at 138.43 52.07) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
||||
(via (at 138.43 54.61) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
||||
(via (at 138.43 51.435) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
||||
(via (at 138.43 55.245) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
||||
(segment (start 151.003 44.196) (end 151.003 42.926) (width 0.8) (layer B.Cu) (net 0))
|
||||
(segment (start 148.463 44.196) (end 148.463 42.926) (width 0.8) (layer B.Cu) (net 0))
|
||||
(segment (start 47.371 94.234) (end 48.768 94.234) (width 0.6) (layer B.Cu) (net 0))
|
||||
|
@ -1104,7 +1104,6 @@
|
|||
(segment (start 146.685 49.53) (end 146.685 51.689) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 164.465 49.53) (end 164.465 48.257208) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 164.465 48.257208) (end 163.832792 47.625) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 145.415 47.625) (end 144.653 48.387) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 172.085 57.658) (end 172.085 57.404) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(via (at 166.243 30.734) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
||||
(via (at 168.783 30.734) (size 1.8) (drill 0.4) (layers F.Cu B.Cu) (net 0))
|
||||
|
@ -1322,13 +1321,8 @@
|
|||
(segment (start 182.499 55.88) (end 184.15 55.88) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 184.15 50.8) (end 185.166 50.8) (width 0.59944) (layer F.Cu) (net 0))
|
||||
(segment (start 184.15 53.34) (end 185.293 53.34) (width 0.59944) (layer F.Cu) (net 0))
|
||||
(segment (start 145.415 47.625) (end 138.43 54.61) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 131.318 47.498) (end 131.318 46.609) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 138.43 54.61) (end 131.318 47.498) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 131.318 46.609) (end 131.318 33.274) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 137.530001 51.170001) (end 133.604 47.244) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 138.43 52.07) (end 137.530001 51.170001) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 133.604 45.466) (end 133.604 47.244) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 180.467 31.623) (end 180.477999 31.633999) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 152.677584 26.010136) (end 152.677584 26.011416) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 148.59 32.258) (end 172.085 32.258) (width 0.59944) (layer B.Cu) (net 0))
|
||||
|
@ -1354,5 +1348,14 @@
|
|||
(segment (start 172.974 27.432) (end 173.736 27.432) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 178.977583 28.098791) (end 177.421792 26.543) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 178.977583 28.920137) (end 178.977583 28.098791) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 133.604 47.244) (end 133.604 45.466) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 136.895001 50.535001) (end 133.604 47.244) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 137.530001 50.535001) (end 136.895001 50.535001) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 138.43 51.435) (end 137.530001 50.535001) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 131.318 48.133) (end 131.318 47.498) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 138.43 55.245) (end 131.318 48.133) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 144.907 48.768) (end 144.907 48.133) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 138.43 55.245) (end 144.907 48.768) (width 0.59944) (layer B.Cu) (net 0))
|
||||
(segment (start 145.415 47.625) (end 144.907 48.133) (width 0.59944) (layer B.Cu) (net 0))
|
||||
|
||||
)
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
@ -479,9 +479,9 @@ int emu_ReadI2CKeyboard(void) {
|
|||
if (b != 0xff) hitindex=i;
|
||||
msg[i++] = b;
|
||||
}
|
||||
|
||||
|
||||
if (hitindex >=0 ) {
|
||||
/*
|
||||
/*
|
||||
Serial.println(msg[0], BIN);
|
||||
Serial.println(msg[1], BIN);
|
||||
Serial.println(msg[2], BIN);
|
||||
|
@ -491,7 +491,7 @@ int emu_ReadI2CKeyboard(void) {
|
|||
Serial.println(msg[6], BIN);
|
||||
*/
|
||||
unsigned short match = (~msg[hitindex])&0x00FF | (hitindex<<8);
|
||||
//Serial.println(match,HEX);
|
||||
Serial.println(match,HEX);
|
||||
for (i=0; i<sizeof(i2ckeys); i++) {
|
||||
if (match == i2ckeys[i]) {
|
||||
//Serial.println((int)keys[i]);
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -353,7 +353,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -352,7 +352,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
@ -480,9 +480,9 @@ int emu_ReadI2CKeyboard(void) {
|
|||
while (Wire.available() && (i<7) ) { // slave may send less than requested
|
||||
byte b = Wire.read(); // receive a byte
|
||||
if (b != 0xff) hitindex=i;
|
||||
msg[i++] = b;
|
||||
msg[i++] = b;
|
||||
}
|
||||
|
||||
|
||||
if (hitindex >=0 ) {
|
||||
/*
|
||||
Serial.println(msg[0], BIN);
|
||||
|
@ -1411,10 +1411,11 @@ void emu_init(void)
|
|||
|
||||
emu_InitJoysticks();
|
||||
#ifdef SWAP_JOYSTICK
|
||||
joySwapped = true;
|
||||
joySwapped = true;
|
||||
#else
|
||||
joySwapped = false;
|
||||
#endif
|
||||
joySwapped = false;
|
||||
#endif
|
||||
|
||||
readCallibration();
|
||||
|
||||
if ((tft.isTouching()) || (emu_ReadKeys() & MASK_JOY2_BTN) ) {
|
||||
|
@ -1442,7 +1443,7 @@ void emu_init(void)
|
|||
Serial.println(msg[4], BIN);
|
||||
Serial.println(msg[5], BIN);
|
||||
Serial.println(msg[6], BIN);
|
||||
*/
|
||||
*/
|
||||
if ( (msg[0] == 0xff) && (msg[1] == 0xff) &&
|
||||
(msg[2] == 0xff) && (msg[3] == 0xff) &&
|
||||
(msg[4] == 0xff) && (msg[5] == 0xff) && (msg[6] == 0xff)) {
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
|
||||
#define EXTRA_HEAP 0x10
|
||||
|
||||
// Title: < >
|
||||
#define TITLE " AtariST Emulator "
|
||||
// Title: < >
|
||||
#define TITLE " AtariST Emulator "
|
||||
#define ROMSDIR "/st"
|
||||
|
||||
#define emu_Init(ROM) {ast_Init(); ast_Start(ROM);}
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -118,7 +118,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -350,7 +350,7 @@ int emu_SwapJoysticks(int statusOnly) {
|
|||
|
||||
int emu_GetPad(void)
|
||||
{
|
||||
return(keypadval|((joySwapped?1:0)<<7));
|
||||
return(keypadval/*|((joySwapped?1:0)<<7)*/);
|
||||
}
|
||||
|
||||
int emu_ReadKeys(void)
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
static byte msg[7];
|
||||
|
||||
// rows are inputs
|
||||
//static byte rows[] = {11, 10, 9, 12, 13, 8, 7, 6, 5, 4}; // {2,3,4};
|
||||
static byte rows[] = {4, 5, 6, 7, 8, 13, 12, 9, 10, 11}; // {2,3,4};
|
||||
// VERI OLD static byte rows[] = {11, 10, 9, 12, 13, 8, 7, 6, 5, 4}; // VERI OLD
|
||||
static byte rows[] = {4, 5, 6, 7, 8, 13, 12, 9, 10, 11}; // Teensy4 ILI 9341 + keyboard
|
||||
const int rowCount = sizeof(rows) / sizeof(rows[0]);
|
||||
|
||||
// cols are outputs
|
Plik binarny nie jest wyświetlany.
|
@ -0,0 +1,187 @@
|
|||
|
||||
#include <Wire.h>
|
||||
|
||||
static byte msg[7];
|
||||
|
||||
// VERI OLD static byte rows[] = {11, 10, 9, 12, 13, 8, 7, 6, 5, 4}; // VERI OLD
|
||||
// ILI 9341 static byte rows[] = {4, 5, 6, 7, 8, 13, 12, 9, 10, 11}; // Teensy4 ILI 9341 + keyboard
|
||||
#define REV_DIODE 1
|
||||
|
||||
#ifdef REV_DIODE
|
||||
// rows are inputs
|
||||
static byte rows[] = {A3, A2, A1, A0, 3}; //{8,9,10,11};
|
||||
const int rowCount = sizeof(rows) / sizeof(rows[0]);
|
||||
// cols are outputs
|
||||
static byte cols[] = {9, 10, 8, 7, 6, 5, 4, 2, 1, 0 }; // Teensy4 ST7789 + keyboard
|
||||
const int colCount = sizeof(cols) / sizeof(cols[0]);
|
||||
#else
|
||||
// rows are inputs
|
||||
static byte rows[] = {9, 10, 8, 7, 6, 5, 4, 2, 1, 0 }; // Teensy4 ST7789 + keyboard
|
||||
const int rowCount = sizeof(rows) / sizeof(rows[0]);
|
||||
// cols are outputs
|
||||
static byte cols[] = {A3, A2, A1, A0, 3}; //{8,9,10,11};
|
||||
const int colCount = sizeof(cols) / sizeof(cols[0]);
|
||||
#endif
|
||||
|
||||
#ifdef REV_DIODE
|
||||
static byte keys[rowCount][colCount];
|
||||
#else
|
||||
static byte keys[colCount][rowCount];
|
||||
#endif
|
||||
|
||||
|
||||
void setup() {
|
||||
//Serial.begin(115200);
|
||||
|
||||
Wire.begin(8); // join i2c bus with address #8
|
||||
Wire.onRequest(requestEvent); // register event
|
||||
|
||||
// input
|
||||
for (int x = 0; x < rowCount; x++) {
|
||||
pinMode(rows[x], INPUT_PULLUP);
|
||||
}
|
||||
|
||||
// output
|
||||
for (int x = 0; x < colCount; x++) {
|
||||
pinMode(cols[x], OUTPUT);
|
||||
digitalWrite(cols[x], HIGH);
|
||||
}
|
||||
}
|
||||
|
||||
void readMatrix() {
|
||||
// iterate the columns
|
||||
for (int colIndex = 0; colIndex < colCount; colIndex++) {
|
||||
// col: set to output to low
|
||||
byte curCol = cols[colIndex];
|
||||
//pinMode(curCol, OUTPUT);
|
||||
|
||||
#ifdef REV_DIODE
|
||||
digitalWrite(curCol, LOW);
|
||||
#endif
|
||||
// row: interate through the rows
|
||||
for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) {
|
||||
byte rowCol = rows[rowIndex];
|
||||
#ifdef REV_DIODE
|
||||
keys[rowIndex][colIndex] = digitalRead(rowCol);
|
||||
#else
|
||||
digitalWrite(curCol, LOW);
|
||||
keys[colIndex][rowIndex] = digitalRead(rowCol);
|
||||
digitalWrite(curCol, HIGH);
|
||||
#endif
|
||||
}
|
||||
#ifdef REV_DIODE
|
||||
digitalWrite(curCol, HIGH);
|
||||
#endif;
|
||||
}
|
||||
byte * pt = &msg[0];
|
||||
byte v = 0;
|
||||
v |= (keys[0][0] ? 0x80 : 0);
|
||||
v |= (keys[1][0] ? 0x40 : 0);
|
||||
v |= (keys[2][0] ? 0x20 : 0);
|
||||
v |= (keys[3][0] ? 0x10 : 0);
|
||||
v |= (keys[0][1] ? 0x08 : 0);
|
||||
v |= (keys[1][1] ? 0x04 : 0);
|
||||
v |= (keys[2][1] ? 0x02 : 0);
|
||||
v |= (keys[3][1] ? 0x01 : 0);
|
||||
*pt++ = v;
|
||||
v = 0;
|
||||
v |= (keys[0][2] ? 0x80 : 0);
|
||||
v |= (keys[1][2] ? 0x40 : 0);
|
||||
v |= (keys[2][2] ? 0x20 : 0);
|
||||
v |= (keys[3][2] ? 0x10 : 0);
|
||||
v |= (keys[0][3] ? 0x08 : 0);
|
||||
v |= (keys[1][3] ? 0x04 : 0);
|
||||
v |= (keys[2][3] ? 0x02 : 0);
|
||||
v |= (keys[3][3] ? 0x01 : 0);
|
||||
*pt++ = v;
|
||||
v = 0;
|
||||
v |= (keys[0][4] ? 0x80 : 0);
|
||||
v |= (keys[1][4] ? 0x40 : 0);
|
||||
v |= (keys[2][4] ? 0x20 : 0);
|
||||
v |= (keys[3][4] ? 0x10 : 0);
|
||||
v |= (keys[0][5] ? 0x08 : 0);
|
||||
v |= (keys[1][5] ? 0x04 : 0);
|
||||
v |= (keys[2][5] ? 0x02 : 0);
|
||||
v |= (keys[3][5] ? 0x01 : 0);
|
||||
*pt++ = v;
|
||||
v = 0;
|
||||
v |= (keys[0][6] ? 0x80 : 0);
|
||||
v |= (keys[1][6] ? 0x40 : 0);
|
||||
v |= (keys[2][6] ? 0x20 : 0);
|
||||
v |= (keys[3][6] ? 0x10 : 0);
|
||||
v |= (keys[0][7] ? 0x08 : 0);
|
||||
v |= (keys[1][7] ? 0x04 : 0);
|
||||
v |= (keys[2][7] ? 0x02 : 0);
|
||||
v |= (keys[3][7] ? 0x01 : 0);
|
||||
*pt++ = v;
|
||||
v = 0;
|
||||
v |= (keys[0][8] ? 0x80 : 0);
|
||||
v |= (keys[1][8] ? 0x40 : 0);
|
||||
v |= (keys[2][8] ? 0x20 : 0);
|
||||
v |= (keys[3][8] ? 0x10 : 0);
|
||||
v |= (keys[0][9] ? 0x08 : 0);
|
||||
v |= (keys[1][9] ? 0x04 : 0);
|
||||
v |= (keys[2][9] ? 0x02 : 0);
|
||||
v |= (keys[3][9] ? 0x01 : 0);
|
||||
*pt++ = v;
|
||||
v = 0;
|
||||
v |= (keys[4][0] ? 0x80 : 0);
|
||||
v |= (keys[4][1] ? 0x40 : 0);
|
||||
v |= (keys[4][2] ? 0x20 : 0);
|
||||
v |= (keys[4][3] ? 0x10 : 0);
|
||||
v |= (keys[4][4] ? 0x08 : 0);
|
||||
v |= (keys[4][5] ? 0x04 : 0);
|
||||
v |= (keys[4][6] ? 0x02 : 0);
|
||||
v |= (keys[4][7] ? 0x01 : 0);
|
||||
*pt++ = v;
|
||||
v = 0x3F;
|
||||
v |= (keys[4][8] ? 0x80 : 0);
|
||||
v |= (keys[4][9] ? 0x40 : 0);
|
||||
*pt++ = v;
|
||||
}
|
||||
|
||||
void printMatrix() {
|
||||
|
||||
for (int rowIndex=0; rowIndex < rowCount; rowIndex++) {
|
||||
if (rowIndex < 10) Serial.print(F("0"));
|
||||
Serial.print(rowIndex); Serial.print(F(": "));
|
||||
for (int colIndex=0; colIndex < colCount; colIndex++) {
|
||||
#ifdef REV_DIODE
|
||||
Serial.print(keys[rowIndex][colIndex]);
|
||||
#else
|
||||
Serial.print(keys[colIndex][rowIndex]);
|
||||
#endif
|
||||
if (colIndex < colCount) Serial.print(F(", "));
|
||||
}
|
||||
Serial.println("");
|
||||
}
|
||||
Serial.println("");
|
||||
Serial.println("");
|
||||
Serial.println("");
|
||||
|
||||
/*
|
||||
Serial.println(msg[0], BIN);
|
||||
Serial.println(msg[1], BIN);
|
||||
Serial.println(msg[2], BIN);
|
||||
Serial.println(msg[3], BIN);
|
||||
Serial.println(msg[4], BIN);
|
||||
Serial.println("");
|
||||
Serial.println("");
|
||||
Serial.println("");
|
||||
*/
|
||||
}
|
||||
|
||||
void loop() {
|
||||
readMatrix();
|
||||
//printMatrix();
|
||||
delay(2);
|
||||
}
|
||||
|
||||
|
||||
// function that executes whenever data is requested by master
|
||||
// this function is registered as an event, see setup()
|
||||
void requestEvent() {
|
||||
Wire.write(msg, 7);
|
||||
//Wire.write("hello "); // respond with message of 6 bytes
|
||||
}
|
||||
|
|
@ -0,0 +1,251 @@
|
|||
:100000000C9462000C948A000C948A000C948A0070
|
||||
:100010000C948A000C948A000C948A000C948A0038
|
||||
:100020000C948A000C948A000C948A000C948A0028
|
||||
:100030000C948A000C948A000C948A000C948A0018
|
||||
:100040000C942F030C948A000C94FD020C94D7029C
|
||||
:100050000C948A000C948A000C948A000C948A00F8
|
||||
:100060000C9479030C948A000000000025002800FD
|
||||
:100070002B0000000000240027002A0000000000E0
|
||||
:1000800023002600290004040404040404040202DA
|
||||
:100090000202020203030303030301020408102007
|
||||
:1000A0004080010204081020010204081020000012
|
||||
:1000B0000008000201000003040700000000000027
|
||||
:1000C0000000A70411241FBECFEFD8E0DEBFCDBFD4
|
||||
:1000D00011E0A0E0B1E0ECE5FFE002C005900D9278
|
||||
:1000E000A433B107D9F722E0A4E3B1E001C01D9227
|
||||
:1000F000A53BB207E1F710E0C2E6D0E004C02197CB
|
||||
:10010000FE010E94A107C136D107C9F70E94E00491
|
||||
:100110000C94AC070C940000FC01538D448D252FEA
|
||||
:1001200030E0842F90E0821B930B541710F0CF9691
|
||||
:10013000089501970895FC01918D828D981761F0C3
|
||||
:10014000828DDF01A80FB11D5D968C91928D9F5F0E
|
||||
:100150009F73928F90E008958FEF9FEF0895FC01B9
|
||||
:10016000918D828D981731F0828DE80FF11D858D6C
|
||||
:1001700090E008958FEF9FEF0895FC01918D228DFF
|
||||
:10018000892F90E0805C9F4F821B91098F73992784
|
||||
:100190000895FC01848DDF01A80FB11DA35ABF4F44
|
||||
:1001A0002C91848D90E001968F739927848FA68976
|
||||
:1001B000B7892C93A089B1898C9180648C93938D9D
|
||||
:1001C000848D981306C00288F389E02D80818F7D8D
|
||||
:1001D00080830895EF92FF920F931F93CF93DF9345
|
||||
:1001E000EC0181E0888F9B8D8C8D981305C0E88988
|
||||
:1001F000F989808185FD24C0F62E0B8D10E00F5FFC
|
||||
:100200001F4F0F731127E02E8C8DE8120CC00FB614
|
||||
:1002100007FCFACFE889F989808185FFF5CFCE0107
|
||||
:100220000E94C900F1CF8B8DFE01E80FF11DE35A4A
|
||||
:10023000FF4FF0820B8FEA89FB898081806207C0C3
|
||||
:10024000EE89FF896083E889F989808180648083F1
|
||||
:1002500081E090E0DF91CF911F910F91FF90EF909F
|
||||
:100260000895CF93DF93EC01888D8823C9F0EA8944
|
||||
:10027000FB89808185FD05C0A889B9898C9186FD9F
|
||||
:100280000FC00FB607FCF5CF808185FFF2CFA8899C
|
||||
:10029000B9898C9185FFEDCFCE010E94C900E7CFCF
|
||||
:1002A000DF91CF9108958CE092E00E94BD0021E0A3
|
||||
:1002B000892B09F420E0822F089580E090E0892BBB
|
||||
:1002C00029F00E94530181110C9400000895E091DF
|
||||
:1002D000D101F091D201309729F01092CA01109209
|
||||
:1002E000C90109940895CF93DF93AC01E0915401C3
|
||||
:1002F000F09155013097F1F09091CC018091CB01B4
|
||||
:100300009817C0F090E0292F30E02617370754F4F3
|
||||
:10031000D901AC5CBE4FEA01C20FD31F88818C9318
|
||||
:100320009F5FF1CF1092CC016093CB01CB01DF91A5
|
||||
:10033000CF910994DF91CF910895CF92DF92EF9200
|
||||
:10034000FF920F931F93CF93DF936C017A018B0180
|
||||
:10035000C0E0D0E0CE15DF0589F0D8016D918D01A8
|
||||
:10036000D601ED91FC910190F081E02DC601099537
|
||||
:10037000892B11F47E0102C02196ECCFC701DF91D9
|
||||
:10038000CF911F910F91FF90EF90DF90CF90089544
|
||||
:10039000833081F028F4813099F08230A1F0089503
|
||||
:1003A0008730A9F08830B9F08430D1F48091800092
|
||||
:1003B0008F7D03C0809180008F77809380000895A7
|
||||
:1003C00084B58F7702C084B58F7D84BD08958091F8
|
||||
:1003D000B0008F7703C08091B0008F7D8093B00014
|
||||
:1003E00008951F93CF93DF93282F30E0F901E25552
|
||||
:1003F000FF4F8491F901E656FF4FD491F901EA5776
|
||||
:10040000FF4FC491CC23C9F0162F81110E94C8015F
|
||||
:10041000EC2FF0E0EE0FFF1FE859FF4FA591B491CC
|
||||
:100420008FB7F894111105C09C91ED2FE095E92349
|
||||
:1004300002C0EC91ED2BEC938FBFDF91CF911F9118
|
||||
:1004400008953FB7F8948091C2019091C301A091A3
|
||||
:10045000C401B091C50126B5A89B05C02F3F19F076
|
||||
:100460000196A11DB11D3FBFBA2FA92F982F882734
|
||||
:10047000820F911DA11DB11DBC01CD0142E0660F8F
|
||||
:10048000771F881F991F4A95D1F7089585ED8093AE
|
||||
:10049000BC008091BC0084FDFCCF1092C80108957F
|
||||
:1004A00040917601262F30E0240F311D2132310595
|
||||
:1004B000DCF42091C8012430C9F4FC0180E090E014
|
||||
:1004C000861758F4309176012191DC01AA5ABE4F6B
|
||||
:1004D000A30FB11D2C930196F3CF80917601680F85
|
||||
:1004E0006093760180E0089581E0089582E00895A8
|
||||
:1004F0000895E091CC018091CB01E81730F4F0E051
|
||||
:10050000EC5CFE4F808190E008958FEF9FEF08959F
|
||||
:100510009091CC018091CB01981750F4E92FF0E035
|
||||
:10052000EC5CFE4F208130E09F5F9093CC0102C0D5
|
||||
:100530002FEF3FEFC90108958091CB0190E020910A
|
||||
:10054000CC01821B91090895CF93DF9300D0CDB7E2
|
||||
:10055000DEB7CB01642F49835A830E945002498140
|
||||
:10056000842F5A81952F0F900F90DF91CF9108958E
|
||||
:1005700047E050E063ED71E089EA92E00C94A40258
|
||||
:10058000CF93DF931F92CDB7DEB7698361E0CE01D1
|
||||
:1005900001960E94500281E090E00F90DF91CF9190
|
||||
:1005A0000895089580E090E008950E94A7071F92A3
|
||||
:1005B0000F920FB60F9211242F933F934F935F9397
|
||||
:1005C0006F937F938F939F93AF93BF93EF93FF931B
|
||||
:1005D0008CE092E00E94C900FF91EF91BF91AF9132
|
||||
:1005E0009F918F917F916F915F914F913F912F914B
|
||||
:1005F0000F900FBE0F901F9018951F920F920FB67D
|
||||
:100600000F9211242F938F939F93EF93FF93E09179
|
||||
:100610001C02F0911D028081E0912202F0912302E0
|
||||
:1006200082FD12C09081809125028F5F8F7320918F
|
||||
:100630002602821751F0E0912502F0E0E45FFD4FC1
|
||||
:10064000958F8093250201C08081FF91EF919F914A
|
||||
:100650008F912F910F900FBE0F901F9018951F92A2
|
||||
:100660000F920FB60F9211242F933F938F939F9366
|
||||
:10067000AF93BF938091BE019091BF01A091C00143
|
||||
:10068000B091C1013091BD0123E0230F2D3720F43B
|
||||
:100690000196A11DB11D05C026E8230F0296A11DDC
|
||||
:1006A000B11D2093BD018093BE019093BF01A09323
|
||||
:1006B000C001B093C1018091C2019091C301A0918A
|
||||
:1006C000C401B091C5010196A11DB11D8093C20165
|
||||
:1006D0009093C301A093C401B093C501BF91AF91A2
|
||||
:1006E0009F918F913F912F910F900FBE0F901F9070
|
||||
:1006F00018951F920F920FB60F9211242F933F93CC
|
||||
:100700004F935F936F937F938F939F93AF93BF9319
|
||||
:10071000EF93FF938091B900887F803609F49CC0E5
|
||||
:1007200068F5883209F45BC090F4803109F454C054
|
||||
:1007300038F4882309F4F6C0883009F44DC0F6C0B7
|
||||
:10074000883109F44CC0803209F45DC0EFC08034B8
|
||||
:1007500009F468C048F4803309F455C0883309F0BF
|
||||
:10076000E5C080939901D8C0803509F44FC0883521
|
||||
:1007700009F45DC0883409F0D9C0D6C0883909F4BD
|
||||
:10078000C7C0A8F4883709F467C038F4883609F47C
|
||||
:1007900063C0803709F460C0C9C0883809F4B8C0A4
|
||||
:1007A000803909F45FC0803809F0C0C05BC0803B6D
|
||||
:1007B00009F486C038F4803A09F466C0883A09F42E
|
||||
:1007C0007FC0B4C0803C09F4A7C0883C09F4A4C031
|
||||
:1007D000883B09F48AC0AAC08091BC0110C09091E6
|
||||
:1007E000BB018091BA01981770F5E091BB0181E0DF
|
||||
:1007F0008E0F8093BB01F0E0E656FE4F8081809320
|
||||
:10080000BB0085EC86C0809399018EC0E091BB014E
|
||||
:1008100081E08E0F8093BB018091BB00F0E0E65633
|
||||
:10082000FE4F80839091BB018091BA016EC0E09130
|
||||
:10083000BB0181E08E0F8093BB018091BB00F0E093
|
||||
:10084000E656FE4F80838091C70181116DC081E023
|
||||
:100850008093C60184EA61C083E08093C80110924E
|
||||
:100860009801CFCF80919801803208F051C0E0917B
|
||||
:10087000980181E08E0F809398018091BB00F0E099
|
||||
:10088000E858FE4F8083BDCF85EC8093BC0010926A
|
||||
:10089000C80180919801803230F4E0919801F0E035
|
||||
:1008A000E858FE4F10826091980170E0E091CD0110
|
||||
:1008B000F091CE0188E791E009951092980136C039
|
||||
:1008C00084E08093C8011092770110927601E09144
|
||||
:1008D000CF01F091D001099580917601811105C079
|
||||
:1008E00081E08093760110925601E091770181E0DA
|
||||
:1008F0008E0F80937701F0E0EA5AFE4F808180935B
|
||||
:10090000BB009091770180917601981708F479CF18
|
||||
:1009100085E88093BC000AC085EC8093BC001092EF
|
||||
:10092000C80104C0109299010E944602FF91EF9104
|
||||
:10093000BF91AF919F918F917F916F915F914F91F7
|
||||
:100940003F912F910F900FBE0F901F901895ECE0E4
|
||||
:10095000F2E01382128288EE93E0A0E0B0E084839C
|
||||
:100960009583A683B78323E131E03183208325EC8F
|
||||
:1009700030E03587248724EC30E03787268720EC69
|
||||
:1009800030E0318B208B21EC30E0338B228B22EC5A
|
||||
:1009900030E0358B248B26EC30E0378B268B118EA4
|
||||
:1009A000128E138E148EE9EAF2E01382128284838F
|
||||
:1009B0009583A683B78385E291E091838083089530
|
||||
:1009C000789484B5826084BD84B5816084BD85B52A
|
||||
:1009D000826085BD85B5816085BD80916E00816036
|
||||
:1009E00080936E00109281008091810082608093DC
|
||||
:1009F00081008091810081608093810080918000DE
|
||||
:100A00008160809380008091B10084608093B10008
|
||||
:100A10008091B00081608093B00080917A00846002
|
||||
:100A200080937A0080917A00826080937A0080912E
|
||||
:100A30007A00816080937A0080917A008068809348
|
||||
:100A40007A001092C10080E18093BA0087E691E0BD
|
||||
:100A50009093D0018093CF0183E791E09093CE01F2
|
||||
:100A60008093CD011092CC011092CB011092CA015B
|
||||
:100A70001092C9011092C80181E08093C7011092C1
|
||||
:100A8000C60161E082E10E94F10161E083E10E9420
|
||||
:100A9000F1018091B9008E7F8093B9008091B900F7
|
||||
:100AA0008D7F8093B90088E48093B80085E48093BB
|
||||
:100AB000BC0088EB92E09093D2018093D101A0E03A
|
||||
:100AC000B1E08D9190E0FC01E656FF4F2491FC01CE
|
||||
:100AD000EA57FF4F84918823C9F090E0880F991F4F
|
||||
:100AE000FC01EE58FF4F45915491FC01E859FF4F2E
|
||||
:100AF000C591D4919FB7F894FA013081822F8095E7
|
||||
:100B000083238083E8812E2B28839FBFF1E0A530CB
|
||||
:100B1000BF07B9F6C5E0D1E0DE01888190E0FC01B5
|
||||
:100B2000E656FF4F2491FC01EA57FF4F849188233A
|
||||
:100B3000A1F090E0880F991FFC01EE58FF4F4591FE
|
||||
:100B40005491FC01E859FF4F859194918FB7F89427
|
||||
:100B5000FA019081922B90838FBF219661E08C9156
|
||||
:100B60000E94F101F1E0CF30DF07B1F60AED11E0AC
|
||||
:100B7000C5E0D1E0B99060E08B2D0E94F10130E03A
|
||||
:100B8000E32E31E0F32EC12CD12CF70121917F010E
|
||||
:100B900030E0F901E255FF4F8491F901E656FF4F2D
|
||||
:100BA0009490F901EA57FF4FA490AA2079F081119F
|
||||
:100BB0000E94C801EA2DF0E0EE0FFF1FE458FF4F3E
|
||||
:100BC000A591B491EC919E2281E009F480E0F801B6
|
||||
:100BD000EC0DFD1D8083FAE0CF0ED11C22E3C2167E
|
||||
:100BE000D10499F661E08B2D0E94F1010F5F1F4F38
|
||||
:100BF00081E0CF30D80709F0BDCF8091DA018111B3
|
||||
:100C000002C070E001C070E88091E401811102C06F
|
||||
:100C100050E001C050E48091EE01811102C040E03B
|
||||
:100C200001C040E28091F801811102C030E001C0B2
|
||||
:100C300030E18091DB01811102C020E001C028E099
|
||||
:100C40008091E501811102C090E001C094E08091A3
|
||||
:100C5000EF01811182E061E0E091F901E11101C051
|
||||
:100C600060E0672B562B452B342B232B922B892BA3
|
||||
:100C70008093D3018091DC01811102C070E001C03A
|
||||
:100C800070E88091E601811102C050E001C050E49B
|
||||
:100C90008091F001811102C040E001C040E28091EA
|
||||
:100CA000FA01811102C030E001C030E18091DD0124
|
||||
:100CB000811102C020E001C028E08091E70181118C
|
||||
:100CC00002C090E001C094E08091F101811182E0C6
|
||||
:100CD00061E0E091FB01E11101C060E0672B562B60
|
||||
:100CE000452B342B232B922B892B8093D40180917D
|
||||
:100CF000DE01811102C070E001C070E88091E8015E
|
||||
:100D0000811102C050E001C050E48091F2018111D4
|
||||
:100D100002C040E001C040E28091FC01811102C0AC
|
||||
:100D200030E001C030E18091DF01811102C020E09C
|
||||
:100D300001C028E08091E901811102C090E001C06A
|
||||
:100D400094E08091F301811182E061E0E091FD0186
|
||||
:100D5000E11101C060E0672B562B452B342B232B70
|
||||
:100D6000922B892B8093D5018091E001811102C0E3
|
||||
:100D700070E001C070E88091EA01811102C050E08A
|
||||
:100D800001C050E48091F401811102C040E001C033
|
||||
:100D900040E28091FE01811102C030E001C030E1EB
|
||||
:100DA0008091E101811102C020E001C028E0809122
|
||||
:100DB000EB01811102C090E001C094E08091F50147
|
||||
:100DC000811182E061E0E091FF01E11101C060E08A
|
||||
:100DD000672B562B452B342B232B922B892B80935F
|
||||
:100DE000D6018091E201811102C070E001C070E87B
|
||||
:100DF0008091EC01811102C050E001C050E480916B
|
||||
:100E0000F601811102C040E001C040E28091000281
|
||||
:100E1000811102C030E001C030E18091E301811115
|
||||
:100E200002C020E001C028E08091ED01811102C0E4
|
||||
:100E300090E001C094E08091F701811182E061E0CF
|
||||
:100E4000E0910102E11101C060E0672B562B452BB8
|
||||
:100E5000342B232B922B892B8093D7018091020274
|
||||
:100E6000811102C070E001C070E88091030281111D
|
||||
:100E700002C050E001C050E480910402811102C020
|
||||
:100E800040E001C040E280910502811102C030E0E3
|
||||
:100E900001C030E180910602811102C020E001C052
|
||||
:100EA00028E080910702811102C090E001C094E027
|
||||
:100EB00080910802811182E061E0E0910902E11174
|
||||
:100EC00001C060E0672B562B452B342B232B922B34
|
||||
:100ED000892B8093D80180910A02811180E8982F94
|
||||
:100EE0009F6380910B02811180E4892B8093D9014B
|
||||
:100EF0000E9421026B017C0192E0892E912CA12C91
|
||||
:100F0000B12C0E942102DC01CB018C199D09AE0994
|
||||
:100F1000BF09883E9340A105B10598F3E8EECE0ED7
|
||||
:100F2000E3E0DE1EE11CF11C8A9489288A288B28C4
|
||||
:100F300029F0812C912C54018394E3CF0E945D0110
|
||||
:100F400015CEEE0FFF1F0590F491E02D099481E07E
|
||||
:0C0F500090E0F8940C94AC07F894FFCFEC
|
||||
:100F5C0011100F0E03090A08070605040201000010
|
||||
:100F6C00000000EA009D018C003101BD009B00AF28
|
||||
:100F7C000000000000C002A402D20278029C028889
|
||||
:040F8C0002790200E4
|
||||
:00000001FF
|
|
@ -1,18 +1,28 @@
|
|||
pinout Atmega328p (2x14 pins) as I2C keyboard slave
|
||||
---------------------------------------------------
|
||||
|
||||
V2 V1 V1 V2
|
||||
RESET 01 28 I2C SCL
|
||||
9 02 x 27 I2C SDA
|
||||
8 03 x 26 3 ROW OUT 3
|
||||
7 04 x 24 2 ROW OUT 2
|
||||
4 ROW OUT 4 05 25 1 ROW OUT 1
|
||||
6 COL IN 9 06 x 23 0 ROW OUT 0
|
||||
V3.3v 07 22 GND
|
||||
GND 08 21
|
||||
09 20
|
||||
10 19 4 COL IN
|
||||
5 COL IN 8 11 x 18 3 COL IN
|
||||
4 COL IN 7 12 x 17 0 COL IN
|
||||
3 COL IN 6 13 x x 16 1 COL IN 1
|
||||
2 COL IN 5 14 x x 15 2 COL IN 0
|
||||
|
||||
RESET 01 28 I2C SCL
|
||||
02 x 27 I2C SDA
|
||||
03 x 26 A3 COL3 OUT (kbd row0)
|
||||
04 x 24 A2 COL2 OUT (kbd row1)
|
||||
COL4 OUT (kbd row4)05 25 A1 COL1 OUT (kbd row2)
|
||||
9 ROW9 IN (kbd col9) 06 x 23 A0 COL0 OUT (kbd row3)
|
||||
V3.3v 07 22 GND
|
||||
GND 08 21
|
||||
09 20
|
||||
10 19 4 ROW4 IN (kbd col4)
|
||||
8 ROW8 IN (kbd col8) 11 x 18 3 ROW3 IN (kbd col3)
|
||||
7 ROW7 IN (kbd col7) 12 x 17 0 ROW0 IN (kbd col0)
|
||||
6 ROW6 IN (kbd col6) 13 x x 16 1 ROW1 IN (kbd col1)
|
||||
5 ROW5 IN (kbd col5) 14 x x 15 2 ROW2 IN (kbd col2)
|
||||
|
||||
ROW and COLUMNS numbers (for V1 and V2):
|
||||
|
||||
0 1 2 3 4 5 6 7 8 9
|
||||
0 x x x x x x x x x x
|
||||
1 x x x x x x x x x x
|
||||
2 x x x x x x x x x x
|
||||
3 x x x x x x x x x x
|
||||
4 x x x x x x x x x x
|
|
@ -1,2 +1,2 @@
|
|||
#./avrdude -C avrdude.conf -P /dev/cu.usbmodemFD1441 -c stk500 -p m328p -U flash:w:prog.hex
|
||||
./avrdude -C avrdude.conf -P /dev/cu.usbmodemFA1221 -c stk500 -p m328p -U flash:w:keybrev.hex
|
||||
./avrdude -C avrdude.conf -P /dev/cu.usbmodemFA1221 -c stk500 -p m328p -U flash:w:keybV2rev.hex
|
||||
|
|
Ładowanie…
Reference in New Issue