#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
//U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0);
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);
byte audioBarH[7];
byte audioPeak[7];
int MAX_BAR_HEIGHT = 46;
int BAR_BASE_YPOS = 53;
void setup() {
u8g2.setDrawColor(1);
u8g2.setContrast(255);
u8g2.setBitmapMode(1);
u8g2.begin();
//testing bars
audioBarH[0] = 10;
audioBarH[1] = 30;
audioBarH[2] = 50;
audioBarH[3] = 45;
audioBarH[4] = 25;
audioBarH[5] = 16;
audioBarH[6] = 32;
}
int counter = 0;
void loop() {
counter = (counter + 1) % 10000;
if (counter % 1000 != 0) return;
u8g2.clearBuffer(); // clear buffer to store content in RAM
for (int i=0; i<sizeof(audioBarH); ++i) { // for every frequency
int rndHeight = random(1024);
audioBarH[i] = audioBarH[i] + ((map(rndHeight, 0, 1024, 0, MAX_BAR_HEIGHT) - audioBarH[i]) / 1.5);
if (audioPeak[i] < audioBarH[i])
audioPeak[i] = audioBarH[i];
else if(audioPeak[i] > audioBarH[i])
audioPeak[i]--;
u8g2.drawBox(2 + i * 19, BAR_BASE_YPOS - audioBarH[i], 10, audioBarH[i]); // draw bar
u8g2.drawBox(2 + i * 19, BAR_BASE_YPOS - audioPeak[i], 10, 1); // draw peak
}
u8g2.setFont(u8g2_font_nerhoe_tr);
u8g2.drawStr(24, 8, "Graphic Equalizer");
u8g2.drawStr(2, 64, "63");
u8g2.drawStr(20, 64, "160");
u8g2.drawStr(38, 64, "400");
u8g2.drawStr(60, 64, "1k");
u8g2.drawStr(74, 64, "2.5k");
u8g2.drawStr(93, 64, "6.25k");
u8g2.drawStr(116, 64, "16k");
u8g2.sendBuffer();
}