#include <Wire.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <avr/pgmspace.h>
#include <EEPROM.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define I2C_ADDRESS 0x3C;
const char string_0[] PROGMEM = "- 103034141";
const char string_1[] PROGMEM = "- Chih Shan Ou Yang";
const char string_2[] PROGMEM = "- ENG20009";
const char string_3[] PROGMEM = "- Semester 1";
const char string_4[] PROGMEM = "- 2023";
const char *const string_table[] PROGMEM = {string_0, string_1, string_2, string_3, string_4};
char item1[30];
char item2[30];
char item3[30];
char item4[30];
char item5[30];
char value[30];
char * strings[] =
{
item1,
item2,
item3,
item4,
item5
};
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
strcpy_P(item1, (char *)pgm_read_word(&(string_table[0])));
strcpy_P(item2, (char *)pgm_read_word(&(string_table[1])));
strcpy_P(item3, (char *)pgm_read_word(&(string_table[2])));
strcpy_P(item4, (char *)pgm_read_word(&(string_table[3])));
strcpy_P(item5, (char *)pgm_read_word(&(string_table[4])));
Serial.println(strings[i]);
}
EEPROM.write(0,strings[0]);
char value = EEPROM.read(0);
Serial.print(value);
}
void loop() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
for (int i = 0; i < 5; i++) {
display.println(strings[i]);
display.display();
}
display.startscrollleft(0, 7);
delay(5000);
display.stopscroll();
}