2025-09-22 01:57:51 +02:00

154 lines
2.4 KiB
C++

#define DP_0 2
#define DP_1 3
#define DP_2 4
#define DP_3 5
#define AR 6
#define CR 7
#define STANDBY 0
#define READ 1
#define WRITE 2
char count = 0;
char delayAmount = 100;
char textToSent[] = "Hallo vom Arduino Nano!";
char mode;
char getScreenCode(char c) {
if (c >= 32 && c <= 63) {
return c;
} else if (c == 64) {
return 0;
} else if (c >= 65 && c <= 90) {
return c;
} else if (c == 91 || c == 93) {
return c - 64;
} else if (c == 95) {
return 111;
} else if (c >= 97 && c <= 122) {
return c - 96;
} else if (c == 124) {
return 93;
} else {
return 63;
}
}
void initMode(char mode) {
switch (mode) {
case WRITE:
pinMode(DP_0, OUTPUT);
pinMode(DP_1, OUTPUT);
pinMode(DP_2, OUTPUT);
pinMode(DP_3, OUTPUT);
break;
case STANDBY:
default:
pinMode(DP_0, INPUT);
pinMode(DP_1, INPUT);
pinMode(DP_2, INPUT);
pinMode(DP_3, INPUT);
}
pinMode(AR, OUTPUT);
pinMode(CR, INPUT);
digitalWrite(DP_0, LOW);
digitalWrite(DP_1, LOW);
digitalWrite(DP_2, LOW);
digitalWrite(DP_3, LOW);
digitalWrite(AR, LOW);
digitalWrite(CR, LOW);
}
void setup() {
delay(2000);
mode = STANDBY;
initMode(mode);
Serial.begin(9600);
}
void send4Bit(char c) {
for (char i = 3; i >= 0; i--) {
char d = c >> i & 1;
Serial.print(d, DEC);
}
for (char i = 0; i < 4; i++) {
char d = c >> i & 1;
digitalWrite(i+2, d);
}
Serial.print(" ");
digitalWrite(AR, HIGH);
while (digitalRead(CR) == LOW) {}
while (digitalRead(CR) == HIGH) {}
digitalWrite(AR, LOW);
//delay(500);
}
void sendByte(char a, char byte) {
char upper = byte >> 4;
char lower = byte & 0b00001111;
Serial.print(a);
Serial.print(" ");
Serial.print(a, DEC);
Serial.print(" ");
Serial.print(byte, DEC);
Serial.print(" ");
send4Bit(upper);
send4Bit(lower);
}
void startWrite() {
Serial.print("start\n");
mode = WRITE;
initMode(mode);
digitalWrite(AR, LOW);
int i = 0;
char c, sc;
do {
c = textToSent[i];
sc = getScreenCode(c);
i++;
sendByte(c, sc);
//Serial.print(c, DEC);
} while (c != 0);
Serial.print("\n");
for (char i = 2; i < 8; i++) {
digitalWrite(i, LOW);
}
mode = STANDBY;
}
void loop() {
if (mode == WRITE) {
} else if (mode == READ) {
} else {
startWrite();
}
Serial.print("\nAAAAAAAA\n");
delay(20000);
}