Test

Dependencies:   TextLCD mbed

Fork of AttoPilotSense by Gert Lauritsen

Committer:
Tuxitheone
Date:
Mon Feb 29 18:56:21 2016 +0000
Revision:
1:87df5ce85ede
Parent:
0:40a765d1b46b
Lader

Who changed what in which revision?

UserRevisionLine numberNew 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 }