#include <WaspSensorGas.h>
Public Member Functions | |
| WaspSensorGas () | |
| class constructor | |
| void | setBoardMode (uint8_t mode) |
| It sets board power mode, setting ON/OFF 3v3 and 5V switches. | |
| void | configureSensor (uint16_t sensor, uint8_t gain) |
| It configures the amplifier gain in the different sensors. | |
| void | configureSensor (uint16_t sensor, uint8_t gain, float resistor) |
| It configures the amplifier gain and load resistor in the different sensors. | |
| void | setSensorMode (uint8_t mode, uint16_t sensor) |
| It sets ON/OFF the different sensor switches. | |
| float | readValue (uint16_t sensor) |
| It reads the value measured by the sensor. | |
Private Member Functions | |
| void | configureResistor (uint8_t ampli, float resistor) |
| It configures the sensor resistors. | |
| void | setResistor (uint8_t address, float value) |
| It sets the resistor value. | |
| void | configureAmplifier (uint8_t ampli, uint8_t gain) |
| It configures the corresponding amplifier. | |
| void | setAmplifier (uint8_t address, uint8_t value) |
| It sets the value of the gain. | |
| uint16_t | pulse (uint16_t sensor) |
| It sends a pulse to read the sensor value. | |
WaspSensorGas Class defines all the variables and functions used for managing the Gas Sensor Board
Definition at line 182 of file WaspSensorGas.h.
| WaspSensorGas::WaspSensorGas | ( | ) |
class constructor
It initializes the different digital pins
| void |
Definition at line 31 of file WaspSensorGas.cpp.
References DIGITAL1, DIGITAL2, DIGITAL3, DIGITAL4, DIGITAL5, DIGITAL6, DIGITAL7, digitalWrite(), LOW, OUTPUT, pinMode(), SENS_PW_3V3, and SENS_PW_5V.
00032 { 00033 pinMode(DIGITAL7,OUTPUT); 00034 pinMode(DIGITAL6,OUTPUT); 00035 pinMode(DIGITAL5,OUTPUT); 00036 pinMode(DIGITAL2,OUTPUT); 00037 pinMode(DIGITAL4,OUTPUT); 00038 pinMode(DIGITAL3,OUTPUT); 00039 pinMode(DIGITAL1,OUTPUT); 00040 pinMode(SENS_PW_3V3,OUTPUT); 00041 pinMode(SENS_PW_5V,OUTPUT); 00042 00043 digitalWrite(DIGITAL7,LOW); 00044 digitalWrite(DIGITAL6,LOW); 00045 digitalWrite(DIGITAL5,LOW); 00046 digitalWrite(DIGITAL2,LOW); 00047 digitalWrite(DIGITAL4,LOW); 00048 digitalWrite(DIGITAL3,LOW); 00049 digitalWrite(DIGITAL1,LOW); 00050 digitalWrite(SENS_PW_3V3,LOW); 00051 digitalWrite(SENS_PW_5V,LOW); 00052 }

| void WaspSensorGas::configureResistor | ( | uint8_t | ampli, | |
| float | resistor | |||
| ) | [private] |
It configures the sensor resistors.
| uint8_t | ampli : the amplifier to configure | |
| float | resistor : the value to set the resistor to |
Definition at line 205 of file WaspSensorGas.cpp.
References B0101010, B0101100, B0101110, SENS_R1, SENS_R2, SENS_R3, and setResistor().
Referenced by configureSensor().
00206 { 00207 switch( ampli ) 00208 { 00209 case SENS_R1 : setResistor(B0101100,resistor); 00210 break; 00211 case SENS_R2 : setResistor(B0101110,resistor); 00212 break; 00213 case SENS_R3 : setResistor(B0101010,resistor); 00214 break; 00215 } 00216 }


| void WaspSensorGas::setResistor | ( | uint8_t | address, | |
| float | value | |||
| ) | [private] |
It sets the resistor value.
| uint8_t | address : the resistor address | |
| float | value : the value to set the resistor to |
Definition at line 218 of file WaspSensorGas.cpp.
References B00000000, TwoWire::begin(), TwoWire::beginTransmission(), WaspPWR::closeI2C(), delay(), DELAY_TIME, TwoWire::endTransmission(), PWR, TwoWire::send(), and Wire.
Referenced by configureResistor().
00219 { 00220 float auxiliar = 0; 00221 uint8_t resist=0; 00222 00223 auxiliar = 128*value; 00224 auxiliar = auxiliar/100; 00225 resist = (uint8_t) 128-auxiliar; 00226 00227 Wire.begin(); 00228 delay(100); 00229 Wire.beginTransmission(address); 00230 Wire.send(B00000000); 00231 Wire.send(resist); 00232 Wire.endTransmission(); 00233 delay(DELAY_TIME); 00234 PWR.closeI2C(); 00235 }


