#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
// OLED display TWI address
#define OLED_ADDR 0x3C
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
double sint ;
double cost ;
double radt ;
const float pi = 3.14159 ;
double u ; // coordonnes du point sur le cercle (avec décimal)
double v ; // coordonnes du point sur le cercle (avec décimal)
int x1; // coordonnes du point sur le cercle arrondi
int y1; // coordonnes du point sur le cercle arrondi
int x0 = 64; // coordonnes du centre du cercle
int y0 = 16; // coordonnes du centre du cercle
int r = 18; // rayon du cercle
int t ;
void setup() {
Serial.begin(9600);
// initialize and clear display
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
display.clearDisplay();
display.display();
}
void loop() {
for (int t = 1; t < 361; t = t+3) { // boucle pour 360°(avec un pas de 3)
double radt = t * (pi / 180);
double sint = sin(radt);
double cost = cos(radt);
u = (int) x0 + (r*cost);
v = (int) y0 + (r*sint);
x1 = round(u); // arrondi à l'entier le plus proche
y1 = round(v); // arrondi à l'entier le plus proche
display.drawCircle(64, 16, 14, WHITE);
delay(10); //
display.drawCircle(64, 16, 8, WHITE);
delay(10); //
display.drawCircle(64, 16, 4, WHITE);
delay(10); // Pause
display.drawLine(64, 16, x1, y1, WHITE);
delay(10); // Pause
display.drawPixel(73, 9, WHITE); // écho radar
display.drawPixel(72, 10, WHITE);
display.drawPixel(74, 10, WHITE);
display.drawPixel(73, 11, WHITE);
delay(10); // Pause
display.display();
delay(10);
display.clearDisplay();
}
}
|