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