Сбор информации о погодных условиях
Dependencies: RF24 USBDevice mbed
Sensors/Photoresistor.cpp@6:db4538895ae7, 2015-12-05 (annotated)
- Committer:
- pro100kot14
- Date:
- Sat Dec 05 16:57:30 2015 +0000
- Revision:
- 6:db4538895ae7
- Parent:
- 4:7cd67d988145
Added unit testing. Test results are displayed on the device LEDs.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pro100kot14 | 2:ad2653bcf93f | 1 | #include "Photoresistor.h" |
pro100kot14 | 2:ad2653bcf93f | 2 | |
pro100kot14 | 2:ad2653bcf93f | 3 | Photoresistor::Photoresistor(AnalogIn inputChanel):input(inputChanel){} |
pro100kot14 | 2:ad2653bcf93f | 4 | |
pro100kot14 | 2:ad2653bcf93f | 5 | Illumination Photoresistor::getIllumination(){ |
pro100kot14 | 6:db4538895ae7 | 6 | return getIlluminationByAdcValue(input.read()); |
pro100kot14 | 6:db4538895ae7 | 7 | } |
pro100kot14 | 6:db4538895ae7 | 8 | |
pro100kot14 | 6:db4538895ae7 | 9 | Illumination Photoresistor::getIlluminationByAdcValue(float adcVal){ |
pro100kot14 | 2:ad2653bcf93f | 10 | double realV; |
pro100kot14 | 2:ad2653bcf93f | 11 | //3.3 - ADC maximum |
pro100kot14 | 6:db4538895ae7 | 12 | realV = adcVal*3.3; |
pro100kot14 | 2:ad2653bcf93f | 13 | |
pro100kot14 | 2:ad2653bcf93f | 14 | if(realV > 0){ |
pro100kot14 | 2:ad2653bcf93f | 15 | double resistance = (10.0 * 3.3) / realV - 10.0; //resistance in kOhms. |
pro100kot14 | 3:346b49152f1e | 16 | if(resistance >= 1000.0) return DARK; |
pro100kot14 | 3:346b49152f1e | 17 | if(resistance >= 19.0) return VERY_CLOUDLY; //approximately <10 lx |
pro100kot14 | 3:346b49152f1e | 18 | if(resistance >= 0.7) return CLOUDLY; //approximately <5000 lx |
pro100kot14 | 3:346b49152f1e | 19 | if(resistance >= 0.25) return CLEAR; //approximately <10000 lx |
pro100kot14 | 3:346b49152f1e | 20 | return VERY_SUNNY; //approximately >10000 lx |
pro100kot14 | 2:ad2653bcf93f | 21 | }else{ |
pro100kot14 | 3:346b49152f1e | 22 | return DARK; //resistance == +inf. No light |
pro100kot14 | 2:ad2653bcf93f | 23 | } |
pro100kot14 | 6:db4538895ae7 | 24 | } |
pro100kot14 | 6:db4538895ae7 | 25 | |
pro100kot14 | 6:db4538895ae7 | 26 | bool PhotoresistorTest::adcValue_0_isDark(){ |
pro100kot14 | 6:db4538895ae7 | 27 | return Photoresistor::getIlluminationByAdcValue(0.0)==DARK; |
pro100kot14 | 6:db4538895ae7 | 28 | } |
pro100kot14 | 6:db4538895ae7 | 29 | |
pro100kot14 | 6:db4538895ae7 | 30 | bool PhotoresistorTest::adcValue_0_009_isDark(){ |
pro100kot14 | 6:db4538895ae7 | 31 | return Photoresistor::getIlluminationByAdcValue(0.009)==DARK; |
pro100kot14 | 6:db4538895ae7 | 32 | } |
pro100kot14 | 6:db4538895ae7 | 33 | |
pro100kot14 | 6:db4538895ae7 | 34 | bool PhotoresistorTest::adcValue_0_34_isVeryCloudly(){ |
pro100kot14 | 6:db4538895ae7 | 35 | return Photoresistor::getIlluminationByAdcValue(0.34)==VERY_CLOUDLY; |
pro100kot14 | 6:db4538895ae7 | 36 | } |
pro100kot14 | 6:db4538895ae7 | 37 | |
pro100kot14 | 6:db4538895ae7 | 38 | bool PhotoresistorTest::adcValue_0_93_isCloudly(){ |
pro100kot14 | 6:db4538895ae7 | 39 | return Photoresistor::getIlluminationByAdcValue(0.93)==CLOUDLY; |
pro100kot14 | 6:db4538895ae7 | 40 | } |
pro100kot14 | 6:db4538895ae7 | 41 | |
pro100kot14 | 6:db4538895ae7 | 42 | bool PhotoresistorTest::adcValue_0_97_isClear(){ |
pro100kot14 | 6:db4538895ae7 | 43 | return Photoresistor::getIlluminationByAdcValue(0.97)==CLEAR; |
pro100kot14 | 6:db4538895ae7 | 44 | } |
pro100kot14 | 6:db4538895ae7 | 45 | |
pro100kot14 | 6:db4538895ae7 | 46 | bool PhotoresistorTest::adcValue_0_98_isVerySunny(){ |
pro100kot14 | 6:db4538895ae7 | 47 | return Photoresistor::getIlluminationByAdcValue(0.98)==VERY_SUNNY; |
pro100kot14 | 6:db4538895ae7 | 48 | } |