#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#define Sellect 32
#define Horizontal 35
#define Vertical 34
int state, row, ssid;
Adafruit_SSD1306 oled(128, 64, &Wire, -1);
// 'Scr11', 128x16px
const unsigned char epd_bitmap_Scr11 [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x18, 0x1f, 0xf8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x78, 0x78,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xe0, 0xe0, 0xec,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x9f, 0xe4,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x3b, 0x30,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x90,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x1f, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xc0, 0x38, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x80, 0x63, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 272)
const int epd_bitmap_allArray_LEN = 1;
const unsigned char* epd_bitmap_allArray[1] = {
epd_bitmap_Scr11
};
// 'emoji', 128x64px
const unsigned char epd_bitmap_emoji [] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x84, 0x40, 0x00, 0x00, 0x00, 0x00, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x02, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x8e, 0x4c, 0x3f, 0x92, 0x77, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x03, 0x9b, 0x4c, 0x24, 0x92, 0x42, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x01, 0x13, 0x4c, 0x24, 0x92, 0x72, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x1b, 0x6c, 0x24, 0x92, 0x12, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0x0e, 0x7c, 0x24, 0x9e, 0x73, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xff, 0xff, 0xf0, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0xe0, 0x01, 0xfc, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1f, 0x00, 0x00, 0x3e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
0x00, 0x00, 0x7c, 0x00, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40,
0x00, 0x00, 0xf0, 0x00, 0x00, 0x03, 0xc0, 0x0e, 0x00, 0x0c, 0x62, 0x8b, 0x18, 0x6e, 0x61, 0x40,
0x00, 0x01, 0xe0, 0x00, 0x00, 0x01, 0xe0, 0x0c, 0x00, 0x18, 0xf3, 0xcf, 0x35, 0xec, 0xdb, 0xc0,
0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0xf0, 0x0c, 0x00, 0x10, 0x9a, 0x49, 0xbd, 0x84, 0xfa, 0x40,
0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x00, 0x10, 0x9a, 0x49, 0xa1, 0x84, 0xc2, 0x40,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x0c, 0x00, 0x1e, 0xf2, 0x49, 0xb5, 0xe6, 0xf3, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x00, 0x0c, 0x60, 0x00, 0x18, 0x42, 0x31, 0x00,
0x01, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0e, 0x07, 0x80, 0x00, 0x00, 0x00, 0x03, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0e, 0x03, 0x80, 0x00, 0x00, 0x00, 0x03, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1c, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x01, 0x83, 0x00, 0x00, 0x00, 0x60, 0x01, 0x10, 0xce, 0xd0,
0x1c, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x01, 0xc3, 0x80, 0x60, 0x02, 0x60, 0x01, 0x32, 0x18, 0x18,
0x18, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x01, 0xc1, 0x80, 0x77, 0x87, 0x7c, 0xe1, 0xba, 0xd8, 0xd8,
0x38, 0x00, 0xe0, 0x70, 0x00, 0xf0, 0x00, 0xc0, 0xc0, 0x64, 0xc2, 0x65, 0xb0, 0xaa, 0xde, 0xd0,
0x38, 0x00, 0xe0, 0xfc, 0x01, 0xf8, 0x00, 0xc0, 0xe0, 0x64, 0xc2, 0x65, 0xf0, 0xee, 0xd8, 0xd0,
0x38, 0x00, 0xe0, 0x3f, 0x01, 0xfc, 0x00, 0xe0, 0x70, 0x66, 0xc2, 0x65, 0x80, 0xcc, 0xd8, 0xc0,
0x30, 0x00, 0xe0, 0x1f, 0x01, 0xfc, 0x00, 0xe0, 0x38, 0x73, 0x83, 0x64, 0xf0, 0xcc, 0xd8, 0xd8,
0x30, 0x00, 0xe0, 0x3e, 0x01, 0xf8, 0x00, 0xe0, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x30, 0x00, 0xe0, 0xf8, 0x01, 0xf8, 0x00, 0xe0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
0x38, 0x00, 0xe0, 0x60, 0x00, 0x70, 0x00, 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
0x38, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e,
0x38, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0,
0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x1f, 0x00,
0x1f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x80, 0xff, 0x00, 0x00, 0x00, 0xfc, 0x00,
0x3f, 0xff, 0xe0, 0x20, 0x00, 0x00, 0x01, 0xc0, 0x03, 0x01, 0xff, 0xf8, 0x00, 0x3f, 0xf0, 0x00,
0x78, 0x00, 0xf0, 0x70, 0x00, 0x38, 0x01, 0xc0, 0x07, 0x07, 0x07, 0xff, 0xff, 0xff, 0x00, 0x00,
0x70, 0x00, 0x70, 0x78, 0x00, 0x70, 0x01, 0x80, 0x0e, 0x1e, 0x00, 0x17, 0xff, 0xc0, 0x00, 0x00,
0xe0, 0x7f, 0xf8, 0x3c, 0x00, 0xf0, 0x03, 0x80, 0x1c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe0, 0xff, 0xf8, 0x1f, 0x03, 0xe0, 0x03, 0x00, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe0, 0x00, 0x38, 0x0f, 0xff, 0x80, 0x07, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe0, 0x00, 0x38, 0x03, 0xff, 0x00, 0x0e, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe0, 0x00, 0x38, 0x00, 0x78, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe0, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe0, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe0, 0x00, 0x38, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe0, 0xff, 0xf8, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xe0, 0xff, 0xf8, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x60, 0x00, 0x70, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x70, 0x00, 0x71, 0xc0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3c, 0x01, 0xe1, 0xfc, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1f, 0xff, 0xc0, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0f, 0xff, 0x00, 0x1f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 1040)
const int epd_bitmap_allArray_LEN1 = 1;
const unsigned char* epd_bitmap_allArray1[1] = {
epd_bitmap_emoji
};
void setup() {
Serial.begin(115200);
pinMode(Sellect, INPUT);
WiFi.mode(WIFI_STA);
WiFi.disconnect();
oled.begin(SSD1306_SWITCHCAPVCC, 0x3c);
oled.clearDisplay();
//TampilanAwal();
SelectWIFI();
//state = 0;
}
void loop() {
/////////////////////////////////////////////////////// MENU AWAL
if (analogRead(Horizontal) < 2040 && state == 0){ // Pilih No
oled.clearDisplay();
while(analogRead(Horizontal) < 2040);
TampilanAwal();
oled.drawRoundRect(13, 46, 45, 14, 6, WHITE);
oled.setCursor(27,49);
oled.setTextColor(WHITE);
oled.printf("Yes");
oled.fillRoundRect(69, 46, 45, 14, 6, WHITE);
oled.setCursor(86,49);
oled.setTextColor(BLACK);
oled.printf("No");
oled.display();
state = 1;
}
if (analogRead(Horizontal) > 2050 && state == 0){ // Pilih yes
oled.clearDisplay();
while(analogRead(Horizontal) > 2050);
TampilanAwal();
oled.fillRoundRect(13, 46, 45, 14, 6, WHITE);
oled.setCursor(27,49);
oled.setTextColor(BLACK);
oled.printf("Yes");
oled.drawRoundRect(69, 46, 45, 14, 6, WHITE);
oled.setCursor(86,49);
oled.setTextColor(WHITE);
oled.printf("No");
oled.display();
state = 2;
}
if (digitalRead(Sellect) == 1 && state == 1){ // No teken button
oled.drawBitmap(0, 0, epd_bitmap_emoji, 128, 64, WHITE, BLACK);
oled.display();
delay(3000);
oled.clearDisplay();
TampilanAwal();
state = 0;
}
if (digitalRead(Sellect) == 1 && state == 2){ // yes teken button
oled.clearDisplay();
while(digitalRead(Sellect) == 1);
CariWIFI();
}
/////////////////////////////////////////////////////// MENU AWAL
/////////////////////////////////////////////////////// MENU SSID
if (analogRead(Vertical) > 2050 && state == 2){
oled.clearDisplay();
while(analogRead(Vertical) > 2050);
oled.setCursor(10,9);
oled.setTextColor(WHITE);
oled.setTextSize(1);
oled.printf("SSID");
oled.setCursor(10,26);
oled.printf("PSWD");
oled.setCursor(97,52);
oled.setTextSize(0);
oled.printf("Back");
oled.display();
row--;
delay(100);
if (row < 1){
row = 3;
}
}
if (analogRead(Vertical) < 2040 && state == 2){
oled.clearDisplay();
while(analogRead(Vertical) < 2040);
oled.setCursor(10,9);
oled.setTextColor(WHITE);
oled.setTextSize(1);
oled.printf("SSID");
oled.setCursor(10,26);
oled.printf("PSWD");
oled.setCursor(97,52);
oled.setTextSize(0);
oled.printf("Back");
oled.display();
row++;
delay(100);
if (row > 3){
row = 1;
}
}
if (state == 2 && row == 1){
oled.fillRoundRect(40, 6, 85, 14, 6, WHITE);
oled.drawRoundRect(40, 23, 85, 14, 6, WHITE);
oled.drawRoundRect(90, 49, 35, 14, 6, WHITE);
oled.setCursor(97,52);
oled.setTextSize(0);
oled.setTextColor(WHITE);
oled.printf("Back");
oled.display();
}
if (state == 2 && row == 2){
oled.drawRoundRect(40, 6, 85, 14, 6, WHITE);
oled.fillRoundRect(40, 23, 85, 14, 6, WHITE);
oled.drawRoundRect(90, 49, 35, 14, 6, WHITE);
oled.setCursor(97,52);
oled.setTextSize(0);
oled.setTextColor(WHITE);
oled.printf("Back");
oled.display();
}
if (state == 2 && row == 3){
oled.drawRoundRect(40, 6, 85, 14, 6, WHITE);
oled.drawRoundRect(40, 23, 85, 14, 6, WHITE);
oled.fillRoundRect(90, 49, 35, 14, 6, WHITE);
oled.setCursor(97,52);
oled.setTextSize(0);
oled.setTextColor(BLACK);
oled.printf("Back");
oled.display();
}
if (digitalRead(Sellect) == 1 && state == 2 && row == 3){
oled.clearDisplay();
while(digitalRead(Sellect) == 1);
TampilanAwal();
row = 0;
state = 0;
}
if (digitalRead(Sellect) == 1 && state == 2 && row == 1){
oled.clearDisplay();
while(digitalRead(Sellect) == 1);
}
/////////////////////////////////////////////////////// MENU SSID
}
void TampilanAwal(){
oled.drawBitmap(0, 0, epd_bitmap_Scr11, 128, 16, WHITE, BLACK);
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.setCursor(0,3);
oled.printf("By:Althaf_SGS");
oled.drawRoundRect(13, 20, 102, 23, 10, WHITE);
oled.setCursor(17,28);
oled.printf("Connect to WiFi!");
oled.drawRoundRect(13, 46, 45, 14, 6, WHITE);
oled.setCursor(27,49);
oled.setTextColor(WHITE);
oled.printf("Yes");
oled.drawRoundRect(69, 46, 45, 14, 6, WHITE);
oled.setCursor(86,49);
oled.setTextColor(WHITE);
oled.printf("No");
oled.display();
}
void CariWIFI(){
oled.drawRoundRect(40, 6, 85, 14, 6, WHITE);
oled.drawRoundRect(40, 23, 85, 14, 6, WHITE);
oled.drawRoundRect(90, 49, 35, 14, 6, WHITE);
oled.setCursor(10,9);
oled.setTextColor(WHITE);
oled.setTextSize(1);
oled.printf("SSID");
oled.setCursor(10,26);
oled.printf("PSWD");
oled.setCursor(97,52);
oled.setTextSize(0);
oled.printf("Back");
oled.display();
}
void SelectWIFI(){
oled.setCursor(0,0);
oled.setTextColor(WHITE);
oled.setTextSize(1);
oled.print("No.|");
oled.setCursor(15,0);
oled.print(" SSID |");
oled.setCursor(107,0);
oled.print("O/S");
oled.setCursor(15,20);
oled.setTextSize(2);
oled.print("Scanning");
oled.drawLine(0, 10, 128, 10, WHITE);
oled.display();
for(int r = 5; r <= 119; r+=5){
delay(1);
oled.fillRect(5, 43, r, 16, WHITE);
oled.display();
}
}