Takeuchi Kouichi
/
2ak0918_Solar_LCD20X04
for Solar charger エレキジャックweb mbed入門用 URL:http://www.eleki-jack.com/
main.cpp@0:0f6da148c96b, 2010-09-25 (annotated)
- Committer:
- takeuchi
- Date:
- Sat Sep 25 08:42:36 2010 +0000
- Revision:
- 0:0f6da148c96b
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
takeuchi | 0:0f6da148c96b | 1 | //2ak0918_Solar_LCD20X04 |
takeuchi | 0:0f6da148c96b | 2 | // for Solar charger Copyright by K.Takeuchi |
takeuchi | 0:0f6da148c96b | 3 | |
takeuchi | 0:0f6da148c96b | 4 | #include "mbed.h" |
takeuchi | 0:0f6da148c96b | 5 | #include "TextLCD0420.h" |
takeuchi | 0:0f6da148c96b | 6 | |
takeuchi | 0:0f6da148c96b | 7 | #define ON 1 |
takeuchi | 0:0f6da148c96b | 8 | #define OFF 0 |
takeuchi | 0:0f6da148c96b | 9 | |
takeuchi | 0:0f6da148c96b | 10 | DigitalOut mled0(LED1); |
takeuchi | 0:0f6da148c96b | 11 | DigitalOut mled1(LED2); |
takeuchi | 0:0f6da148c96b | 12 | AnalogIn Vbat_adc(p20); |
takeuchi | 0:0f6da148c96b | 13 | AnalogIn Vsolar_adc(p19); |
takeuchi | 0:0f6da148c96b | 14 | |
takeuchi | 0:0f6da148c96b | 15 | TextLCD lcd(p24, p25, p26, p27, p28, p29, p30,20,4); // rs, rw, e, d0, d1, d2, d3 |
takeuchi | 0:0f6da148c96b | 16 | |
takeuchi | 0:0f6da148c96b | 17 | int main() { |
takeuchi | 0:0f6da148c96b | 18 | float Vbat,Vsolar,Vbat_tmp; |
takeuchi | 0:0f6da148c96b | 19 | lcd.cls(); |
takeuchi | 0:0f6da148c96b | 20 | while(1){ |
takeuchi | 0:0f6da148c96b | 21 | Vbat=Vbat_adc.read()*30; |
takeuchi | 0:0f6da148c96b | 22 | Vbat=(Vbat+Vbat_tmp)/2; |
takeuchi | 0:0f6da148c96b | 23 | Vsolar=Vsolar_adc.read()*30; |
takeuchi | 0:0f6da148c96b | 24 | lcd.cls(); |
takeuchi | 0:0f6da148c96b | 25 | lcd.locate(0,0); |
takeuchi | 0:0f6da148c96b | 26 | lcd.printf("=Solar MPPT Sys.="); |
takeuchi | 0:0f6da148c96b | 27 | lcd.locate(0,1); |
takeuchi | 0:0f6da148c96b | 28 | lcd.printf("Vsolar:%2.1fV",Vsolar); |
takeuchi | 0:0f6da148c96b | 29 | lcd.locate(0,2); |
takeuchi | 0:0f6da148c96b | 30 | lcd.printf("Vbat:%2.1fV",Vbat); |
takeuchi | 0:0f6da148c96b | 31 | if(Vsolar > Vbat){ |
takeuchi | 0:0f6da148c96b | 32 | lcd.locate(0,3); |
takeuchi | 0:0f6da148c96b | 33 | lcd.printf("=== Charging ===="); |
takeuchi | 0:0f6da148c96b | 34 | } |
takeuchi | 0:0f6da148c96b | 35 | else if(Vsolar < 2.0){ |
takeuchi | 0:0f6da148c96b | 36 | lcd.locate(0,3); |
takeuchi | 0:0f6da148c96b | 37 | if(Vbat >= 12.6){ |
takeuchi | 0:0f6da148c96b | 38 | lcd.printf("== Batt:100%% =="); |
takeuchi | 0:0f6da148c96b | 39 | } |
takeuchi | 0:0f6da148c96b | 40 | else if(Vbat >= 12.4){ |
takeuchi | 0:0f6da148c96b | 41 | lcd.printf("== Batt:75%% =="); |
takeuchi | 0:0f6da148c96b | 42 | } |
takeuchi | 0:0f6da148c96b | 43 | else if(Vbat >= 12.2){ |
takeuchi | 0:0f6da148c96b | 44 | lcd.printf("== Batt:50%% =="); |
takeuchi | 0:0f6da148c96b | 45 | } |
takeuchi | 0:0f6da148c96b | 46 | else if(Vbat >= 12.0){ |
takeuchi | 0:0f6da148c96b | 47 | lcd.printf("== Batt:25%% =="); |
takeuchi | 0:0f6da148c96b | 48 | } |
takeuchi | 0:0f6da148c96b | 49 | else{ |
takeuchi | 0:0f6da148c96b | 50 | lcd.printf("== Battery Low!! =="); |
takeuchi | 0:0f6da148c96b | 51 | } |
takeuchi | 0:0f6da148c96b | 52 | } |
takeuchi | 0:0f6da148c96b | 53 | Vbat_tmp=Vbat; |
takeuchi | 0:0f6da148c96b | 54 | wait(0.5); |
takeuchi | 0:0f6da148c96b | 55 | lcd.locate(0,0); |
takeuchi | 0:0f6da148c96b | 56 | lcd.printf("=Solar MPPT Sys ="); |
takeuchi | 0:0f6da148c96b | 57 | wait(0.5); |
takeuchi | 0:0f6da148c96b | 58 | }//while |
takeuchi | 0:0f6da148c96b | 59 | }//main |
takeuchi | 0:0f6da148c96b | 60 | |
takeuchi | 0:0f6da148c96b | 61 |