50 lines
1.0 KiB
C++
50 lines
1.0 KiB
C++
byte status = 0;
|
|
byte layer = 0;
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
for (int i = 0; i < 8; i++) {
|
|
pinMode(22 + i, OUTPUT);
|
|
}
|
|
// pinMode(30, OUTPUT);
|
|
// pinMode(31, OUTPUT);
|
|
|
|
for (int i = 0; i < 8; i++) {
|
|
pinMode(30 + i, OUTPUT);
|
|
}
|
|
|
|
for (int i = 0; i < 8; i++) {
|
|
pinMode(38 + i, OUTPUT);
|
|
}
|
|
}
|
|
|
|
int column = 0;
|
|
|
|
void loop() {
|
|
if (Serial.available()) {
|
|
int num = Serial.read();
|
|
if (num >= '0' && num <= '7') {
|
|
num = num - '0';
|
|
status ^= 1 << num;
|
|
|
|
for (int i = 0; i < 8; i++) {
|
|
digitalWrite(22 + i, status >> i & 1);
|
|
}
|
|
|
|
Serial.println(status, BIN);
|
|
} else if (num >= 'a' && num <= 'h') {
|
|
num = num - 'a';
|
|
column = num;
|
|
Serial.print("LOAD");
|
|
Serial.print(num);
|
|
Serial.println(status, BIN);
|
|
digitalWrite(30 + column, HIGH);
|
|
digitalWrite(30 + column, LOW);
|
|
}
|
|
else if (num == 'z') {
|
|
digitalWrite(38 + layer, LOW);
|
|
layer = (layer + 1) % 8;
|
|
digitalWrite(38 + layer, HIGH);
|
|
}
|
|
}
|
|
} |