#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "FreeMonoBold18pt7b.h"
Adafruit_SSD1306 display(128, 64, &Wire, 4, 800000UL, 100000UL);
//Make Sure Address is Correct
#define OLED_ADDRESS 0x3C
#define rem 2
#define kiri 4
#define kanan 3
int i=0;
int j=0;
int k=0;
void panah_kiri();
void panah_kanan();
void Stop_blink();
void Rem_blink();
void setup1() {
pinMode(kiri, INPUT);
pinMode(kanan, INPUT);
pinMode(rem, INPUT);
}
void loop1() {
int tombolkiri=digitalRead(kiri);
int tombolkanan=digitalRead(kanan);
int tombolrem=digitalRead(rem);
if (tombolkiri==1 and tombolkanan==1)
{
setup();
}
if (tombolkiri==1)
{
j++;
if(j==1)
{
//Isi tampilan panah kiri
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(WHITE);
display.setCursor(25, 5);
display.println("BELOK");
display.setCursor(30, 40);
display.println("KIRI");
display.display();
delay(600);
display.clearDisplay();
}
panah_kiri();
k=0;
}
else if (tombolkanan==1)
{
j++;
if(j==1)
{
//Isi tampilan panah kanan
}
panah_kanan();
k=0;
}
else if (tombolrem==1)
{
//Isi tampilan rem
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(WHITE);
display.setCursor(25, 5);
display.println("AWAS !");
display.setCursor(30, 40);
display.println("STOP");
display.display();
delay(600);
display.clearDisplay();
}
else
{
j=0;
k++;
if(k==1)
{
//Isi tampilan kosong
}
if ( k>10) {k=2;}
}
}
static const unsigned char pointy[] PROGMEM ={
0x60, 0x06, 0xf0, 0x0f, 0xf8, 0x1f, 0x7c, 0x3e, 0x3e, 0x7c, 0x1f, 0xf8, 0x0f, 0xf0, 0x07, 0xe0,
0x03, 0xc0, 0x01, 0x80,
};
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3c); // initialize with the I2C addr 0x3D (for the 128x64)
display.clearDisplay();
display.setTextColor(WHITE);
display.setRotation(0);// Rotate the display at the start: 0, 1, 2 or 3 = (0, 90, 180 or 270 degrees)
display.clearDisplay();
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDRESS);
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(WHITE);
display.setCursor(35, 5);
display.println("SBM");
display.setCursor(20, 40);
display.println("MOTOR");
display.display();
delay(600);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(47, 8);
display.println("LCD");
display.setCursor(35, 40);
display.println("BRAKE");
display.display();
delay(600);
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(WHITE);
display.setCursor(25, 5);
display.println("LET'S");
display.setCursor(15, 40);
display.println("DRIVE!!!");
display.display();
delay(600);
display.clearDisplay();
}
void loop() {
boing();
boing();
boing();
drawOpeneyes(22, 26);
delay(500);
drawClosedyes(22);
delay(200);
drawOpeneyes(22, 26);
delay(300);
drawClosedyes(22);
delay(300);
drawNarrowMouth(16, 16);
delay(500);
boing();
boing();
boing();
WTF();
boing();
boing();
drawOpeneyes(22, 26);
delay(600);
drawClosedyes(22);
delay(300);
drawOpeneyes(22, 26);
delay(600);
boing();
WTF();
}
void drawOpeneyes(int eyeWidth, int eyeHeight) {
display.clearDisplay();
display.fillRoundRect(0, 20, eyeWidth, eyeHeight, eyeWidth/2, WHITE);
display.fillRoundRect(display.width()-eyeWidth, 20, eyeWidth, eyeHeight, eyeWidth/2, WHITE);
display.fillRoundRect(display.width()/2-20, display.height()-10, 40, 10, 5, WHITE);
display.display();
}
void drawClosedyes(int eyeWidth) {
display.clearDisplay();
display.fillRoundRect(0, 28, eyeWidth, 6, 3, WHITE);
display.fillRoundRect(display.width()-eyeWidth, 28, eyeWidth, 6, 3, WHITE);
display.fillRoundRect(display.width()/2-20, display.height()-10, 40, 10, 5, WHITE);
display.display();
}
void drawNarrowMouth(int eyeWidth, int eyeHeight) {
display.clearDisplay();
display.fillRoundRect(0, 20, eyeWidth, eyeHeight, eyeWidth/2, WHITE);
display.fillRoundRect(display.width()-eyeWidth, 20, eyeWidth, eyeHeight, eyeWidth/2, WHITE);
display.fillRoundRect(display.width()/2-35, display.height()-10, 70, 10, 5, WHITE);
display.display();
}
void fucku(int hurufy) {
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setFont(&FreeMonoBold18pt7b);
display.setCursor(1, hurufy);
display.println("FUCK U");
display.display();
}
void boing() {
int eyeWidth = 22, eyeHeight = 26, animSpeed = 10, eyeStretch = 10;
int eyePosY;
for(int i = -eyeStretch ; i <= 50-26; i+=animSpeed){
eyePosY = max(i, 0);
display.clearDisplay();
display.fillRoundRect(0, eyePosY, eyeWidth, eyeHeight, eyeWidth/2, WHITE);
display.fillRoundRect(display.width()-eyeWidth, eyePosY, eyeWidth, eyeHeight, eyeWidth/2, WHITE);
display.drawBitmap(display.width()/2-8, display.height()-20, pointy, 16, 10, WHITE);
display.display();
if(i>=64-eyeWidth-eyeStretch) eyeHeight -= animSpeed;
else if(i<0) eyeHeight += animSpeed;
}
for(int i = 50-26; i > -eyeStretch; i-=animSpeed){
eyePosY = max(i, 0);
display.clearDisplay();
display.fillRoundRect(0, eyePosY, eyeWidth, eyeHeight, eyeWidth/2, WHITE);
display.fillRoundRect(display.width()-eyeWidth, eyePosY, eyeWidth, eyeHeight, eyeWidth/2, WHITE);
display.drawBitmap(display.width()/2-8, display.height()-20, pointy, 16, 10, WHITE);
display.display();
if(i>64-eyeWidth-eyeStretch) eyeHeight += animSpeed;
else if(i<=0) eyeHeight -= animSpeed;
}
}
void WTF() {
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(WHITE);
display.setCursor(35, 5);
display.println("SBM");
display.setCursor(20, 40);
display.println("MOTOR");
display.display();
delay(600);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(40, 8);
display.println("AREK");
display.setCursor(35, 40);
display.println("ILANG");
display.display();
delay(600);
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(WHITE);
display.setCursor(25, 5);
display.println("LET'S");
display.setCursor(15, 40);
display.println("DRIVE!!!");
display.display();
delay(600);
display.clearDisplay();
fucku(35);
delay(10);
display.clearDisplay();
fucku(30);
delay(10);
display.clearDisplay();
fucku(25);
delay(10);
display.clearDisplay();
fucku(20);
delay(10);
display.clearDisplay();
fucku(25);
delay(10);
display.clearDisplay();
fucku(30);
delay(10);
display.clearDisplay();
fucku(35);
delay(10);
display.clearDisplay();
fucku(40);
delay(10);
display.clearDisplay();
fucku(45);
delay(10);
display.clearDisplay();
fucku(50);
delay(10);
display.clearDisplay();
fucku(55);
delay(10);
display.clearDisplay();
fucku(50);
delay(10);
display.clearDisplay();
fucku(45);
delay(10);
display.clearDisplay();
fucku(40);
delay(600);
display.clearDisplay();
display.setFont();
}