/*
======================
Bahan
- Arduino
- SSD1306 OLED
- MPU 6050
- Resistor
======================
*/
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <Adafruit_NeoPixel.h>
Adafruit_SSD1306 display( 128, 64); // 128 pixels width, 64 pixels height
#define LED_PIN 6
#define LED_COUNT 1
Adafruit_NeoPixel neoPixel( LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
const int mpuAddress = 0x68; // I2C address of the MPU-6050
float xByGyro, yByGyro, zByGyro; // Global variables for the rotation by gyro
// Set the origin in the middle of the display
const int xOrigin = 64;
const int yOrigin = 32;
const float viewDistance = 150.0; // higher for less perspective, lower for more.
// Vertices for a cube
// A cube has 8 corners and each coordinate has x,y,z values.
#define NUM_VERTICES 8
const int cube_vertex[NUM_VERTICES][3] =
{
{ -20, -20, 20 }, // x, y, z
{ 20, -20, 20 },
{ 20, 20, 20 },
{ -20, 20, 20 },
{ -20, -20, -20 },
{ 20, -20, -20 },
{ 20, 20, -20 },
{ -20, 20, -20 }
};
// The wirefram is to display the lines on the OLED display
// It contains the corners of the shape in 2D coordinates
int wireframe[NUM_VERTICES][2];
// 'OIP', 128x64px
const unsigned char epd_bitmap_OIP [] PROGMEM = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xf8, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xe0, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x80, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xfe, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xfc, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x07, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x07, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x07, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf8, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff,
0xfc, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0xff,
0xf8, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x7f,
0xe0, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xf0, 0x7f,
0xe0, 0xc0, 0x01, 0xff, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xf0, 0x7f,
0xc3, 0xe0, 0x03, 0xff, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xf0, 0x7f,
0xc7, 0xf8, 0x07, 0xff, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xf0, 0x7f,
0xc7, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xf0, 0x7f,
0xcf, 0xfe, 0x1f, 0xff, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xf0, 0x7f,
0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xf0, 0x7f,
0xcf, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xf0, 0x7f,
0xcf, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xe0, 0x7f, 0xcf, 0xfc, 0x1f, 0xff, 0xfe, 0x7f, 0xf0, 0x7f,
0xcf, 0xfc, 0x1e, 0x3c, 0xff, 0xfc, 0x60, 0x7f, 0x03, 0xfc, 0x18, 0xff, 0xf8, 0x1f, 0xf0, 0x07,
0xcf, 0xfc, 0x1c, 0x18, 0x3f, 0xf8, 0x20, 0x7e, 0x01, 0xfc, 0x10, 0x7f, 0xf0, 0x0f, 0xc0, 0x03,
0xff, 0xfc, 0x1c, 0x10, 0x1f, 0xf0, 0x00, 0x7c, 0x00, 0xfc, 0x00, 0x3f, 0xe0, 0x07, 0x80, 0x03,
0xff, 0xfc, 0x1c, 0x00, 0x1f, 0xe0, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x1f, 0xc0, 0x03, 0x80, 0x03,
0xff, 0xfc, 0x1c, 0x00, 0x0f, 0xe0, 0x00, 0x78, 0x00, 0x7c, 0x00, 0x0f, 0xc0, 0x03, 0x80, 0x03,
0xff, 0xfc, 0x1c, 0x00, 0x0f, 0xc0, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x0f, 0x80, 0x01, 0x80, 0x03,
0xff, 0xfc, 0x1c, 0x00, 0x07, 0xc0, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x0f, 0x80, 0x01, 0x80, 0x03,
0xff, 0xfc, 0x1c, 0x00, 0x07, 0x80, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x07, 0x80, 0x01, 0x80, 0x03,
0xff, 0xfc, 0x1c, 0x00, 0x07, 0x80, 0x00, 0x70, 0x00, 0x1c, 0x00, 0x07, 0x00, 0x00, 0x80, 0x03,
0xff, 0xfc, 0x1c, 0x00, 0x07, 0x80, 0x00, 0x60, 0x00, 0x1c, 0x00, 0x07, 0x00, 0x00, 0xc0, 0x03,
0xff, 0xfc, 0x1c, 0x00, 0x03, 0x80, 0x00, 0x60, 0x30, 0x1c, 0x00, 0x03, 0x01, 0x80, 0xc0, 0x07,
0xff, 0xfc, 0x1c, 0x0e, 0x03, 0x81, 0xc0, 0x60, 0x78, 0x1c, 0x0e, 0x03, 0x03, 0xc0, 0xf0, 0x7f,
0xff, 0xfc, 0x1c, 0x0f, 0x03, 0x03, 0xc0, 0x60, 0x7c, 0x1c, 0x0f, 0x03, 0x07, 0xc0, 0xf0, 0x7f,
0xff, 0xfc, 0x1c, 0x1f, 0x03, 0x03, 0xe0, 0x60, 0xfc, 0x1c, 0x1f, 0x03, 0x07, 0xe0, 0xf0, 0x7f,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0x03, 0xe0, 0x60, 0xfc, 0x0c, 0x1f, 0x03, 0x07, 0xe0, 0xf0, 0x7f,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0x03, 0xe0, 0x60, 0xfc, 0x0c, 0x1f, 0x83, 0x07, 0xe0, 0xf0, 0x7f,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0x03, 0xe0, 0x60, 0xfc, 0x0c, 0x1f, 0x83, 0x07, 0xe0, 0xf0, 0x7f,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0x03, 0xe0, 0x60, 0xfc, 0x0c, 0x1f, 0x03, 0x07, 0xe0, 0xf0, 0x7f,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0x03, 0xe0, 0x60, 0xfc, 0x0c, 0x1f, 0x03, 0x07, 0xe0, 0xf0, 0x7f,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0x03, 0xe0, 0x60, 0xfc, 0x1c, 0x0f, 0x03, 0x07, 0xe0, 0xf0, 0x7f,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0x01, 0xc0, 0x60, 0x78, 0x1c, 0x0e, 0x03, 0x03, 0xc0, 0xf0, 0x7f,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0x80, 0x80, 0x60, 0x38, 0x1c, 0x06, 0x03, 0x03, 0x80, 0xf0, 0x3f,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0x80, 0x00, 0x60, 0x00, 0x1c, 0x00, 0x07, 0x00, 0x00, 0xf0, 0x0f,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0x80, 0x00, 0x60, 0x00, 0x1c, 0x00, 0x07, 0x00, 0x00, 0xf0, 0x07,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0x80, 0x00, 0x70, 0x00, 0x1c, 0x00, 0x07, 0x80, 0x01, 0xf0, 0x07,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0xc0, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x07, 0x80, 0x01, 0xf0, 0x07,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0xc0, 0x00, 0x70, 0x00, 0x3c, 0x00, 0x0f, 0x80, 0x01, 0xf8, 0x07,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0xc0, 0x00, 0x78, 0x00, 0x7c, 0x00, 0x0f, 0xc0, 0x03, 0xf8, 0x07,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0xe0, 0x00, 0x78, 0x00, 0x7c, 0x00, 0x1f, 0xc0, 0x03, 0xf8, 0x07,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0xe0, 0x00, 0x7c, 0x00, 0xfc, 0x00, 0x1f, 0xe0, 0x07, 0xfc, 0x07,
0xff, 0xfc, 0x1c, 0x1f, 0x83, 0xf0, 0x00, 0xfe, 0x00, 0xfc, 0x00, 0x3f, 0xf0, 0x07, 0xfe, 0x07,
0xff, 0xfe, 0x1c, 0x3f, 0x87, 0xf8, 0x30, 0xff, 0x01, 0xfc, 0x10, 0x7f, 0xf8, 0x0f, 0xff, 0x07,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf9, 0xff, 0x87, 0xfe, 0x7c, 0xff, 0xfc, 0x3f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
};
// Array of all bitmaps for convenience. (Total bytes used to store images in PROGMEM = 1040)
const int epd_bitmap_allArray_LEN = 1;
const unsigned char* epd_bitmap_allArray[1] = {
epd_bitmap_OIP
};
// salin sampai disini
void setup()
{
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize I2C addr to 0x3C ( for 128x64 Display )
display.clearDisplay(); // clear the display before starting the program to avoid adafruit splashscreen ( *we can also skip it by modifing header file )
// drawBitmap(x-axis position, y-axis position, bitmap data, bitmap width, bitmap height, color)
}
void loop()
{
display.clearDisplay();
display.drawBitmap(0, 0, epd_bitmap_OIP, 128, 64, WHITE);
display.display();
delay(1000);
}