Сбор информации о погодных условиях

Dependencies:   RF24 USBDevice mbed

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?

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