#include #include "SSD1306Ascii.h" #include "SSD1306AsciiWire.h" #define I2C_ADDRESS 0x3C #define PIN1 5 #define PIN2 6 #define PIN3 7 #define PIN4 8 #define CLOCK 3 #define ENABLE 2 #define WAIT 1 SSD1306AsciiWire oled; char msg[] = "Hello! MSX\n"; int index = 0; int port[] = {PIN1, PIN2, PIN3, PIN4}; void setup() { pinMode(PIN1, OUTPUT); pinMode(PIN2, OUTPUT); pinMode(PIN3, OUTPUT); pinMode(PIN4, OUTPUT); pinMode(CLOCK, OUTPUT); pinMode(ENABLE, INPUT); digitalWrite(CLOCK, HIGH); Wire.begin(); Wire.setClock(400000L); oled.begin(&Adafruit128x64, I2C_ADDRESS); oled.setFont(System5x7); oled.clear(); while(digitalRead(ENABLE) == LOW) delay(100); oled.println("START!!"); } void loop() { char c; c = msg[index++]; for(int i=0; i<4; i++) digitalWrite(port[i], bitRead(c, i + 4)); digitalWrite(CLOCK, LOW); delay(WAIT); digitalWrite(CLOCK, HIGH); delay(WAIT); for(int i=0; i<4; i++) digitalWrite(port[i], bitRead(c, i)); digitalWrite(CLOCK, LOW); delay(WAIT); digitalWrite(CLOCK, HIGH); delay(WAIT); oled.print(c); if(c == '\n') while(1); }