#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); }