| void WaspSensorGas::configureAmplifier | ( | uint8_t | ampli, | |
| uint8_t | gain | |||
| ) | [private] |
It configures the corresponding amplifier.
| uint8_t | ampli : the amplifier to set | |
| uint8_t | gain : the gain to set |
Definition at line 237 of file WaspSensorGas.cpp.
References B0101000, B0101010, B0101100, B0101110, SENS_AMPLI1, SENS_AMPLI2, SENS_AMPLI3, SENS_AMPLI4, and setAmplifier().
Referenced by configureSensor().
00238 { 00239 switch( ampli ) 00240 { 00241 case SENS_AMPLI1 : setAmplifier(B0101000,gain); 00242 break; 00243 case SENS_AMPLI2 : setAmplifier(B0101100,gain); 00244 break; 00245 case SENS_AMPLI3 : setAmplifier(B0101110,gain); 00246 break; 00247 case SENS_AMPLI4 : setAmplifier(B0101010,gain); 00248 break; 00249 } 00250 }


| void WaspSensorGas::setAmplifier | ( | uint8_t | address, | |
| uint8_t | value | |||
| ) | [private] |
It sets the value of the gain.
| uint8_t | address : the amplifier address | |
| uint8_t | value : the value to set the amplifier to |
Definition at line 252 of file WaspSensorGas.cpp.
References B00010000, TwoWire::begin(), TwoWire::beginTransmission(), WaspPWR::closeI2C(), delay(), DELAY_TIME, TwoWire::endTransmission(), PWR, TwoWire::send(), and Wire.
Referenced by configureAmplifier().
00253 { 00254 uint8_t ampli=0; 00255 value--; 00256 00257 ampli=(uint8_t) 128-(128/100)*value; 00258 Wire.begin(); 00259 delay(100); 00260 Wire.beginTransmission(address); 00261 Wire.send(B00010000); 00262 Wire.send(ampli); 00263 Wire.endTransmission(); 00264 delay(DELAY_TIME); 00265 PWR.closeI2C(); 00266 }


| uint16_t WaspSensorGas::pulse | ( | uint16_t | sensor | ) | [private] |
It sends a pulse to read the sensor value.
| uint16_t | sensor : the sensor to read the value from |
Definition at line 268 of file WaspSensorGas.cpp.
References ANALOG6, ANALOG7, analogRead(), delay(), DIGITAL1, DIGITAL3, DIGITAL5, DIGITAL7, digitalWrite(), HIGH, LOW, SENS_SOCKET3B, SENS_SOCKET3C, SENS_SOCKET4B, and SENS_SOCKET4C.
Referenced by readValue().
00269 { 00270 uint16_t aux=0; 00271 00272 switch( sensor ) 00273 { 00274 case SENS_SOCKET3B : digitalWrite(DIGITAL7, HIGH); 00275 delay(14); 00276 digitalWrite(DIGITAL7, LOW); 00277 delay(980); 00278 digitalWrite(DIGITAL1, HIGH); 00279 delay(3); 00280 aux = analogRead(ANALOG7); 00281 delay(2); 00282 digitalWrite(DIGITAL1, LOW); 00283 break; 00284 case SENS_SOCKET3C : digitalWrite(DIGITAL7, HIGH); 00285 delay(2); 00286 digitalWrite(DIGITAL1, HIGH); 00287 delay(4); 00288 aux = analogRead(ANALOG7); 00289 delay(1); 00290 digitalWrite(DIGITAL1, LOW); 00291 delay(7); 00292 digitalWrite(DIGITAL7, LOW); 00293 delay(236); 00294 break; 00295 case SENS_SOCKET4B : digitalWrite(DIGITAL5, HIGH); 00296 delay(14); 00297 digitalWrite(DIGITAL5, LOW); 00298 delay(980); 00299 digitalWrite(DIGITAL3, HIGH); 00300 delay(3); 00301 aux = analogRead(ANALOG6); 00302 delay(2); 00303 digitalWrite(DIGITAL3, LOW); 00304 break; 00305 case SENS_SOCKET4C : digitalWrite(DIGITAL5, HIGH); 00306 delay(2); 00307 digitalWrite(DIGITAL3, HIGH); 00308 delay(4); 00309 aux = analogRead(ANALOG6); 00310 delay(1); 00311 digitalWrite(DIGITAL3, LOW); 00312 delay(7); 00313 digitalWrite(DIGITAL5, LOW); 00314 delay(236); 00315 break; 00316 } 00317 return aux; 00318 }


