tuning

Dependencies:   mbed TextLCD RisetEEPROM_LCD

main.cpp

Committer:
tamamfirdaus
Date:
2019-03-18
Revision:
0:360ef54256f3

File content as of revision 0:360ef54256f3:

//Tuning dengan asumsi 4 data

#include "mbed.h"
#include "TextLCD.h"
#include <string>
#include "eeprom.h"

#define eeprom_SDA PC_9         //Pin SDA
#define eeprom_SCL PA_8         //Pin SCL
#define lcd_SDA PB_9            //Pin SDA
#define lcd_SCL PB_8            //Pin SCL
#define EEPROM_ADDR 0x0         //Address EEPROM

EEPROM eepromTuning (eeprom_SDA, eeprom_SCL, EEPROM_ADDR, EEPROM::T24C256);
I2C i2c_lcd(lcd_SDA, lcd_SCL);
TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD16x2);                              // I2C bus, PCF8574 Slaveaddress, LCD Type


//Variable
int32_t eepromData[5];           //Data yang disimpan di eepromTuning
int     tuningData[5];           //Data tuning
    
int buttonSelect;                //Select
int buttonUp;
int buttonDown;
int buttonData1;
int buttonData2;
int buttonData3;
int buttonData4;
int modeEdit;                    //Mode Edit

//Funtion and Procedure
void tuningBaca();
void tuningEdit();
void showLCDEdit();
void updateEEPROM();
void showLCD();

int main(){
    //eepromTuning.clear();     //Menghapus data EEPROM
    modeEdit=0;
    tuningBaca();
    while(1){
        tuningEdit();
    }
}

void tuningBaca(){
    int i;
    for(i=1;i<=4;i++){
        eepromTuning.read(i, tuningData[i]);
    }
}

void tuningEdit(){
    if(buttonSelect==1){
        modeEdit=!modeEdit;
        wait(0.2);
        if(modeEdit==0){
            int i;
            for(i=1;i<=4;i++){
                eepromData[i]=(int32_t) tuningData[i];
            }
            updateEEPROM();
        }
    }
    if (modeEdit==1){
        if(buttonData1==1 && buttonUp==1){
            tuningData[1]+=1;
            showLCDEdit();    
        }else if (buttonData1==1 && buttonDown==1){
            tuningData[1]-=1;
            showLCDEdit(); 
        }else if (buttonData2==1 && buttonUp==1){
            tuningData[2]+=1;
            showLCDEdit();    
        }else if (buttonData2==1 && buttonDown==1){
            tuningData[2]-=1;
            showLCDEdit();
        }else if (buttonData3==1 && buttonUp==1){
            tuningData[3]+=1;
            showLCDEdit();    
        }else if (buttonData3==1 && buttonDown==1){
            tuningData[3]-=1;
            showLCDEdit();
        }else if (buttonData4==1 && buttonUp==1){
            tuningData[4]+=1;
            showLCDEdit();    
        }else if (buttonData4==1 && buttonDown==1){
            tuningData[4]-=1;
            showLCDEdit();
        }
    }
}

void updateEEPROM(){
    int i;
    //eepromTuning.clear();
    for(i=1;i<=4;i++){
        eepromTuning.write(i, (int32_t) eepromData[i]);
    }
}
void showLCDEdit(){
    int i;
    for(i=1;i<=4;i++){
        lcd.locate(1,(2*i));
        lcd.printf("D");
        lcd.locate(1,(2*i+1));
        lcd.printf("%d",i);
        lcd.locate(2,(2*i));
        lcd.printf("%d", tuningData[i]);
    }        
} 

void showLCD(){
    int32_t lcdData[4];
    int i;
    for(i=1;i<=4;i++){
        eepromTuning.read(i, lcdData[i]);
        lcd.locate(1,(2*i));
        lcd.printf("%d", lcdData[i]);
    }
}