#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define oled_reset -1
#define screen_width 128
#define screen_height 64
#define GREEN 0x07E0
Adafruit_SSD1306 a(screen_width,screen_height, &Wire, oled_reset);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
if (!a.begin(SSD1306_SWITCHCAPVCC,0x3C)){//address of oled display
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(2000);
a.clearDisplay();
a.setTextSize(2);
a.setTextColor(WHITE);
a.setCursor(16, 25);
a.println("BiliBili");
a.display();
delay(2000);
a.clearDisplay();
}
void loop() {
drawLike(5,24,a);
drawCoin(64,28,13,a);
drawSave(93,24,a);
a.display();
// put your main code here, to run repeatedly:
//a.fillRect(5,24,8,16,WHITE);
//a.fillRect(15,24,20,16,WHITE);
//a.fillTriangle(35,24,35,40,30,40,BLACK);
//a.fillTriangle(15,24,22,24,22,15,WHITE);
//a.display();
}
void drawLike(int startx,int starty,Adafruit_SSD1306 a){
//b = int []{};//used for collision detection
if (((startx<0 || startx+30>128)||(starty-9<0 || starty+16>128))||(starty<0)){
a.setTextSize(1);
a.setTextColor(WHITE);
a.setCursor(5, 25);
a.println("The Shape cannot be fully painted!");
a.display();
delay(2000);
a.clearDisplay();
}
else{
a.fillRect(startx,starty,8,16,WHITE);
a.fillRect(startx+10,starty,20,16,WHITE);
a.fillTriangle(startx+30,starty,startx+30,starty+16,startx+25,starty+16,BLACK);
a.fillTriangle(startx+10,starty,startx+17,starty,startx+17,starty-9,WHITE);
}
}
void drawCoin(int centerx,int centery,int radius,Adafruit_SSD1306 a){
a.fillCircle(centerx,centery,radius,WHITE);
a.drawLine(centerx-radius+ceil(0.5*radius),centery-ceil(0.2*radius),centerx+radius-ceil(0.5*radius),centery-ceil(0.4*radius),BLACK);
a.drawFastVLine(centerx-radius+ceil(0.55*radius),centery-ceil(0.0625*radius),ceil(0.5*radius),BLACK);
a.drawFastVLine(centerx+radius-ceil(0.55*radius),centery-ceil(0.0625*radius),ceil(0.5*radius),BLACK);
a.drawFastVLine(centerx,centery-ceil(0.2*radius),radius,BLACK);
a.drawFastHLine(centerx-radius+ceil(0.55*radius),centery-ceil(0.0625*radius),ceil(0.9*radius),BLACK);
}
void drawSave(int startx,int starty,Adafruit_SSD1306 a){
a.fillTriangle(startx,starty,startx+26,starty,startx+13,starty+9.5,WHITE);
a.fillTriangle(startx+13,starty-9,startx+13,starty+9.5,startx+5,starty+16,WHITE);
a.fillTriangle(startx+13,starty-9,startx+13,starty+9.5,startx+21,starty+16,WHITE);
}