#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
int snowX[10];
int snowY[10];
int h=8;
int k=9;
int r1=11;
int r2=11;
int r3=11;
int r4=11;
int r5=11;
int r6=11;
int r7=11;
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(9600);
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (1);
}
oled.clearDisplay();
for (int i=0;i<10;i++){
snowX[i]=random(0,SCREEN_HEIGHT);
snowY[i]=random(-SCREEN_HEIGHT,0);
}
}
void Snow(){
for (int i=0; i<10;i++){
oled.fillCircle(snowX[i], snowY[i], 1.5, WHITE);
snowY[i]+=2;
if (snowY[i]>SCREEN_HEIGHT){
snowX[i]=random(0,SCREEN_HEIGHT);
snowY[i]=random(-SCREEN_HEIGHT,0);
}
}
}
void loop() {
oled.clearDisplay();
Snow();
oled.drawLine(128, 58, 0, 58, WHITE);
oled.drawLine(128, 59, 0, 59, WHITE);
oled.drawLine(128, 60, 0, 60, WHITE);
oled.drawLine(128, 61, 0, 61, WHITE);
//тело
oled.drawCircle(64, 45, 12, WHITE);
oled.drawCircle(64, 25, 9, WHITE);
oled.drawCircle(64, 9, 8, WHITE);
//глаза
oled.fillCircle(62, 5, 1, WHITE);
oled.fillCircle(66, 5, 1, WHITE);
//нос
oled.fillCircle(64, h, 1, WHITE);
oled.fillCircle(64, k, 1, WHITE);
//рот
oled.fillCircle(61, r1, 0.1, WHITE);
oled.fillCircle(62, r2, 0.1, WHITE);
oled.fillCircle(63, r3, 0.1, WHITE);
oled.fillCircle(64, r4, 0.1, WHITE);
oled.fillCircle(65, r5, 0.1, WHITE);
oled.fillCircle(66, r6, 0.1, WHITE);
oled.fillCircle(67, r7, 0.1, WHITE);
//руки
oled.drawLine(45, 30, 56, 20, WHITE);
oled.drawLine(81, 30, 72, 20, WHITE);
delay(1000);
if (r1!=8){
r1--;
r7--;
}
if (r2!=9){
r2--;
r6--;
}
if (r3!=10){
r3--;
r5--;
}
if (h<56 && k<55){
h=h+10;
k=h+10;
if (h>56 or k>55){
h=56;
k=55;
}
}
oled.display();
}