Takeuchi Kouichi
/
2ak0831_PWM2
Diff: main.cpp
- Revision:
- 0:ee8e9c93e76d
- Child:
- 1:db2254d3a5a5
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Sep 01 05:31:11 2010 +0000 @@ -0,0 +1,67 @@ +// PWM2 +#include "mbed.h" +#include "TextLCD.h" + +#define ON 1 +#define OFF 0 +#define Vmax 15 + +DigitalOut mled1(LED1); +DigitalOut mled2(LED2); +DigitalOut mled3(LED3); +DigitalOut mled4(LED4); +AnalogIn vin_adc(p20); +AnalogIn vr_adc(p19); +PwmOut rout_pwm(p21); + +TextLCD lcd(p24, p25, p26, p27, p28, p29, p30,16,2); // rs, rw, e, d0, d1, d2, d3 +float adc_volt; + +int main() { + float vr_data,vin_data,pwm_data,duty; + float vr_center; + + rout_pwm.pulsewidth_us(100); + rout_pwm.period_ms(1); + rout_pwm.write(0.0); + vr_center=vr_adc.read(); + + while(1){ + vr_data=vr_adc.read(); + vin_data=vin_adc.read()*Vmax; + pwm_data=rout_pwm.read()*vin_adc.read()*Vmax; + + if(vin_data <= 4.8){ + duty=0.0; + rout_pwm.write(duty); + while(vin_data < 6.0){ + vin_data=vin_adc.read()*Vmax; + lcd.locate(0,0); + lcd.printf("Vin:%2.1fV,Dt:%3.0f%%",vin_data,duty*100); + lcd.locate(0,1); + lcd.printf("Mode:charge"); + wait(0.3); + lcd.locate(0,1); + lcd.printf("Mode: "); + wait(0.3); + } + } + else if(4.8 <= vin_data && vin_data <= 5.2){ + duty=1.0; + lcd.locate(0,1); + lcd.printf("Mode:slow! "); + } + else { + duty=5.0/vin_data+(vr_data-vr_center); + lcd.locate(0,1); + lcd.printf("Mode:Auto "); + } + rout_pwm.write(duty); + + //lcd.cls(); + lcd.locate(0,0); + lcd.printf("Vin:%2.1fV,Dt:%3.0f%%",vin_data,duty*100); + + wait(0.3); + }//while +}//main