Графика и анимация
Прыгающий мяч: фигуры, координаты и плавное движение.
Анимация — это быстрая смена кадров. Каждый кадр мы очищаем буфер, сдвигаем мяч и рисуем всё заново.
#include <U8g2lib.h>
#include <Wire.h>
// Встроенный экран 0.42": контроллер SSD1306, видимая область 72×40.
// Аргументы: поворот, вывод сброса (нет), SCL = GPIO6, SDA = GPIO5.
U8G2_SSD1306_72X40_ER_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, 6, 5);
const int R = 4; // радиус мяча
int x = 20, y = 12; // положение
int dx = 2, dy = 1; // скорость
void setup() {
u8g2.begin();
}
void loop() {
x += dx;
y += dy;
if (x <= R + 1 || x >= 70 - R) dx = -dx; // отскок от стенок
if (y <= R + 1 || y >= 38 - R) dy = -dy;
u8g2.clearBuffer();
u8g2.drawFrame(0, 0, 72, 40);
u8g2.drawDisc(x, y, R);
u8g2.sendBuffer();
delay(20); // около 50 кадров в секунду
}Полезные фигуры
drawPixel(x, y)— точкаdrawLine(x1, y1, x2, y2)— линияdrawBox(x, y, w, h)/drawFrame(...)— залитый / пустой прямоугольникdrawDisc(x, y, r)/drawCircle(...)— круг / окружностьdrawRBox(x, y, w, h, r)— прямоугольник со скруглёнными углами
Задание: добавьте второй мяч или сделайте так, чтобы при каждом отскоке мигал светодиод на GPIO8.