Skovbrynet
/
Solar
Test
Fork of AttoPilotSense by
main.cpp
- Committer:
- Tuxitheone
- Date:
- 2016-02-29
- Revision:
- 1:87df5ce85ede
- Parent:
- 0:40a765d1b46b
File content as of revision 1:87df5ce85ede:
#include "mbed.h" #include "TextLCD.h" #include "DHT.h" #define VoltDevider 16.0*3.3 // --- Voltade devider Solar Cell --1k--|---15k--- 50V "V" #define VoltBatDevider 9.2*3.3 // --- Voltade devider Battery --1k--|---8.2k--- 30V "V" #define ISensorFaktor 1*3.5 // --- ACS712T 5A "I" RawSerial pc(USBTX, USBRX);//Serial LOG AnalogIn Ain1(p20);// --- Voltade devider Battery --1k--|---8.2k--- 30V "V" AnalogIn Ain2(p19);// --- ACS712T 5A "I" AnalogIn CellLow1(p18);// --- Voltade devider Solar Cell --1k--|---15k--- 50V "V" AnalogIn CellLow2(p17);// --- Voltade devider Solar Cell --1k--|---15k--- 50V "V" AnalogIn CellTotal(p16);// --- Voltade devider Solar Cell --1k--|---15k--- 50V "V" AnalogIn tempsensor1(p15);//AD22103 Sensor DHT dht22(p13,DHT22); //Udendørs temperatur TextLCD lcd(p26, p25, p24, p23, p22, p21, TextLCD::LCD20x4); // rs, e, d4-d7 InterruptIn Knap(p14); DigitalOut LCDBackLigth(p12); Timeout BL; void LCDDisplay(int menu); float VRaw; //This will store our raw ADC data float IRaw; float UdeTemp; float UdeHym; float Cells[4]; int menustate=1; float ReadTempetur(void) { float tempreading=(tempsensor1.read()*3.3-0.25)/0.028; return tempreading; } void LEDOff() { LCDBackLigth=0; LCDDisplay(0); } void LEDON() { LCDBackLigth=1; BL.attach(&LEDOff,10.0); LCDDisplay(menustate); menustate++; if (menustate>3) menustate=1; } void LCDDisplay(int menu) { switch (menu) { case 0: { lcd.cls(); lcd.printf("###################\n"); lcd.printf("#### TuxiNet.dk ###\n"); lcd.printf("### Solar Charger #\n"); lcd.printf("###################"); } break; case 1: { lcd.cls(); lcd.printf("Battery\n"); lcd.printf("%.2fV %.2fA %.2fW\n",VRaw,IRaw,IRaw*VRaw); } break; case 2: { lcd.cls(); lcd.printf("Temp:\n"); lcd.printf("Inde %.2fC\n Ude: %.2fC %.1f%\n",ReadTempetur(),UdeTemp,UdeHym); } break; case 3: { lcd.cls(); lcd.printf("Solar Cell:\n"); lcd.printf("C1 %.1f C2 %.1f\n C3 %.1f C4 %.1f\n",Cells[0],Cells[1],Cells[2],Cells[3]); } break; case 4: { lcd.cls(); lcd.printf("Reng / LUX"); lcd.printf(""); } break; } } int main() { Knap.rise(&LEDON); LCDDisplay(0); while(1) { VRaw = Ain1.read()*VoltBatDevider; IRaw = ((Ain2.read()*3.3)-2.5)*ISensorFaktor; Cells[0]=CellLow1.read()*VoltDevider; Cells[1]=CellLow2.read()*VoltDevider; Cells[2]=CellTotal.read()*VoltDevider-Cells[0]; Cells[3]=CellTotal.read()*VoltDevider-Cells[1]; int err=dht22.readData(); wait(2.0); if (err==0) { UdeTemp=dht22.ReadTemperature(CELCIUS); UdeHym=dht22.ReadHumidity(); } //Serial Log pc.printf("Bettery:\r\n"); pc.printf("%.3f Volts %.3f Amps %.3f watt\r\n",VRaw,IRaw,IRaw*VRaw); pc.printf("Temp:\r\n"); pc.printf("Inde %.2fC Ude: %.2fC %.1f% \n\r",ReadTempetur(),UdeTemp,UdeHym); pc.printf("Solar Cell:\r\n"); pc.printf("C1 %.1f C2 %.1f C3 %.1f C4 %.1f \n\n\r",Cells[0],Cells[1],Cells[2],Cells[3]); wait(2.0); } }