//Library ----------------------------------------------
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
//------------------------------------------------------
//Define Pin -------------------------------------------
#define pinLed1 12
#define pinLed2 11
#define pinLed3 10
#define pinLed4 9
#define pinButton1 8
#define pinButton2 7
#define pinClock 6
#define pinData 5
#define pinLatch 4
#define pinClockLed 3
#define pinDataLed 2
#define pinLatchLed 13
//------------------------------------------------------
//Fungsi Macro -----------------------------------------
#define led1(x) digitalWrite(pinLed1, x)
#define led2(x) digitalWrite(pinLed2, x)
#define led3(x) digitalWrite(pinLed3, x)
#define led4(x) digitalWrite(pinLed4, x)
#define clockSeg(x) digitalWrite(pinClock, x)
#define dataSeg(x) digitalWrite(pinData, x)
#define latchSeg(x) digitalWrite(pinLatch, x)
#define clockLed(x) digitalWrite(pinClockLed, x)
#define dataLed(x) digitalWrite(pinDataLed, x)
#define latchLed(x) digitalWrite(pinLatchLed, x)
#define button1 digitalRead(pinButton1)
#define button2 digitalRead(pinButton2)
//------------------------------------------------------
//Set alamat I2C dan ukuran LCD ------------------------
LiquidCrystal_I2C lcd(0x27,16,2);
//------------------------------------------------------
//Variabel ---------------------------------------------
uint8_t arraySegment[10] = {
0b00000011, //0
0b10011111, //1
0b00100101, //2
0b00001101, //3
0b10011001, //4
0b01001001, //5
0b01000001, //6
0b00011111, //7
0b00000001, //8
0b00001001 //9
};
uint8_t menu = 0;
uint8_t dataButton1 = 0;
uint8_t dataButton2 = 0;
uint8_t k1 = 0;
uint8_t k2 = 0;
void setup(){
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);
pinMode(pinLed4, OUTPUT);
pinMode(pinButton1, INPUT);
pinMode(pinButton2, INPUT);
pinMode(pinClock, OUTPUT);
pinMode(pinData, OUTPUT);
pinMode(pinLatch, OUTPUT);
pinMode(pinClockLed, OUTPUT);
pinMode(pinDataLed, OUTPUT);
pinMode(pinLatchLed, OUTPUT);
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("SMKN 39 JAKARTA ");
lcd.setCursor(0,1);
lcd.print(" ELECTRONICS ");
delay(3000);
lcd.clear();
}
void loop(){
dataButton1 = button1;
dataButton2 = button2;
//button1
if(dataButton1 == 1 && k1 == 0){
k1 = 1;
};
if(dataButton1 == 0 && k1 == 1){
//program apa yg mau dijakankan?
menu++;
if(menu > 4){
menu = 1;
};
k1 = 0;
};
delay(50);
switch(menu){
case 1:
//1
shiftRegSeg(1);
break;
case 2:
//2
shiftRegSeg(2);
break;
case 3:
//3
shiftRegSeg(3);
break;
case 4:
//4
shiftRegSeg(4);
break;
default:
break;
};
}
void shiftRegSeg(uint8_t dataSeg){
for(uint8_t i=0; i<8; i++){
dataSeg((arraySegment[dataSeg]>>i)&1);
clockSeg(0);
clockSeg(1);
};
latchSeg(0);
latchSeg(1);
}