Created
March 22, 2022 00:22
-
-
Save randomtestfive/0e6e60f144e859a1639948b7dca9bdb7 to your computer and use it in GitHub Desktop.
red alert 1741 light boys
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "Keypad.h" | |
#include "EEPROM.h" | |
const byte col = 4; | |
const byte row = 4; | |
char keys[row][col] = { | |
{'1','2','3','A'}, | |
{'4','5','6','B'}, | |
{'7','8','9','C'}, | |
{'*','0','#','D'} | |
}; | |
byte rowpins[row]={9,8,7,6}; | |
byte colpins[col]={5,4,3,2}; | |
Keypad key = Keypad(makeKeymap(keys),rowpins,colpins,row,col); | |
byte digitMap[] = { | |
0b00111111, | |
0b00000110, | |
0b01011011, | |
0b01001111, | |
0b01100110, | |
0b01101101, | |
0b01111101, | |
0b00000111, | |
0b01111111, | |
0b01101111}; | |
byte mode; | |
byte current; | |
void draw(byte in) { | |
Serial.print("draw: "); | |
Serial.println(in, DEC); | |
digitalWrite(14, (in&0b1)==0?LOW:HIGH); | |
digitalWrite(15, (in&0b10)==0?LOW:HIGH); | |
digitalWrite(16, (in&0b100)==0?LOW:HIGH); | |
digitalWrite(17, (in&0b1000)==0?LOW:HIGH); | |
digitalWrite(19, (in&0b10000)==0?LOW:HIGH); | |
digitalWrite(12, (in&0b100000)==0?LOW:HIGH); | |
digitalWrite(13, (in&0b1000000)==0?LOW:HIGH); | |
current = in; | |
} | |
void setup() { | |
Serial.begin(9600); | |
pinMode(12, OUTPUT); | |
pinMode(13, OUTPUT); | |
pinMode(14, OUTPUT); | |
pinMode(15, OUTPUT); | |
pinMode(16, OUTPUT); | |
pinMode(17, OUTPUT); | |
pinMode(19, OUTPUT); | |
mode = 0; | |
current = 0; | |
} | |
void readWrite(byte addr) { | |
if(mode==1) { | |
current = EEPROM.read(addr); | |
} else { | |
EEPROM.write(addr,current); | |
mode = 1; | |
} | |
} | |
void loop() { | |
char k = key.getKey(); | |
if(k!=NO_KEY) { | |
if(mode==0) { | |
if(k>='0'&&k<='9') { | |
draw(digitMap[k-'0']); | |
} else if(k=='*') { | |
mode = 1; | |
} else { | |
draw(0); | |
} | |
} else if(mode>0) { | |
switch(k) { | |
case '4': | |
current ^= 0b100000; | |
break; | |
case '5': | |
current ^= 0b1; | |
break; | |
case '6': | |
current ^= 0b10; | |
break; | |
case '7': | |
current ^= 0b10000; | |
break; | |
case '8': | |
current ^= 0b1000000; | |
break; | |
case '9': | |
current ^= 0b100; | |
break; | |
case '0': | |
current ^= 0b1000; | |
break; | |
case '#': | |
mode = 0; | |
break; | |
case '*': | |
mode = 2; | |
break; | |
case '1': | |
readWrite(0); | |
break; | |
case '2': | |
readWrite(1); | |
break; | |
case '3': | |
readWrite(2); | |
break; | |
case 'A': | |
readWrite(3); | |
break; | |
case 'B': | |
readWrite(4); | |
break; | |
case 'C': | |
readWrite(5); | |
break; | |
case 'D': | |
readWrite(6); | |
break; | |
} | |
draw(current); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment