Skovbrynet
/
Solar
Test
Fork of AttoPilotSense by
main.cpp@1:87df5ce85ede, 2016-02-29 (annotated)
- Committer:
- Tuxitheone
- Date:
- Mon Feb 29 18:56:21 2016 +0000
- Revision:
- 1:87df5ce85ede
- Parent:
- 0:40a765d1b46b
Lader
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gert_lauritsen | 0:40a765d1b46b | 1 | #include "mbed.h" |
Tuxitheone | 1:87df5ce85ede | 2 | #include "TextLCD.h" |
Tuxitheone | 1:87df5ce85ede | 3 | #include "DHT.h" |
Tuxitheone | 1:87df5ce85ede | 4 | |
Tuxitheone | 1:87df5ce85ede | 5 | #define VoltDevider 16.0*3.3 // --- Voltade devider Solar Cell --1k--|---15k--- 50V "V" |
Tuxitheone | 1:87df5ce85ede | 6 | #define VoltBatDevider 9.2*3.3 // --- Voltade devider Battery --1k--|---8.2k--- 30V "V" |
Tuxitheone | 1:87df5ce85ede | 7 | #define ISensorFaktor 1*3.5 // --- ACS712T 5A "I" |
Tuxitheone | 1:87df5ce85ede | 8 | |
Tuxitheone | 1:87df5ce85ede | 9 | RawSerial pc(USBTX, USBRX);//Serial LOG |
Tuxitheone | 1:87df5ce85ede | 10 | |
Tuxitheone | 1:87df5ce85ede | 11 | AnalogIn Ain1(p20);// --- Voltade devider Battery --1k--|---8.2k--- 30V "V" |
Tuxitheone | 1:87df5ce85ede | 12 | AnalogIn Ain2(p19);// --- ACS712T 5A "I" |
Tuxitheone | 1:87df5ce85ede | 13 | AnalogIn CellLow1(p18);// --- Voltade devider Solar Cell --1k--|---15k--- 50V "V" |
Tuxitheone | 1:87df5ce85ede | 14 | AnalogIn CellLow2(p17);// --- Voltade devider Solar Cell --1k--|---15k--- 50V "V" |
Tuxitheone | 1:87df5ce85ede | 15 | AnalogIn CellTotal(p16);// --- Voltade devider Solar Cell --1k--|---15k--- 50V "V" |
Tuxitheone | 1:87df5ce85ede | 16 | |
Tuxitheone | 1:87df5ce85ede | 17 | AnalogIn tempsensor1(p15);//AD22103 Sensor |
Tuxitheone | 1:87df5ce85ede | 18 | DHT dht22(p13,DHT22); //Udendørs temperatur |
Tuxitheone | 1:87df5ce85ede | 19 | |
Tuxitheone | 1:87df5ce85ede | 20 | TextLCD lcd(p26, p25, p24, p23, p22, p21, TextLCD::LCD20x4); // rs, e, d4-d7 |
Tuxitheone | 1:87df5ce85ede | 21 | |
Tuxitheone | 1:87df5ce85ede | 22 | InterruptIn Knap(p14); |
Tuxitheone | 1:87df5ce85ede | 23 | DigitalOut LCDBackLigth(p12); |
Tuxitheone | 1:87df5ce85ede | 24 | Timeout BL; |
Tuxitheone | 1:87df5ce85ede | 25 | |
Tuxitheone | 1:87df5ce85ede | 26 | void LCDDisplay(int menu); |
Tuxitheone | 1:87df5ce85ede | 27 | |
Tuxitheone | 1:87df5ce85ede | 28 | float VRaw; //This will store our raw ADC data |
Tuxitheone | 1:87df5ce85ede | 29 | float IRaw; |
Tuxitheone | 1:87df5ce85ede | 30 | |
Tuxitheone | 1:87df5ce85ede | 31 | float UdeTemp; |
Tuxitheone | 1:87df5ce85ede | 32 | float UdeHym; |
Tuxitheone | 1:87df5ce85ede | 33 | float Cells[4]; |
Tuxitheone | 1:87df5ce85ede | 34 | |
Tuxitheone | 1:87df5ce85ede | 35 | int menustate=1; |
Tuxitheone | 1:87df5ce85ede | 36 | |
Tuxitheone | 1:87df5ce85ede | 37 | float ReadTempetur(void) |
Tuxitheone | 1:87df5ce85ede | 38 | { |
Tuxitheone | 1:87df5ce85ede | 39 | float tempreading=(tempsensor1.read()*3.3-0.25)/0.028; |
Tuxitheone | 1:87df5ce85ede | 40 | return tempreading; |
Tuxitheone | 1:87df5ce85ede | 41 | } |
Tuxitheone | 1:87df5ce85ede | 42 | |
Tuxitheone | 1:87df5ce85ede | 43 | |
Tuxitheone | 1:87df5ce85ede | 44 | void LEDOff() |
Tuxitheone | 1:87df5ce85ede | 45 | { |
Tuxitheone | 1:87df5ce85ede | 46 | LCDBackLigth=0; |
Tuxitheone | 1:87df5ce85ede | 47 | LCDDisplay(0); |
Tuxitheone | 1:87df5ce85ede | 48 | } |
gert_lauritsen | 0:40a765d1b46b | 49 | |
Tuxitheone | 1:87df5ce85ede | 50 | void LEDON() |
Tuxitheone | 1:87df5ce85ede | 51 | { |
Tuxitheone | 1:87df5ce85ede | 52 | LCDBackLigth=1; |
Tuxitheone | 1:87df5ce85ede | 53 | BL.attach(&LEDOff,10.0); |
Tuxitheone | 1:87df5ce85ede | 54 | LCDDisplay(menustate); |
Tuxitheone | 1:87df5ce85ede | 55 | menustate++; |
Tuxitheone | 1:87df5ce85ede | 56 | if (menustate>3) menustate=1; |
Tuxitheone | 1:87df5ce85ede | 57 | } |
Tuxitheone | 1:87df5ce85ede | 58 | |
Tuxitheone | 1:87df5ce85ede | 59 | |
Tuxitheone | 1:87df5ce85ede | 60 | void LCDDisplay(int menu) |
Tuxitheone | 1:87df5ce85ede | 61 | { |
Tuxitheone | 1:87df5ce85ede | 62 | switch (menu) { |
Tuxitheone | 1:87df5ce85ede | 63 | case 0: { |
Tuxitheone | 1:87df5ce85ede | 64 | lcd.cls(); |
Tuxitheone | 1:87df5ce85ede | 65 | lcd.printf("###################\n"); |
Tuxitheone | 1:87df5ce85ede | 66 | lcd.printf("#### TuxiNet.dk ###\n"); |
Tuxitheone | 1:87df5ce85ede | 67 | lcd.printf("### Solar Charger #\n"); |
Tuxitheone | 1:87df5ce85ede | 68 | lcd.printf("###################"); |
Tuxitheone | 1:87df5ce85ede | 69 | } |
Tuxitheone | 1:87df5ce85ede | 70 | break; |
gert_lauritsen | 0:40a765d1b46b | 71 | |
Tuxitheone | 1:87df5ce85ede | 72 | case 1: { |
Tuxitheone | 1:87df5ce85ede | 73 | lcd.cls(); |
Tuxitheone | 1:87df5ce85ede | 74 | lcd.printf("Battery\n"); |
Tuxitheone | 1:87df5ce85ede | 75 | lcd.printf("%.2fV %.2fA %.2fW\n",VRaw,IRaw,IRaw*VRaw); |
Tuxitheone | 1:87df5ce85ede | 76 | } |
Tuxitheone | 1:87df5ce85ede | 77 | break; |
Tuxitheone | 1:87df5ce85ede | 78 | |
Tuxitheone | 1:87df5ce85ede | 79 | case 2: { |
Tuxitheone | 1:87df5ce85ede | 80 | lcd.cls(); |
Tuxitheone | 1:87df5ce85ede | 81 | lcd.printf("Temp:\n"); |
Tuxitheone | 1:87df5ce85ede | 82 | lcd.printf("Inde %.2fC\n Ude: %.2fC %.1f%\n",ReadTempetur(),UdeTemp,UdeHym); |
Tuxitheone | 1:87df5ce85ede | 83 | } |
Tuxitheone | 1:87df5ce85ede | 84 | break; |
Tuxitheone | 1:87df5ce85ede | 85 | |
Tuxitheone | 1:87df5ce85ede | 86 | case 3: { |
Tuxitheone | 1:87df5ce85ede | 87 | lcd.cls(); |
Tuxitheone | 1:87df5ce85ede | 88 | lcd.printf("Solar Cell:\n"); |
Tuxitheone | 1:87df5ce85ede | 89 | lcd.printf("C1 %.1f C2 %.1f\n C3 %.1f C4 %.1f\n",Cells[0],Cells[1],Cells[2],Cells[3]); |
Tuxitheone | 1:87df5ce85ede | 90 | } |
Tuxitheone | 1:87df5ce85ede | 91 | break; |
Tuxitheone | 1:87df5ce85ede | 92 | |
Tuxitheone | 1:87df5ce85ede | 93 | case 4: { |
Tuxitheone | 1:87df5ce85ede | 94 | lcd.cls(); |
Tuxitheone | 1:87df5ce85ede | 95 | lcd.printf("Reng / LUX"); |
Tuxitheone | 1:87df5ce85ede | 96 | lcd.printf(""); |
Tuxitheone | 1:87df5ce85ede | 97 | } |
Tuxitheone | 1:87df5ce85ede | 98 | break; |
Tuxitheone | 1:87df5ce85ede | 99 | } |
Tuxitheone | 1:87df5ce85ede | 100 | } |
gert_lauritsen | 0:40a765d1b46b | 101 | |
gert_lauritsen | 0:40a765d1b46b | 102 | int main() |
gert_lauritsen | 0:40a765d1b46b | 103 | { |
Tuxitheone | 1:87df5ce85ede | 104 | Knap.rise(&LEDON); |
Tuxitheone | 1:87df5ce85ede | 105 | LCDDisplay(0); |
gert_lauritsen | 0:40a765d1b46b | 106 | while(1) { |
Tuxitheone | 1:87df5ce85ede | 107 | VRaw = Ain1.read()*VoltBatDevider; |
Tuxitheone | 1:87df5ce85ede | 108 | IRaw = ((Ain2.read()*3.3)-2.5)*ISensorFaktor; |
Tuxitheone | 1:87df5ce85ede | 109 | Cells[0]=CellLow1.read()*VoltDevider; |
Tuxitheone | 1:87df5ce85ede | 110 | Cells[1]=CellLow2.read()*VoltDevider; |
Tuxitheone | 1:87df5ce85ede | 111 | Cells[2]=CellTotal.read()*VoltDevider-Cells[0]; |
Tuxitheone | 1:87df5ce85ede | 112 | Cells[3]=CellTotal.read()*VoltDevider-Cells[1]; |
gert_lauritsen | 0:40a765d1b46b | 113 | |
Tuxitheone | 1:87df5ce85ede | 114 | int err=dht22.readData(); |
Tuxitheone | 1:87df5ce85ede | 115 | wait(2.0); |
Tuxitheone | 1:87df5ce85ede | 116 | if (err==0) { |
Tuxitheone | 1:87df5ce85ede | 117 | UdeTemp=dht22.ReadTemperature(CELCIUS); |
Tuxitheone | 1:87df5ce85ede | 118 | UdeHym=dht22.ReadHumidity(); |
Tuxitheone | 1:87df5ce85ede | 119 | } |
gert_lauritsen | 0:40a765d1b46b | 120 | |
Tuxitheone | 1:87df5ce85ede | 121 | //Serial Log |
Tuxitheone | 1:87df5ce85ede | 122 | pc.printf("Bettery:\r\n"); |
Tuxitheone | 1:87df5ce85ede | 123 | pc.printf("%.3f Volts %.3f Amps %.3f watt\r\n",VRaw,IRaw,IRaw*VRaw); |
Tuxitheone | 1:87df5ce85ede | 124 | pc.printf("Temp:\r\n"); |
Tuxitheone | 1:87df5ce85ede | 125 | pc.printf("Inde %.2fC Ude: %.2fC %.1f% \n\r",ReadTempetur(),UdeTemp,UdeHym); |
Tuxitheone | 1:87df5ce85ede | 126 | pc.printf("Solar Cell:\r\n"); |
Tuxitheone | 1:87df5ce85ede | 127 | pc.printf("C1 %.1f C2 %.1f C3 %.1f C4 %.1f \n\n\r",Cells[0],Cells[1],Cells[2],Cells[3]); |
Tuxitheone | 1:87df5ce85ede | 128 | |
Tuxitheone | 1:87df5ce85ede | 129 | |
Tuxitheone | 1:87df5ce85ede | 130 | |
Tuxitheone | 1:87df5ce85ede | 131 | wait(2.0); |
gert_lauritsen | 0:40a765d1b46b | 132 | } |
gert_lauritsen | 0:40a765d1b46b | 133 | } |