523 lines
12 KiB
C++
523 lines
12 KiB
C++
//To be ran on Arduino IDE
|
|
#include <Wire.h>
|
|
//Make sure necessary packages are downloaded
|
|
#include <Adafruit_SSD1306.h>
|
|
|
|
//Make Sure Address is Correct
|
|
#define OLED_ADDRESS 0x3C
|
|
|
|
Adafruit_SSD1306 display(128, 64, &Wire, OLED_ADDRESS);
|
|
|
|
void setup() {
|
|
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDRESS);
|
|
display.clearDisplay();
|
|
display.setTextSize(2);
|
|
display.setTextColor(WHITE);
|
|
display.setCursor(28, 20);
|
|
display.println("STRAZZ");
|
|
display.setCursor(35, 40);
|
|
display.println("TUNED");
|
|
display.display();
|
|
delay(2000);
|
|
display.clearDisplay();
|
|
sleep();
|
|
wakeUp();
|
|
}
|
|
|
|
void loop() {
|
|
|
|
int randomNum = random(5);
|
|
|
|
if (randomNum == 1) {
|
|
regEyes();
|
|
randomNum = random(5);
|
|
}
|
|
if (randomNum == 2) {
|
|
heart();
|
|
randomNum = random(5);
|
|
}
|
|
if (randomNum == 3) {
|
|
carrotEyes();
|
|
randomNum = random(5);
|
|
}
|
|
if (randomNum == 4) {
|
|
sideEye();
|
|
randomNum = random(5);
|
|
}
|
|
if (randomNum == 5) {
|
|
sideEye();
|
|
randomNum = random(5);
|
|
}
|
|
}
|
|
|
|
void sleep() {
|
|
display.clearDisplay();
|
|
//blink
|
|
display.fillRect(36, 28, 20, 8, WHITE);
|
|
display.fillRect(76, 28, 20, 8, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 45, 32, 8, WHITE);
|
|
display.fillCircle(48, 48, 3, WHITE);
|
|
display.fillCircle(80, 48, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(3000);
|
|
display.clearDisplay();
|
|
|
|
|
|
//yawn
|
|
//blink
|
|
display.fillRect(36, 28, 20, 8, WHITE);
|
|
display.fillRect(76, 28, 20, 8, WHITE);
|
|
|
|
display.fillCircle(64, 50, 8, WHITE);
|
|
display.display();
|
|
delay(2000);
|
|
display.clearDisplay();
|
|
//blink
|
|
display.fillRect(36, 28, 20, 8, WHITE);
|
|
display.fillRect(76, 28, 20, 8, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 45, 32, 8, WHITE);
|
|
display.fillCircle(48, 48, 3, WHITE);
|
|
display.fillCircle(80, 48, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(3000);
|
|
display.clearDisplay();
|
|
//yawn
|
|
//blink
|
|
display.fillRect(36, 28, 20, 8, WHITE);
|
|
display.fillRect(76, 28, 20, 8, WHITE);
|
|
|
|
display.fillCircle(64, 50, 8, WHITE);
|
|
display.display();
|
|
delay(2000);
|
|
}
|
|
|
|
void wakeUp() {
|
|
display.clearDisplay();
|
|
//blink
|
|
display.fillRect(36, 28, 20, 8, WHITE);
|
|
display.fillRect(76, 28, 20, 8, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(3000);
|
|
display.clearDisplay();
|
|
|
|
//left wink
|
|
display.fillCircle(46, 32, 8, WHITE);
|
|
display.fillRect(76, 28, 20, 8, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(2000);
|
|
display.clearDisplay();
|
|
|
|
//blink
|
|
display.fillRect(36, 28, 20, 8, WHITE);
|
|
display.fillRect(76, 28, 20, 8, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(1000);
|
|
display.clearDisplay();
|
|
|
|
//right wink
|
|
display.fillRect(36, 28, 20, 8, WHITE);
|
|
display.fillCircle(80, 32, 8, WHITE);
|
|
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
display.display();
|
|
delay(2000);
|
|
display.clearDisplay();
|
|
|
|
//blink
|
|
display.fillRect(36, 28, 20, 8, WHITE);
|
|
display.fillRect(76, 28, 20, 8, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(1000);
|
|
display.clearDisplay();
|
|
|
|
// eyes
|
|
display.clearDisplay();
|
|
display.fillCircle(48, 32, 8, WHITE);
|
|
display.fillCircle(80, 32, 8, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(3000);
|
|
display.clearDisplay();
|
|
|
|
//blink
|
|
display.fillRect(36, 28, 20, 4, WHITE);
|
|
display.fillRect(76, 28, 20, 4, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(50);
|
|
|
|
// eyes
|
|
display.clearDisplay();
|
|
display.fillCircle(48, 32, 8, WHITE);
|
|
display.fillCircle(80, 32, 8, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(1000);
|
|
display.clearDisplay();
|
|
|
|
|
|
//blink
|
|
display.fillRect(44, 28, 10, 4, WHITE);
|
|
display.fillRect(76, 28, 10, 4, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(50);
|
|
}
|
|
|
|
void regEyes() { //Regular eyes with Blinking
|
|
// eyes
|
|
display.clearDisplay();
|
|
display.fillCircle(48, 32, 8, WHITE);
|
|
display.fillCircle(80, 32, 8, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(3000);
|
|
display.clearDisplay();
|
|
|
|
//blink
|
|
display.fillRect(44, 28, 10, 4, WHITE);
|
|
display.fillRect(76, 28, 10, 4, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(100);
|
|
|
|
//open
|
|
display.clearDisplay();
|
|
display.fillCircle(48, 32, 8, WHITE);
|
|
display.fillCircle(80, 32, 8, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(3000);
|
|
display.clearDisplay();
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
//blink
|
|
display.fillRect(44, 28, 10, 4, WHITE);
|
|
display.fillRect(76, 28, 10, 4, WHITE);
|
|
display.display();
|
|
delay(100);
|
|
}
|
|
|
|
void sideEye() {
|
|
// eyes
|
|
display.clearDisplay();
|
|
display.fillCircle(48, 32, 8, WHITE);
|
|
display.fillCircle(80, 32, 8, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(3000);
|
|
display.clearDisplay();
|
|
//blink
|
|
display.fillRect(32, 28, 10, 4, WHITE);
|
|
display.fillRect(96, 28, 10, 4, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(100);
|
|
display.clearDisplay();
|
|
|
|
//side eye
|
|
display.fillCircle(32, 32, 8, WHITE);
|
|
display.fillCircle(96, 32, 8, WHITE);
|
|
|
|
//mouth
|
|
display.fillRect(32, 55, 64, 8, WHITE);
|
|
display.fillCircle(32, 58, 3, WHITE);
|
|
display.fillCircle(96, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(3000);
|
|
display.clearDisplay();
|
|
|
|
//blink
|
|
display.fillRect(32, 28, 10, 4, WHITE);
|
|
display.fillRect(96, 28, 10, 4, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(100);
|
|
display.clearDisplay();
|
|
|
|
//side eye
|
|
display.fillCircle(32, 32, 8, WHITE);
|
|
display.fillCircle(96, 32, 8, WHITE);
|
|
|
|
//mouth
|
|
display.fillRect(32, 55, 64, 8, WHITE);
|
|
display.fillCircle(32, 58, 3, WHITE);
|
|
display.fillCircle(96, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(3000);
|
|
display.clearDisplay();
|
|
|
|
//blink
|
|
display.fillRect(32, 28, 10, 4, WHITE);
|
|
display.fillRect(96, 28, 10, 4, WHITE);
|
|
|
|
//small mouth
|
|
display.fillRect(48, 55, 32, 8, WHITE);
|
|
display.fillCircle(48, 58, 3, WHITE);
|
|
display.fillCircle(80, 58, 3, WHITE);
|
|
|
|
display.display();
|
|
delay(100);
|
|
display.clearDisplay();
|
|
}
|
|
|
|
void heart() {
|
|
display.clearDisplay();
|
|
|
|
int x1 = 44;
|
|
int y1 = 27;
|
|
int radius1 = 10;
|
|
|
|
// Draw the left heart
|
|
display.fillTriangle(x1 - radius1, y1, x1, y1 + radius1, x1 + radius1, y1, WHITE);
|
|
display.fillCircle(x1 - 5, y1, 5.5, WHITE);
|
|
display.fillCircle(x1 + 5, y1, 5.5, WHITE);
|
|
|
|
int x2 = 84;
|
|
int y2 = 27;
|
|
int radius2 = 10;
|
|
|
|
// Draw the right heart
|
|
display.fillTriangle(x2 - radius2, y2, x2, y2 + radius2, x2 + radius2, y2, WHITE);
|
|
display.fillCircle(x2 - 5, y2, 5.5, WHITE);
|
|
display.fillCircle(x2 + 5, y2, 5.5, WHITE);
|
|
|
|
//smile
|
|
display.fillCircle(64, 50, 12, WHITE); // full smile
|
|
display.fillRect(0, 38, 128, 12, BLACK); // hide top half of smile
|
|
|
|
display.display();
|
|
delay(4000);
|
|
|
|
//blink
|
|
display.clearDisplay();
|
|
|
|
//smallest mouth
|
|
display.fillRect(54, 54, 22, 4, WHITE);
|
|
|
|
display.fillRect(44, 28, 10, 4, WHITE);
|
|
display.fillRect(76, 28, 10, 4, WHITE);
|
|
display.display();
|
|
delay(100);
|
|
display.clearDisplay();
|
|
|
|
//smile
|
|
display.fillCircle(64, 50, 12, WHITE); // full smile
|
|
display.fillRect(0, 38, 128, 12, BLACK); // hide top half of smile
|
|
|
|
|
|
// Draw the left heart
|
|
display.fillTriangle(x1 - radius1, y1, x1, y1 + radius1, x1 + radius1, y1, WHITE);
|
|
display.fillCircle(x1 - 5, y1, 5.5, WHITE);
|
|
display.fillCircle(x1 + 5, y1, 5.5, WHITE);
|
|
|
|
// Draw the right heart
|
|
display.fillTriangle(x2 - radius2, y2, x2, y2 + radius2, x2 + radius2, y2, WHITE);
|
|
display.fillCircle(x2 - 5, y2, 5.5, WHITE);
|
|
display.fillCircle(x2 + 5, y2, 5.5, WHITE);
|
|
|
|
display.display();
|
|
delay(4000);
|
|
|
|
//blink
|
|
display.clearDisplay();
|
|
display.fillRect(44, 28, 10, 4, WHITE);
|
|
display.fillRect(76, 28, 10, 4, WHITE);
|
|
|
|
//smallest mouth
|
|
display.fillRect(54, 54, 22, 4, WHITE);
|
|
|
|
display.display();
|
|
delay(100);
|
|
display.clearDisplay();
|
|
|
|
// Draw the left heart
|
|
display.fillTriangle(x1 - radius1, y1, x1, y1 + radius1, x1 + radius1, y1, WHITE);
|
|
display.fillCircle(x1 - 5, y1, 5.5, WHITE);
|
|
display.fillCircle(x1 + 5, y1, 5.5, WHITE);
|
|
|
|
// Draw the right heart
|
|
display.fillTriangle(x2 - radius2, y2, x2, y2 + radius2, x2 + radius2, y2, WHITE);
|
|
display.fillCircle(x2 - 5, y2, 5.5, WHITE);
|
|
display.fillCircle(x2 + 5, y2, 5.5, WHITE);
|
|
|
|
//smile
|
|
display.fillCircle(64, 50, 12, WHITE); // full smile
|
|
display.fillRect(0, 38, 128, 12, BLACK); // hide top half of smile
|
|
|
|
|
|
display.display();
|
|
delay(4000);
|
|
|
|
//blink
|
|
display.clearDisplay();
|
|
|
|
display.clearDisplay();
|
|
display.fillRect(44, 28, 10, 4, WHITE);
|
|
display.fillRect(76, 28, 10, 4, WHITE);
|
|
|
|
//smallest mouth
|
|
display.fillRect(54, 54, 22, 4, WHITE);
|
|
|
|
display.display();
|
|
delay(100);
|
|
display.clearDisplay();
|
|
}
|
|
|
|
void carrotEyes() { // ^ shape eyes
|
|
display.clearDisplay();
|
|
|
|
int centerX = 42;
|
|
int centerY = 32;
|
|
int lineLength = 10;
|
|
|
|
// Draw the left ^ symbol
|
|
display.drawLine(centerX - lineLength, centerY + lineLength, centerX, centerY - lineLength, WHITE);
|
|
|
|
display.drawLine(centerX, centerY - lineLength, centerX + lineLength, centerY + lineLength, WHITE);
|
|
|
|
int centerXl = 90;
|
|
int centerYl = 32;
|
|
|
|
// Draw the right ^ symbol
|
|
display.drawLine(centerXl - lineLength, centerYl + lineLength, centerXl, centerYl - lineLength, WHITE);
|
|
|
|
display.drawLine(centerXl, centerYl - lineLength, centerXl + lineLength, centerYl + lineLength, WHITE);
|
|
|
|
//smile
|
|
display.fillCircle(64, 50, 12, WHITE); // full smile
|
|
display.fillRect(0, 38, 128, 12, BLACK); // hide top half of smile
|
|
|
|
display.display();
|
|
delay(4000);
|
|
display.clearDisplay();
|
|
|
|
//blink
|
|
//smallest mouth
|
|
display.fillRect(54, 54, 22, 4, WHITE);
|
|
|
|
display.fillRect(38, 32, 10, 4, WHITE);
|
|
display.fillRect(84, 32, 10, 4, WHITE);
|
|
display.display();
|
|
delay(50);
|
|
|
|
display.clearDisplay();
|
|
// Draw the left ^ symbol
|
|
display.drawLine(centerX - lineLength, centerY + lineLength, centerX, centerY - lineLength, WHITE);
|
|
|
|
display.drawLine(centerX, centerY - lineLength, centerX + lineLength, centerY + lineLength, WHITE);
|
|
|
|
// Draw the right ^ symbol
|
|
display.drawLine(centerXl - lineLength, centerYl + lineLength, centerXl, centerYl - lineLength, WHITE);
|
|
|
|
display.drawLine(centerXl, centerYl - lineLength, centerXl + lineLength, centerYl + lineLength, WHITE);
|
|
|
|
//smile
|
|
display.fillCircle(64, 50, 12, WHITE); // full smile
|
|
display.fillRect(0, 38, 128, 12, BLACK); // hide top half of smile
|
|
|
|
display.display();
|
|
delay(5000);
|
|
display.clearDisplay();
|
|
|
|
//blink
|
|
|
|
//smallest mouth
|
|
display.fillRect(54, 54, 22, 4, WHITE);
|
|
|
|
display.fillRect(38, 32, 10, 4, WHITE);
|
|
display.fillRect(84, 32, 10, 4, WHITE);
|
|
display.display();
|
|
delay(100);
|
|
display.clearDisplay();
|
|
} |