Očitanje dvaju senzora
Što ovaj primjer prikazuje
Primjer twoSensors stvara dva objekta senzora, svaki sa svojom adresom i konfiguracijskim pinom, te svake 2,5 sekunde ispisuje očitanje svakog od njih: prvo u PPM, drugo u PPB. Stvara sensorCO sa SENSOR_CO na adresi 0x4A s pinom 25 i sensorNO2 sa SENSOR_NO2 na adresi 0x49 s pinom 32.
Predlošci u primjeru namijenjeni su ugljikovu monoksidu i dušikovu dioksidu, pa njegove vrijednosti nisu vrijednosti za H2S. Nemojte upotrebljavati predložak SENSOR_H2S iz biblioteke bez izmjena: taj je predložak napisan za ćeliju SGX-4H2S-100 osjetljivosti 1200 nA po ppm, dok ova pločica ima ćeliju SGX-4H2S-300, čiji
tehnički list
navodi izlazni signal od 460 ± 140 nA po ppm. sa SENSOR_H2S je očitanje otprilike 2,6 puta preniško. Umjesto toga proslijedite prilagođenu vrstu senzora s postavkama SENSOR_H2S i 460 nA po ppm, kao što prikazuje
Brzi početak.
Kôd primjera
// Include the required library
#include "Electrochemical-Gas-Sensor-SOLDERED.h"
// Create two different sensor objects
ElectrochemicalGasSensor sensorCO(SENSOR_CO, 0x4A, 25);
ElectrochemicalGasSensor sensorNO2(SENSOR_NO2, 0x49, 32);
// To see how the custom addresses are determined, check customAddress.ino
void setup()
{
Serial.begin(115200); // For debugging
// Init breakout #1
if (!sensorCO.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("CO sensor initialized successfully!");
// Init breakout #2
if (!sensorNO2.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("NO2 sensor initialized successfully!");
}
void loop()
{
// Make the reading of CO and print it
double COreading = sensorCO.getPPM();
// Print the reading with 5 digits of precision
Serial.print("CO sensor reading: ");
Serial.print(COreading, 5);
Serial.println(" PPM");
// Make the reading of NO2 and print it
double NO2reading = sensorNO2.getPPB();
// Print the reading with 5 digits of precision
Serial.print("NO2 sensor reading: ");
Serial.print(NO2reading, 5);
Serial.println(" PPB");
// Wait a bit before reading again
delay(2500);
}
Očekivani rezultat:
CO sensor initialized successfully!
NO2 sensor initialized successfully!
Zatim svake 2,5 sekunde slijede redak CO sensor reading: u PPM i redak NO2 sensor reading: u PPB, oba na pet decimala. Ako senzor ne odgovori, 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 noneStvara jedan objekt senzora po plinskoj ćeliji, svaki sa svojom adresom i konfiguracijskim pinom. Vrsta senzora sadrži postavke ulaznog sklopa i pretvorbe za jednu plinsku ćeliju. Adresa određuje kako begin() komunicira s pločicom: adresa od 0x30 do 0x37 ide preko ATtiny404 na pločici; svaka druga adresa, primjerice zadana 0x49, ide na ADS1115 na toj adresi te izravno na LMP91000.
ReturnsKonstruktor.
Parametri
| Name | Type | Description |
|---|---|---|
_t | sensorType | Predložak iz biblioteke (SENSOR_CO, SENSOR_NO2, SENSOR_SO2, SENSOR_O3, SENSOR_NO, SENSOR_H2S, SENSOR_NH3, SENSOR_CL2) ili prilagođeni sensorType. Za ćeliju ove pločice proslijedite prilagođeni s 460 nA po ppm. |
_adcAddr | uint8_t | Adresa s kojom begin() komunicira. Ovaj primjer proslijeđuje 0x4A za sensorCO i 0x49 za sensorNO2. |
_configPin | int | GPIO koji biblioteka drži u visokom stanju i spušta u nisko dok izravno konfigurira LMP91000 tog senzora. Ignorira se na adresama od 0x30 do 0x37. Ovaj primjer proslijeđuje 25 i 32. |
bool begin()returns boolPokreće I2C i prema adresi bira način komunikacije s pločicom. S adresom od 0x30 do 0x37 provjerava odgovara li ATtiny404 na pločici te mu šalje pojačanje ADC-a iz vrste senzora s najsporijom brzinom podataka; svaka naredba čeka odgovor do 500 ms. S bilo kojom drugom adresom pokreće ADS1115 na toj adresi s istim pojačanjem i brzinom podataka, postavlja konfiguracijski pin kao izlaz u visokom stanju te ga spušta u nisko dok konfigurira LMP91000. Pozovite ga jednom za svaki objekt senzora.
Returnstrue ako su svi koraci uspjeli, inače false.
double getPPM()returns doubleOčitava ADC, oduzima unutarnju nulu ulaznog sklopa (2,5 V puta njezin postotak), dodaje kalibraciju nule, zatim dijeli s pojačanjem pojačala i s osjetljivošću ćelije u nA po ppm iz vrste senzora. Rezultat manji od 0 vraća se kao 0.
ReturnsKoncentracija plina u PPM.
double getPPB()returns doubleOčitava vrijednost pomoću getPPM() i množi je s 1000.
ReturnsKoncentracija plina u PPB.
Sve zajedno
Stvorite jedan objekt ElectrochemicalGasSensor po plinskoj ćeliji, svaki sa svojom adresom i
konfiguracijskim pinom, pozovite begin() na svakom, a zatim očitajte svaki pomoću getPPM() ili
getPPB().