#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(); } } |