#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
#define BTN_LEFT 2
#define BTN_RIGHT 3
int paddleX = 54;
int paddleWidth = 20;
int ballX = 64;
int ballY = 30;
int ballDX = 2;
int ballDY = -2;
void setup() {
pinMode(BTN_LEFT, INPUT_PULLUP);
pinMode(BTN_RIGHT, INPUT_PULLUP);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
}
void loop() {
if(!digitalRead(BTN_LEFT)) paddleX -= 3;
if(!digitalRead(BTN_RIGHT)) paddleX += 3;
if(paddleX < 0) paddleX = 0;
if(paddleX > 108) paddleX = 108;
ballX += ballDX;
ballY += ballDY;
if(ballX <= 0 || ballX >= 128) ballDX = -ballDX;
if(ballY <= 0) ballDY = -ballDY;
if(ballY >= 58 && ballX > paddleX && ballX < paddleX + paddleWidth) {
ballDY = -ballDY;
}
if(ballY > 64) {
ballX = 64;
ballY = 30;
}
display.clearDisplay();
display.fillRect(paddleX,60,paddleWidth,3,WHITE);
display.fillCircle(ballX,ballY,2,WHITE);
display.display();
delay(20);
}