Jedan senzor
Što prikazuje ovaj primjer
Primjer singleSensor iz biblioteke stvara jedan senzor samo s unaprijed postavljenim profilom (preset), pa adresa i pin ostaju na zadanim vrijednostima, te svakih 2,5 s ispisuje koncentraciju u ppm.
Primjer stvara senzor pomoću SENSOR_CO, presetа za ugljikov monoksid. Biblioteka izračunava ppm iz osjetljivosti i postavki pojačanja koje zadaje preset; preset za klorovu ćeliju ove pločice je SENSOR_CL2.
Kod primjera
/**
**************************************************
*
* @file singleSensor.ino
* @brief See how to init one sensor and make a simple reading of PPM of gas.
*
* To successfully run the sketch:
* - Connect LMPEN pin to GND or a GPIO pin so the breakout can be configured
* - Run the sketch and open serial monitor at 115200 baud!
*
*
* @authors Robert @ soldered.com
***************************************************/
// Include the required library
#include "Electrochemical-Gas-Sensor-SOLDERED.h"
// Configurations for each of the sensor types are in sensorConfigData.h in the library's 'src' folder
// Create the sensor object with the according type
ElectrochemicalGasSensor sensor(SENSOR_CO);
// If you are using a custom I2C address (for multiple sensors) use:
// ElectrochemicalGasSensor sensor(SENSOR_SO2, 0x4B, 5);
// For more details on this, see customAddress.ino
void setup()
{
Serial.begin(115200); // For debugging
// Init the breakout
if (!sensor.begin())
{
// Can't init? Notify the user and go to infinite loop
Serial.println("ERROR: Can't init the sensor! Check connections!");
while (true)
delay(100);
}
Serial.println("Sensor initialized successfully!");
}
void loop()
{
// Make the reading
double reading = sensor.getPPM();
// If PPB is more relevant for your sensor, you can use:
// double reading = sensor.getPPB();
// Print the reading with 5 digits of precision
Serial.print("Sensor reading: ");
Serial.print(reading, 5);
Serial.println(" PPM");
// Wait a bit before reading again
delay(2500);
}
Komentar u zaglavlju traži da se spoji LMPEN. Na ovoj pločici otpornik od 10 kΩ drži LMPEN na niskoj razini i spojen je na ATtiny404, pa ga ostavite nespojenim (pogledajte tablicu pinova na stranici
Detalji o hardveru).
Očekivani rezultat:
Sensor initialized successfully!
Zatim svakih 2,5 s slijedi redak: Sensor reading: , koncentracija u ppm s pet decimala i PPM. Ako begin() ne uspije, skica ispisuje
ERROR: Can't init the sensor! Check connections! i zaustavlja se.
Korištene funkcije
ElectrochemicalGasSensor(sensorType _t, uint8_t _adcAddr = DEFAULT_ADC_ADDR, int _configPin = -1)returns ElectrochemicalGasSensorStvara objekt senzora. Sprema samo postavke; ništa se ne šalje na pločicu dok se ne pozove begin().
ReturnsObjekt senzora.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
sensorType | _t | Preset ćelije. Primjer prosljeđuje SENSOR_CO; SGX-4CL2 ćelija na ovoj pločici ima preset SENSOR_CL2. |
uint8_t | _adcAddr | I2C adresa, DEFAULT_ADC_ADDR (0x49) ako se izostavi, kao u primjeru. Za adresu od 0x30 do 0x37, raspon ADDRESS sklopke na ovoj pločici, begin() komunicira s ATtiny404 na pločici; za bilo koju drugu adresu traži ADS1115 na toj adresi i LMP91000 izravno na sabirnici. |
int | _configPin | GPIO koji begin() postavlja na nisku razinu dok izravno konfigurira LMP91000. -1 (nijedan) ako se izostavi, kao u primjeru. Ne koristi se za adrese od 0x30 do 0x37. |
bool begin()returns boolPokreće Wire, provjerava odgovara li pločica, postavlja pojačanje ADC-a i brzinu podataka iz preseta te konfigurira LMP91000 postavkama preseta. Pozovite je jednom u setup() prije očitavanja.
Returnstrue kada je pločica odgovorila i oba koraka konfiguracije uspjela, inače false.
double getPPM()returns doubleObavlja jedno očitanje i pretvara ga u ppm: oduzima unutarnji nulti napon (referentnih 2,5 V pomnoženo s postotkom unutarnje nule iz preseta), dodaje kalibraciju nule, dijeli s pojačanjem pojačala i s osjetljivošću preseta u nA po ppm. Rezultat ispod nule vraća se kao 0.
ReturnsKoncentracija plina u ppm.
double getPPB()returns doubleIsto očitanje kao getPPM(), pomnoženo s 1000. Primjer ga prikazuje u komentaru kao alternativu za getPPM().
ReturnsKoncentracija plina u ppb.
Primjer koristi i Serial i delay(), koji dolaze s Arduino jezgrom, a ne s ovom bibliotekom.
Sve zajedno
begin() obavlja cijelo postavljanje, pa loop() samo poziva getPPM() i ispisuje rezultat. Za očitanje u ppb zamijenite redak getPPM() retkom getPPB() iz komentara ispod njega.