#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
Adafruit_SSD1306 lcd(128, 64, &Wire, 4);
#define btn_Up 5
#define btn_OK 7
#define btn_DOWN 6
boolean status_up = false;
boolean status_ok = false;
boolean status_down = false;
boolean last_status_up = false;
boolean last_status_ok = false;
boolean last_status_down = false;
boolean UP = false;
boolean OK = false;
boolean DOWN = false;
int page = 0;
int item = 1;
int set_temp = 0;
int kp, ki, kd = 0;
int set_motor_velo = 0;
void setup() {
Serial.begin(115200);
lcd.begin(SSD1306_SWITCHCAPVCC, 0x3C);
lcd.clearDisplay();
pinMode(btn_Up, INPUT_PULLUP);
pinMode(btn_OK, INPUT_PULLUP);
pinMode(btn_DOWN, INPUT_PULLUP);
}
void loop() {
tampil();
status_up = digitalRead(btn_Up);
status_ok = digitalRead(btn_OK);
status_down = digitalRead(btn_DOWN);
btn_up_pressed();
btn_ok_pressed();
btn_down_pressed();
//FOR button up
if (UP && page == 0) {
UP = false;
item --;
if (item < 1)item = 3;
}
//FOR button down
if (DOWN && page == 0) {
DOWN = false;
item ++;
if (item > 3)item = 1;
}
//FOR button ok
if (OK) {
OK = false;
if (page == 0 && item == 1) {
page = 1;
} else if (page == 0 && item == 2) {
page = 2;
} else if (page == 0 && item == 3) {
page = 3;
} else if (page == 1 && item == 1) {
page = 0;
} else if (page == 2 && item == 1) {
page = 0;
} else if (page == 3 && item == 1) {
page = 0;
}
}
Serial.println(item);
delay(100);
}
//--------------------------------------------------------------------------------
void btn_up_pressed() {
if (status_up != last_status_up) {
if (status_up == 0) {
UP = true;
}
delay(50);
}
last_status_up = status_up;
}
void btn_ok_pressed() {
if (status_ok != last_status_ok) {
if (status_ok == 0) {
OK = true;
}
delay(50);
}
last_status_ok = status_ok;
}
void btn_down_pressed() {
if (status_down != last_status_down) {
if (status_down == 0) {
DOWN = true;
}
delay(50);
}
last_status_down = status_down;
}
//----------------------------------------------------------------------------
//semua yang tampil di lcd ada di fungsi ini
void tampil() {
if (page == 0) {
lcd.clearDisplay();
lcd.setTextSize(0);
lcd.setTextColor(WHITE);
lcd.setCursor(5, 0);
lcd.print("Pet Filament Machine");
lcd.setCursor(10, 10);
lcd.print("---By mrtcnblgc---");
if (item == 1) {
lcd.setCursor(5, 25);
lcd.setTextColor(WHITE);
lcd.print("> Set Temp");
} else {
lcd.setCursor(5, 25);
lcd.setTextColor(WHITE);
lcd.print(" Set Temp");
}
if (item == 2) {
lcd.setCursor(5, 35);
lcd.setTextColor(WHITE);
lcd.print("> Set PID");
} else {
lcd.setCursor(5, 35);
lcd.setTextColor(WHITE);
lcd.print(" Set PID");
}
if (item == 3) {
lcd.setCursor(5, 45);
lcd.setTextColor(WHITE);
lcd.print("> Set Velocity");
} else {
lcd.setCursor(5, 45);
lcd.setTextColor(WHITE);
lcd.print(" Set Velocity");
}
} else if (page == 1) {
lcd.clearDisplay();
lcd.setTextSize(2);
lcd.setTextColor(WHITE);
lcd.setCursor(5, 5);
lcd.print("Set Temp:");
if(status_up == 0){
set_temp++;
if(set_temp>300) set_temp=300;
}
if(status_down == 0){
set_temp--;
if(set_temp<0) set_temp=0;
}
lcd.setCursor(5, 25);
lcd.print(set_temp);
if (item == 1)
{
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print("> back ");
} else {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print(" back ");
}
} else if (page == 2) {
lcd.clearDisplay();
lcd.setTextSize(1);
lcd.setTextColor(WHITE);
lcd.setCursor(5, 5);
lcd.print("P I D values:");
item = 1;
if (item == 1)
{
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print("> back ");
} else {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print(" back ");
}
} else if (page == 3) {
lcd.clearDisplay();
lcd.setTextSize(1);
lcd.setTextColor(WHITE);
lcd.setCursor(5, 5);
lcd.print("Set Velocity:");
item = 1;
if(status_up == 0){
set_motor_velo+=10;
if (set_motor_velo==110) set_motor_velo=100;
}
if(status_down == 0){
set_motor_velo-=10;
if (set_motor_velo==-10) set_motor_velo=0;
}
lcd.setCursor(5, 25);
lcd.print(set_motor_velo);
if (item == 1)
{
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print("> back ");
} else {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print(" back ");
}
} else if (page == 4) {
lcd.clearDisplay();
lcd.setTextSize(2);
lcd.setTextColor(WHITE);
lcd.setCursor(25, 25);
lcd.print("page 5");
item = 1;
if (item == 1)
{
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print("> back ");
} else {
lcd.setCursor(5, 47);
lcd.setTextColor(WHITE);
lcd.print(" back ");
}
}
lcd.display();
}
//--------------------------------------------------------------------------------