#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSansBold9pt7b.h>
#include <Fonts/Picopixel.h>
#define ENCODER_CLK 2
#define ENCODER_DT 3
#define ENCODER_SW 4
uint8_t volume = 50;
uint8_t bass = 25;
uint8_t treble = 66;
int counter = 0;
typedef enum {
SET_VOLUME,
SET_BASS,
SET_TREBLE,
}Mode;
Mode mode = SET_VOLUME;
Adafruit_SSD1306 display (128, 64, &Wire, -1);
void nextMode() {
switch (mode){
case SET_VOLUME:
mode = SET_BASS;
break;
mode = SET_TREBLE;
break;
}
}
void setup()
{
pinMode(ENCODER_CLK, INPUT);
pinMode(ENCODER_DT, INPUT);
pinMode(ENCODER_SW, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt (ENCODER_CLK), readEncoder, FALLING);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //ganti 0x3C dengan alamat IIC LCD kalian
display.clearDisplay(); // mengosongkan tampilan / menghapus logo adafruit
}
void readEncoder(){
int dtValue = digitalRead(ENCODER_DT);
if (dtValue == HIGH){
counter++;
}
if (dtValue == LOW){
counter--;
}
}
void loop() {
display.clearDisplay(); // mengosongkan tampilan
display.setTextSize(1); // sett ukuran huruf
display.setTextColor(WHITE); // set warna huruf
display.setCursor(0,0); // sett posisi tampilan
display.println("Coba Oled "); // mengisi karakter
display.setTextSize(2); // mengosongkan tampilan
display.setTextColor(WHITE); // set warna huruf
display.setCursor(14,14); // sett posisi tampilan
display.print("Mode : "); // mengisi karakter
display.print(counter); // mengisi karakter
display.display(); // menampilkan karakter yang sudah disimpan
delay(1000); // jeda 1000 miliseconds
}