Test

Dependencies:   TextLCD mbed

Fork of AttoPilotSense by Gert Lauritsen

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "TextLCD.h"
00003 #include "DHT.h"
00004 
00005 #define VoltDevider 16.0*3.3 // --- Voltade devider Solar Cell --1k--|---15k--- 50V "V"
00006 #define VoltBatDevider 9.2*3.3 // --- Voltade devider Battery --1k--|---8.2k--- 30V "V"
00007 #define ISensorFaktor 1*3.5 // --- ACS712T 5A "I"
00008 
00009 RawSerial pc(USBTX, USBRX);//Serial LOG
00010 
00011 AnalogIn Ain1(p20);// --- Voltade devider Battery --1k--|---8.2k--- 30V "V"
00012 AnalogIn Ain2(p19);// --- ACS712T 5A "I"
00013 AnalogIn CellLow1(p18);// --- Voltade devider Solar Cell --1k--|---15k--- 50V "V"
00014 AnalogIn CellLow2(p17);// --- Voltade devider Solar Cell --1k--|---15k--- 50V "V"
00015 AnalogIn CellTotal(p16);// --- Voltade devider Solar Cell --1k--|---15k--- 50V "V"
00016 
00017 AnalogIn tempsensor1(p15);//AD22103 Sensor
00018 DHT dht22(p13,DHT22);  //Udendørs temperatur
00019 
00020 TextLCD lcd(p26, p25, p24, p23, p22, p21, TextLCD::LCD20x4); // rs, e, d4-d7
00021 
00022 InterruptIn Knap(p14);
00023 DigitalOut LCDBackLigth(p12);
00024 Timeout BL;
00025 
00026 void LCDDisplay(int menu);
00027 
00028 float VRaw; //This will store our raw ADC data
00029 float IRaw;
00030 
00031 float UdeTemp;
00032 float UdeHym;
00033 float Cells[4];
00034 
00035 int menustate=1;
00036 
00037 float ReadTempetur(void)
00038 {
00039     float tempreading=(tempsensor1.read()*3.3-0.25)/0.028;
00040     return  tempreading;
00041 }
00042 
00043 
00044 void LEDOff()
00045 {
00046     LCDBackLigth=0;
00047     LCDDisplay(0);
00048 }
00049 
00050 void LEDON()
00051 {
00052     LCDBackLigth=1;
00053     BL.attach(&LEDOff,10.0);
00054     LCDDisplay(menustate);
00055     menustate++;
00056     if (menustate>3) menustate=1;
00057 }
00058 
00059 
00060 void LCDDisplay(int menu)
00061 {
00062     switch (menu) {
00063         case 0: {
00064             lcd.cls();
00065             lcd.printf("###################\n");
00066             lcd.printf("#### TuxiNet.dk ###\n");
00067             lcd.printf("### Solar Charger #\n");
00068             lcd.printf("###################");
00069         }
00070         break;
00071 
00072         case 1: {
00073             lcd.cls();
00074             lcd.printf("Battery\n");
00075             lcd.printf("%.2fV  %.2fA %.2fW\n",VRaw,IRaw,IRaw*VRaw);
00076         }
00077         break;
00078 
00079         case 2: {
00080             lcd.cls();
00081             lcd.printf("Temp:\n");
00082             lcd.printf("Inde %.2fC\n Ude: %.2fC %.1f%\n",ReadTempetur(),UdeTemp,UdeHym);
00083         }
00084         break;
00085 
00086         case 3: {
00087             lcd.cls();
00088             lcd.printf("Solar Cell:\n");
00089             lcd.printf("C1 %.1f C2 %.1f\n C3 %.1f C4 %.1f\n",Cells[0],Cells[1],Cells[2],Cells[3]);
00090         }
00091         break;
00092 
00093         case 4: {
00094             lcd.cls();
00095             lcd.printf("Reng / LUX");
00096             lcd.printf("");
00097         }
00098         break;
00099     }
00100 }
00101 
00102 int main()
00103 {
00104     Knap.rise(&LEDON);
00105     LCDDisplay(0);
00106     while(1) {
00107         VRaw = Ain1.read()*VoltBatDevider;
00108         IRaw = ((Ain2.read()*3.3)-2.5)*ISensorFaktor;
00109         Cells[0]=CellLow1.read()*VoltDevider;
00110         Cells[1]=CellLow2.read()*VoltDevider;
00111         Cells[2]=CellTotal.read()*VoltDevider-Cells[0];
00112         Cells[3]=CellTotal.read()*VoltDevider-Cells[1];
00113 
00114         int err=dht22.readData();
00115         wait(2.0);
00116         if (err==0) {
00117             UdeTemp=dht22.ReadTemperature(CELCIUS);
00118             UdeHym=dht22.ReadHumidity();
00119         }
00120 
00121         //Serial Log
00122         pc.printf("Bettery:\r\n");
00123         pc.printf("%.3f Volts  %.3f Amps %.3f watt\r\n",VRaw,IRaw,IRaw*VRaw);
00124         pc.printf("Temp:\r\n");
00125         pc.printf("Inde %.2fC Ude: %.2fC %.1f% \n\r",ReadTempetur(),UdeTemp,UdeHym);
00126         pc.printf("Solar Cell:\r\n");
00127         pc.printf("C1 %.1f C2 %.1f C3 %.1f C4 %.1f \n\n\r",Cells[0],Cells[1],Cells[2],Cells[3]);
00128 
00129 
00130 
00131         wait(2.0);
00132     }
00133 }