Dependencies:   mbed

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