#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define X 128 // OLED display width, in pixels
#define Y 64 // OLED display height, in pixels
int de=2000; //delay
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
//#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(X, Y, &Wire, -1);
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(500);
display.clearDisplay();
display.display();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(34,0);
display.print("Data Type");
display.print("\n\n 1. voide\n 2. int\n 3. boolean\n 4. char\n 5. float");
display.display();
delay(de);
display.clearDisplay();
display.setCursor(1,1);
display.print("1. void");
display.setCursor(5,15);
display.print("Ex: void setup");
display.setCursor(17,30);
display.print(": void loop");
display.setCursor(17,45);
display.print(": void blinking");
display.display();
delay(de);
//============================================================
display.clearDisplay();
display.setCursor(1,1);
display.print("2. int");
display.setCursor(5,15);
display.print("Ex: int a;");
display.setCursor(17,30);
display.print(": int a,b=2;");
display.display();
delay(de);
drawTable();
display.setCursor(1,1);
display.print("+Data Type of int");
display.setCursor(12, (Y / 2) + 12);
display.println("int");
display.setCursor(X / 3 + 4, (Y / 2) +5 );
display.println("2-");
display.setCursor(X / 3 + 2, (Y / 2) +17 );
display.println("bys");
display.setCursor(X / 3 + 24, (Y / 2) +5 );
display.println("16-");
display.setCursor(X / 3 + 25, (Y / 2) +17 );
display.println("bit");
display.setCursor((X * 2) / 3 + 2, (Y / 2) + 5);
display.println("-32768");
display.setCursor((X * 2) / 3 + 2, (Y / 2) + 17);
display.println("+32767");
display.display();
delay(de);
//===========================================================
display.clearDisplay();
display.setCursor(1,1);
display.print("3. boolearn");
display.setCursor(5,15);
display.print("Ex: bool a = true;");
display.setCursor(17,30);
display.print(": bool b = false;");
display.display();
delay(de);
drawTable();
display.setCursor(1,1);
display.print("+Data Type of bool");
display.setCursor(10, (Y / 2) + 12);
display.println("bool");
display.setCursor(X / 3 + 4, (Y / 2) +5 );
display.println("1-");
display.setCursor(X / 3 + 2, (Y / 2) +17 );
display.println("bys");
display.setCursor(X / 3 + 26, (Y / 2) +5 );
display.println("8-");
display.setCursor(X / 3 + 25, (Y / 2) +17 );
display.println("bit");
display.setCursor((X * 2) / 3 + 5, (Y / 2) + 5);
display.println("True &");
display.setCursor((X * 2) / 3 + 7, (Y / 2) + 17);
display.println("False");
display.display();
delay(de);
//===========================================================
display.clearDisplay();
display.setCursor(1,1);
display.print("4. char");
display.setCursor(5,15);
display.print("Ex: char me;");
display.setCursor(17,30);
display.print(": char love = 'U';");
display.display();
delay(de);
drawTable();
display.setCursor(1,1);
display.print("+Data Type of bool");
display.setCursor(10, (Y / 2) + 12);
display.println("char");
display.setCursor(X / 3 + 4, (Y / 2) +5 );
display.println("1-");
display.setCursor(X / 3 + 2, (Y / 2) +17 );
display.println("bys");
display.setCursor(X / 3 + 26, (Y / 2) +5 );
display.println("8-");
display.setCursor(X / 3 + 25, (Y / 2) +17 );
display.println("bit");
display.setCursor((X * 2) / 3 + 10, (Y / 2) + 5);
display.println("-127");
display.setCursor((X * 2) / 3 + 4, (Y / 2) + 17);
display.println("to 128");
display.display();
delay(de);
//=========================================================
display.clearDisplay();
display.setCursor(1,1);
display.print("5. float");
display.setCursor(5,15);
display.print("Ex: float a = -1.4;");
display.setCursor(17,30);
display.print(": float b = 3.4;");
display.display();
delay(de);
drawTable();
display.setCursor(1,1);
display.print("+Data Type of float");
display.setCursor(8, (Y / 2) + 12);
display.println("float");
display.setCursor(X / 3 + 4, (Y / 2) +5 );
display.println("4-");
display.setCursor(X / 3 + 2, (Y / 2) +17 );
display.println("bys");
display.setCursor(X / 3 + 24, (Y / 2) +5 );
display.println("32-");
display.setCursor(X / 3 + 25, (Y / 2) +17 );
display.println("bit");
display.setCursor((X * 2) / 3 + 2, (Y / 2) + 5);
display.println("-3.4..");
display.setCursor((X * 2) / 3 + 4, (Y / 2) + 17);
display.println("3.4...");
display.display();
delay(de);
}
void drawTable() {
display.clearDisplay();
// Draw vertical lines
display.drawLine(0, 15, 0, Y, SSD1306_WHITE);
display.drawLine(X / 3, 15, X / 3, Y, X);
display.drawLine((X * 2) / 3, 15, (X * 2) / 3,Y,X);
display.drawLine((X/2), (Y/2)+2, (X/2), Y,SSD1306_WHITE);
display.drawLine(X - 1, 15, X - 1, Y, SSD1306_WHITE);
// Draw horizontal lines
display.drawLine(0, 15, X, 15, SSD1306_WHITE);
display.drawLine(0, (Y / 2)+2 , X, (Y / 2) +2, SSD1306_WHITE);
display.drawLine(0, Y - 1, X, Y - 1, SSD1306_WHITE);
//Print headers
display.setCursor(4, 20);
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.println("Data.T");
display.setCursor(X / 3 + 10, 20);
display.println("SIZE");
display.setCursor((X * 2) / 3 + 12, 20);
display.println("L.M");
display.display();
}
void loop() {
// put your main code here, to run repeatedly:
}