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

}