#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); // Choisir une petite police
  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_1x_t);
  u8g2.drawGlyph(15, 15, 0x0048); // Symbole play
}

void drawTimeline() {
  u8g2.setFont(u8g2_font_6x10_tr); 
  u8g2.setCursor(40, 15);
  u8g2.printf("%02d:%02d", minutes, seconds); // Minutes et secondes
}

void drawFrequencyBars() {
  // Animation de barres de fréquence aléatoire
  for (int i = 0; i < 10; i++) {
    int barHeight = random(5, 20); // Hauteur de la barre entre 5 et 20
    u8g2.drawBox(90 + i * 3, 30 - barHeight, 2, barHeight);
  }
}

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