#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <EEPROM.h>
#define BUTTON_RED 14
#define BUTTON_WHITE 32
#define BUTTON_BLUE 33
#define BUTTON_GREEN 12
#define Buzz 18
#define BIRD_SIZE 16
#define OLED_WIDTH 128
#define OLED_HEIGHT 64
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 oled(OLED_WIDTH, OLED_HEIGHT, &Wire, OLED_RESET);
long frekNumber;
const unsigned char epd_bitmap_logo_persegi_128x64_pix_bg_hitam [] 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, 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, 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, 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,
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, 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, 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, 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,
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, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3f, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7f, 0x83, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7f, 0x83, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3f, 0x83, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3f, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3f, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3f, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
0x00, 0x3f, 0x0f, 0xff, 0xfe, 0x1f, 0xe0, 0x00, 0x00, 0x6c, 0x7f, 0xff, 0x00, 0x00, 0x18, 0x00,
0x00, 0x1e, 0x07, 0xff, 0xfe, 0x1f, 0xf8, 0x00, 0x00, 0x6d, 0xff, 0xff, 0x00, 0x00, 0x18, 0x00,
0x00, 0x00, 0x01, 0xff, 0xfe, 0x00, 0x38, 0x00, 0x00, 0x61, 0xc0, 0x30, 0x00, 0x00, 0x18, 0x00,
0x00, 0x00, 0x00, 0x07, 0xfc, 0x0c, 0x19, 0x87, 0x0f, 0xe1, 0x80, 0x30, 0x78, 0x1f, 0x1b, 0xc0,
0x07, 0x01, 0xf8, 0x03, 0xf8, 0x1c, 0x39, 0x87, 0x3f, 0xe1, 0xc0, 0x30, 0xfe, 0x3f, 0x9f, 0xe0,
0x0f, 0x81, 0xfc, 0x03, 0xe0, 0x1c, 0xf1, 0x87, 0x30, 0xe1, 0xf8, 0x31, 0x86, 0x70, 0x9c, 0x70,
0x0f, 0x81, 0xfc, 0x03, 0xe0, 0x1c, 0xf1, 0x87, 0x70, 0xe0, 0x7e, 0x33, 0x87, 0x60, 0x18, 0x30,
0x07, 0x01, 0xf8, 0x03, 0xf8, 0x1c, 0x39, 0x87, 0x60, 0x60, 0x0e, 0x33, 0xff, 0x60, 0x18, 0x30,
0x00, 0x00, 0x00, 0x07, 0xfc, 0x1c, 0x1d, 0x87, 0x60, 0x60, 0x07, 0x33, 0xfe, 0x60, 0x18, 0x30,
0x00, 0x00, 0x01, 0xff, 0xfe, 0x1c, 0x1d, 0x87, 0x70, 0x00, 0x07, 0x31, 0x80, 0x70, 0x18, 0x30,
0x00, 0x1e, 0x07, 0xff, 0xfe, 0x1f, 0xf9, 0xff, 0x38, 0x00, 0x0e, 0x31, 0xc6, 0x39, 0x98, 0x30,
0x00, 0x3f, 0x0f, 0xff, 0xfe, 0x1f, 0xf8, 0xff, 0x1f, 0xff, 0xfe, 0x30, 0xfe, 0x3f, 0x98, 0x30,
0x00, 0x3f, 0x0f, 0xff, 0xff, 0x0f, 0x80, 0x62, 0x07, 0xff, 0xf0, 0x30, 0x30, 0x0e, 0x18, 0x30,
0x00, 0x3f, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x07, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1e, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3f, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7f, 0x83, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7f, 0x83, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3f, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x07, 0xc0, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
static const unsigned char bird_frame1[] PROGMEM = {
B00000000, B00000000,
B00000000, B00000000,
B00001111, B10000000,
B00011111, B11100000,
B00111100, B11110000,
B01111111, B11111000,
B11111111, B11100100,
B11011111, B01111000,
B11011111, B01111000,
B11011111, B01111000,
B11001110, B01111000,
B01110001, B11110000,
B01111111, B11100000,
B00111111, B11000000,
B00000111, B00000000,
B00000000, B00000000
};
void setup() {
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
pinMode(BUTTON_RED, INPUT_PULLUP);
pinMode(BUTTON_BLUE, INPUT_PULLUP);
pinMode(BUTTON_GREEN, INPUT_PULLUP);
pinMode(BUTTON_WHITE, INPUT_PULLUP);
pinMode(Buzz, OUTPUT);
MyLogo();
oled.clearDisplay();
}
void loop() {
if(digitalRead(BUTTON_RED) == LOW){
Gb01(OLED_WIDTH/2, 0, 1000);
bunyi(8000);
}
if(digitalRead(BUTTON_BLUE) == LOW){
bunyi(6000);
}
if(digitalRead(BUTTON_WHITE) == LOW){
bunyi(4000);
}
if(digitalRead(BUTTON_GREEN) == LOW){
bunyi(2000);
}
}
void win_Tone(){
for (uint8_t i = 0; i < 10; i++){
frekNumber = random(3000,10000);
tone(Buzz, frekNumber);
// analogWrite(Vib_DC, 250);
delay(115);
}
noTone(Buzz);
// analogWrite(Vib_DC, 0);
}
void bunyi(int freq){
tone(Buzz, freq);
delay(90);
noTone(Buzz);
}
void MyLogo(){
oled.clearDisplay();
oled.display();
oled.drawBitmap(0, 0, epd_bitmap_logo_persegi_128x64_pix_bg_hitam, 128, 64, WHITE);
oled.display();
delay(2000); // Pause for 2 seconds
oled.clearDisplay();
oled.display();
}
void Gb01(int kolom, int baris, int tunda){
oled.clearDisplay();
oled.display();
oled.drawBitmap(kolom, baris, bird_frame1, BIRD_SIZE, BIRD_SIZE, WHITE);
oled.display();
delay(tunda); // Pause for 2 seconds
oled.clearDisplay();
oled.display();
}