tuning

Dependencies:   mbed TextLCD RisetEEPROM_LCD

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 //Tuning dengan asumsi 4 data
00002 
00003 #include "mbed.h"
00004 #include "TextLCD.h"
00005 #include <string>
00006 #include "eeprom.h"
00007 
00008 #define eeprom_SDA PC_9         //Pin SDA
00009 #define eeprom_SCL PA_8         //Pin SCL
00010 #define lcd_SDA PB_9            //Pin SDA
00011 #define lcd_SCL PB_8            //Pin SCL
00012 #define EEPROM_ADDR 0x0         //Address EEPROM
00013 
00014 EEPROM eepromTuning (eeprom_SDA, eeprom_SCL, EEPROM_ADDR, EEPROM::T24C256);
00015 I2C i2c_lcd(lcd_SDA, lcd_SCL);
00016 TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD16x2);                              // I2C bus, PCF8574 Slaveaddress, LCD Type
00017 
00018 
00019 //Variable
00020 int32_t eepromData[5];           //Data yang disimpan di eepromTuning
00021 int     tuningData[5];           //Data tuning
00022     
00023 int buttonSelect;                //Select
00024 int buttonUp;
00025 int buttonDown;
00026 int buttonData1;
00027 int buttonData2;
00028 int buttonData3;
00029 int buttonData4;
00030 int modeEdit;                    //Mode Edit
00031 
00032 //Funtion and Procedure
00033 void tuningBaca();
00034 void tuningEdit();
00035 void showLCDEdit();
00036 void updateEEPROM();
00037 void showLCD();
00038 
00039 int main(){
00040     //eepromTuning.clear();     //Menghapus data EEPROM
00041     modeEdit=0;
00042     tuningBaca();
00043     while(1){
00044         tuningEdit();
00045     }
00046 }
00047 
00048 void tuningBaca(){
00049     int i;
00050     for(i=1;i<=4;i++){
00051         eepromTuning.read(i, tuningData[i]);
00052     }
00053 }
00054 
00055 void tuningEdit(){
00056     if(buttonSelect==1){
00057         modeEdit=!modeEdit;
00058         wait(0.2);
00059         if(modeEdit==0){
00060             int i;
00061             for(i=1;i<=4;i++){
00062                 eepromData[i]=(int32_t) tuningData[i];
00063             }
00064             updateEEPROM();
00065         }
00066     }
00067     if (modeEdit==1){
00068         if(buttonData1==1 && buttonUp==1){
00069             tuningData[1]+=1;
00070             showLCDEdit();    
00071         }else if (buttonData1==1 && buttonDown==1){
00072             tuningData[1]-=1;
00073             showLCDEdit(); 
00074         }else if (buttonData2==1 && buttonUp==1){
00075             tuningData[2]+=1;
00076             showLCDEdit();    
00077         }else if (buttonData2==1 && buttonDown==1){
00078             tuningData[2]-=1;
00079             showLCDEdit();
00080         }else if (buttonData3==1 && buttonUp==1){
00081             tuningData[3]+=1;
00082             showLCDEdit();    
00083         }else if (buttonData3==1 && buttonDown==1){
00084             tuningData[3]-=1;
00085             showLCDEdit();
00086         }else if (buttonData4==1 && buttonUp==1){
00087             tuningData[4]+=1;
00088             showLCDEdit();    
00089         }else if (buttonData4==1 && buttonDown==1){
00090             tuningData[4]-=1;
00091             showLCDEdit();
00092         }
00093     }
00094 }
00095 
00096 void updateEEPROM(){
00097     int i;
00098     //eepromTuning.clear();
00099     for(i=1;i<=4;i++){
00100         eepromTuning.write(i, (int32_t) eepromData[i]);
00101     }
00102 }
00103 void showLCDEdit(){
00104     int i;
00105     for(i=1;i<=4;i++){
00106         lcd.locate(1,(2*i));
00107         lcd.printf("D");
00108         lcd.locate(1,(2*i+1));
00109         lcd.printf("%d",i);
00110         lcd.locate(2,(2*i));
00111         lcd.printf("%d", tuningData[i]);
00112     }        
00113 } 
00114 
00115 void showLCD(){
00116     int32_t lcdData[4];
00117     int i;
00118     for(i=1;i<=4;i++){
00119         eepromTuning.read(i, lcdData[i]);
00120         lcd.locate(1,(2*i));
00121         lcd.printf("%d", lcdData[i]);
00122     }
00123 }