| void WaspSensorGas::setBoardMode | ( | uint8_t | mode | ) |
It sets board power mode, setting ON/OFF 3v3 and 5V switches.
| uint8_t | mode : SENS_ON or SENS_OFF |
Definition at line 56 of file WaspSensorGas.cpp.
References digitalWrite(), HIGH, LOW, RTC, RTC_ON, SENS_OFF, SENS_ON, SENS_PW_3V3, SENS_PW_5V, and WaspRTC::setMode().
00057 { 00058 switch( mode ) 00059 { 00060 case SENS_ON : digitalWrite(SENS_PW_3V3,HIGH); 00061 digitalWrite(SENS_PW_5V,HIGH); 00062 // Sets RTC on to enable I2C 00063 RTC.setMode(RTC_ON); 00064 break; 00065 case SENS_OFF: digitalWrite(SENS_PW_3V3,LOW); 00066 digitalWrite(SENS_PW_5V,LOW); 00067 break; 00068 } 00069 }

| void WaspSensorGas::configureSensor | ( | uint16_t | sensor, | |
| uint8_t | gain | |||
| ) |
It configures the amplifier gain in the different sensors.
| uint16_t | sensor : the sensor to configure | |
| uint8_t | gain : the gain to set (range [1-101]) |
Definition at line 71 of file WaspSensorGas.cpp.
00072 { 00073 configureSensor(sensor,gain,0); 00074 }
| void WaspSensorGas::configureSensor | ( | uint16_t | sensor, | |
| uint8_t | gain, | |||
| float | resistor | |||
| ) |
It configures the amplifier gain and load resistor in the different sensors.
| uint16_t | sensor : the sensor to configure | |
| uint8_t | gain : the gain to set (range [1-101]) | |
| float | resistor : the load resistor to set (range [0-100] in KOhms) |
Definition at line 76 of file WaspSensorGas.cpp.
References configureAmplifier(), configureResistor(), delay(), DELAY_TIME, SENS_AMPLI1, SENS_AMPLI2, SENS_AMPLI3, SENS_AMPLI4, SENS_CO2, SENS_NO2, SENS_O2, SENS_R1, SENS_R2, SENS_R3, SENS_SOCKET2A, SENS_SOCKET3A, SENS_SOCKET3B, SENS_SOCKET3C, SENS_SOCKET4A, SENS_SOCKET4B, and SENS_SOCKET4C.
00077 { 00078 switch( sensor ) 00079 { 00080 case SENS_CO2 : configureAmplifier(SENS_AMPLI1,gain); 00081 break; 00082 case SENS_O2 : configureAmplifier(SENS_AMPLI1,gain); 00083 break; 00084 case SENS_SOCKET2A : configureResistor(SENS_R1,resistor); 00085 delay(DELAY_TIME); 00086 configureAmplifier(SENS_AMPLI2,gain); 00087 break; 00088 case SENS_NO2 : configureResistor(SENS_R1,resistor); 00089 delay(DELAY_TIME); 00090 configureAmplifier(SENS_AMPLI2,gain); 00091 break; 00092 case SENS_SOCKET3A : configureResistor(SENS_R2,resistor); 00093 delay(DELAY_TIME); 00094 configureAmplifier(SENS_AMPLI3,gain); 00095 break; 00096 case SENS_SOCKET3B : configureResistor(SENS_R2,resistor); 00097 delay(DELAY_TIME); 00098 configureAmplifier(SENS_AMPLI3,gain); 00099 break; 00100 case SENS_SOCKET3C : configureResistor(SENS_R2,resistor); 00101 delay(DELAY_TIME); 00102 configureAmplifier(SENS_AMPLI3,gain); 00103 break; 00104 case SENS_SOCKET4A : configureResistor(SENS_R3,resistor); 00105 delay(DELAY_TIME); 00106 configureAmplifier(SENS_AMPLI4,gain); 00107 break; 00108 case SENS_SOCKET4B : configureResistor(SENS_R3,resistor); 00109 delay(DELAY_TIME); 00110 configureAmplifier(SENS_AMPLI4,gain); 00111 break; 00112 case SENS_SOCKET4C : configureResistor(SENS_R3,resistor); 00113 delay(DELAY_TIME); 00114 configureAmplifier(SENS_AMPLI4,gain); 00115 break; 00116 } 00117 }

| void WaspSensorGas::setSensorMode | ( | uint8_t | mode, | |
| uint16_t | sensor | |||
| ) |
It sets ON/OFF the different sensor switches.
| uint8_t | mode : SENS_ON or SENS_OFF | |
| uint16_t | sensor : the sensor to set ON/OFF |
Definition at line 119 of file WaspSensorGas.cpp.
References DIGITAL1, DIGITAL2, DIGITAL3, DIGITAL4, DIGITAL5, DIGITAL6, DIGITAL7, DIGITAL8, digitalWrite(), HIGH, LOW, SENS_CO2, SENS_NO2, SENS_O2, SENS_OFF, SENS_ON, SENS_PRESSURE, SENS_SOCKET2A, SENS_SOCKET3A, and SENS_SOCKET4A.
00120 { 00121 if( mode==SENS_ON ) 00122 { 00123 switch( sensor ) 00124 { 00125 case SENS_PRESSURE : digitalWrite(DIGITAL8,HIGH); 00126 break; 00127 case SENS_CO2 : digitalWrite(DIGITAL2,HIGH); 00128 break; 00129 case SENS_O2 : digitalWrite(DIGITAL2,LOW); 00130 break; 00131 case SENS_SOCKET2A : digitalWrite(DIGITAL6,LOW); 00132 digitalWrite(DIGITAL4,HIGH); 00133 break; 00134 case SENS_NO2: digitalWrite(DIGITAL4,LOW); 00135 digitalWrite(DIGITAL6,HIGH); 00136 break; 00137 case SENS_SOCKET3A : digitalWrite(DIGITAL1,HIGH); 00138 digitalWrite(DIGITAL7,HIGH); 00139 break; 00140 case SENS_SOCKET4A : digitalWrite(DIGITAL3,HIGH); 00141 digitalWrite(DIGITAL5,HIGH); 00142 break; 00143 } 00144 } 00145 00146 if( mode==SENS_OFF ) 00147 { 00148 switch( sensor ) 00149 { 00150 case SENS_PRESSURE : digitalWrite(DIGITAL8,LOW); 00151 break; 00152 case SENS_CO2 : digitalWrite(DIGITAL2,LOW); 00153 break; 00154 case SENS_SOCKET2A : digitalWrite(DIGITAL4,LOW); 00155 break; 00156 case SENS_NO2: digitalWrite(DIGITAL6,LOW); 00157 break; 00158 case SENS_SOCKET3A : digitalWrite(DIGITAL1,LOW); 00159 digitalWrite(DIGITAL7,LOW); 00160 break; 00161 case SENS_SOCKET4A : digitalWrite(DIGITAL3,LOW); 00162 digitalWrite(DIGITAL5,LOW); 00163 break; 00164 } 00165 } 00166 }

| float WaspSensorGas::readValue | ( | uint16_t | sensor | ) |
It reads the value measured by the sensor.
| uint16_t | sensor : the sensor to read the value from |
Definition at line 168 of file WaspSensorGas.cpp.
References ANALOG1, ANALOG2, ANALOG3, ANALOG4, ANALOG5, ANALOG6, ANALOG7, analogRead(), pulse(), SENS_CO2, SENS_HUMIDITY, SENS_NO2, SENS_O2, SENS_PRESSURE, SENS_SOCKET2A, SENS_SOCKET3A, SENS_SOCKET3B, SENS_SOCKET3C, SENS_SOCKET4A, SENS_SOCKET4B, SENS_SOCKET4C, and SENS_TEMPERATURE.
00169 { 00170 uint16_t aux=0; 00171 switch( sensor ) 00172 { 00173 case SENS_TEMPERATURE : aux=analogRead(ANALOG1); 00174 break; 00175 case SENS_HUMIDITY : aux=analogRead(ANALOG4); 00176 break; 00177 case SENS_PRESSURE : aux=analogRead(ANALOG5); 00178 break; 00179 case SENS_CO2 : aux=analogRead(ANALOG3); 00180 break; 00181 case SENS_O2 : aux=analogRead(ANALOG3); 00182 break; 00183 case SENS_SOCKET2A : aux=analogRead(ANALOG2); 00184 break; 00185 case SENS_NO2 : aux=analogRead(ANALOG2); 00186 break; 00187 case SENS_SOCKET3A : aux=analogRead(ANALOG7); 00188 break; 00189 case SENS_SOCKET3B : aux=pulse(SENS_SOCKET3B); 00190 break; 00191 case SENS_SOCKET3C : aux=pulse(SENS_SOCKET3C); 00192 break; 00193 case SENS_SOCKET4A : aux=analogRead(ANALOG6); 00194 break; 00195 case SENS_SOCKET4B : aux=pulse(SENS_SOCKET4B); 00196 break; 00197 case SENS_SOCKET4C : aux=pulse(SENS_SOCKET4C); 00198 break; 00199 } 00200 return (aux*3.3)/1023; 00201 }

1.5.6