Skovbrynet
/
Solar
Test
Fork of AttoPilotSense by
Embed:
(wiki syntax)
Show/hide line numbers
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 }
Generated on Thu Jul 14 2022 01:16:31 by 1.7.2