Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of AttoPilotSense by
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
