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