// LCD MENGGUNAKAN I2C DENGAN SDA, SCL ADDRES 0X27
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// set the LCD addres to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// DEFINISI INPUT SWITC
#define SU 2
#define SD 7
#define SL 8
#define SR 9
#define ENTER 4
// DEFINISI INPUT ANALOG
#define POT1 A3
const byte IN[]={SU,SD,SL,SR,ENTER,POT1};
// DEFINISI OUTPUT BUZER
#define Buz1 3
// DEFINISI OUTPUT LED
#define LED1 5
#define LED2 6
#define LED3 10
#define LED4 11
#define LED5 12
#define LED6 13
const byte OUT[]={LED1,LED2,LED3,LED4,LED5,LED6,Buz1};
// VARIABEL YANG DI PERLUKAN
int NILAI = 0;
unsigned long t=0;
String Tombol;
void setup() {
for(byte i=0;i<7;i++) pinMode(OUT[i],OUTPUT);
for(byte i=0;i<6;i++) pinMode(IN[i],INPUT);
lcd.begin(16,2);
lcd.backlight();
// MENULIS DI LCD PADA BARIS PERTAMA KOLOM PERTAMA
lcd.setCursor(0, 0);
lcd.print("== TES SISTEM ==");
// MENULIS DI LCD PADA BARIS KEDUA KOLOM PERTAMA
lcd.setCursor(0, 1);
lcd.print("VAL: SW: ");
t = millis();
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
if((millis()-t) < 500)
{
return;
}
t = millis();
if (digitalRead(SU)==1)
{
Tombol ="UP ";
}
else if (digitalRead(SD)== 1)
{
Tombol ="DOWN";
}
else if (digitalRead(SL)== 1)
{
Tombol ="LEFT";
}
else if (digitalRead(SR)== 1)
{
Tombol ="RIGH";
}
else if (digitalRead(ENTER)== 1)
{
Tombol ="ENTE";
}
else
{
Tombol =" ";
}
NILAI = analogRead(POT1);
byte OnOutput =map(NILAI,0,1023,0,6);
nyalakanLed(OnOutput);
// menampilkan angka di LCD dengan format
char digit[4];
sprintf(digit, "%04d", NILAI);
lcd.setCursor(4, 1);
lcd.print(digit);
lcd.setCursor(13, 1);
lcd.print(Tombol);
delay(200);
}
void nyalakanLed(byte nyalaLED)
{
Serial.println(nyalaLED);
for(byte i = 0;i<=nyalaLED;i++)
{
digitalWrite(OUT[i], HIGH); //kondisi OUT ON
}
if (nyalaLED < 6)
{for(byte i = nyalaLED;i<=5;i++)
{
digitalWrite(OUT[i], LOW); // kondisi OUT OFF
}
if (nyalaLED>=6) tone(Buz1,1000);
else noTone(Buz1);
}
}
SD
SU
SR
SL
ENTER
POT1
D3
LED1 LED2 LED3 LED4 LED5 LED6