#include <Wire.h>
#include <U8g2lib.h>

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); 

unsigned long previousMillis = 0;
int seconds = 0;
int minutes = 0;
bool playSymbol = true;

void drawVerticalText() {
  u8g2.setFont(u8g2_font_6x10_tr); // Petite police pour texte vertical
  u8g2.setCursor(0, 60);
  u8g2.print("O");
  u8g2.setCursor(0, 50);
  u8g2.print("A");
  u8g2.setCursor(0, 40);
  u8g2.print("I");
  u8g2.setCursor(0, 30);
  u8g2.print("D");
  u8g2.setCursor(0, 20);
  u8g2.print("U");
}

void drawPlaySymbol() {
  u8g2.setFont(u8g2_font_open_iconic_play_2x_t); // Pictogramme plus grand
  u8g2.drawGlyph(15, 30, 0x0048); // Symbole play agrandi
}

void drawTimeline() {
  u8g2.setFont(u8g2_font_logisoso18_tf); // Police plus grande pour MM:SS
  u8g2.setCursor(50, 35); // Ajustement du texte pour qu'il prenne plus d'espace
  u8g2.printf("%02d:%02d", minutes, seconds); // Minutes et secondes
}

void drawFrequencyBars() {
  // Diagramme animé de fréquence avec barres occupant tout l'espace restant
  for (int i = 0; i < 10; i++) {
    int barHeight = random(5, 30); // Ajustement de la hauteur des barres
    u8g2.drawBox(90 + i * 4, 50 - barHeight, 3, barHeight); // Barres plus larges
  }
}

void updateTimer() {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= 1000) {
    previousMillis = currentMillis;
    seconds++;
    if (seconds >= 60) {
      seconds = 0;
      minutes++;
    }
  }
}

void setup(void) {
  u8g2.begin();  
}

void loop(void) {
  updateTimer();
  u8g2.clearBuffer();         
  drawVerticalText();          
  drawPlaySymbol();            
  drawTimeline();              
  drawFrequencyBars();         
  u8g2.sendBuffer();           
  delay(100);                  
}