Skip to main content

Upotreba prilagođene adrese

Što prikazuje ovaj primjer​

Primjer customAddress stvara senzor na adresi koju odaberete, 0x4B, s konfiguracijskim pinom 5, a zatim svakih 2,5 sekunde ispisuje koncentraciju plina u PPM. Konstruktoru prosljeđujete drugi argument, adresu, i treći, konfiguracijski pin, kako biste isto postigli u vlastitoj skici. Na ovoj pločici JP2 do JP4 postavljaju adresu ADS1115 (JP2 za 0x49, JP3 za 0x4A, JP4 za 0x4B), a prekidač ADDRESS postavlja vlastitu adresu pločice od 0x30 do 0x37. Oboje je opisano u poglavlju Detalji o hardveru. JP2 je u isporuci zatvoren, stoga otvorite JP2 prije nego zatvorite JP3 ili JP4 i zatvorite samo jedan od njih: zatvaranje JP3 ili JP4 dok je JP2 još zatvoren spaja SDA2 ili SCL2 na 3V3 i zaustavlja sabirnicu na pločici.

Primjer je napisan sa SENSOR_SO2, predloškom biblioteke za sumporov dioksid, pa njegove PPM vrijednosti nisu vrijednosti H2S. Ne prebacujte ga bez izmjena na predložak SENSOR_H2S iz biblioteke: taj je predložak napisan za ćeliju SGX-4H2S-100, s osjetljivošću od 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 očitanje je oko 2,6 puta preniskо. 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​

Select Board
customAddress.ino
// Include the required library
#include "Electrochemical-Gas-Sensor-SOLDERED.h"

// Create the sensor object with the according type
// The final parameter is the GPIO pin for LMPEN
ElectrochemicalGasSensor sensor(SENSOR_SO2, 0x4B, 5);

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);
}

Očekivani rezultat:

Serial MonitorAutoscrollShow timestampNewline115200 baud
Message (Enter to send message to the board)
Sensor initialized successfully!

Zatim svakih 2,5 sekunde slijedi redak koji počinje s Sensor reading:, s koncentracijom u PPM 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 none

Stvara objekt senzora. Vrsta senzora sadrži postavke ulaznog stupnja 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 i izravno na LMP91000.

ReturnsKonstruktor.

Parametri

NazivTipOpis
_tsensorTypePredlož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.
_adcAddruint8_tAdresa s kojom begin() komunicira. Ovaj primjer prosljeđuje 0x4B.
_configPinintGPIO koji biblioteka drži u visokom stanju i povlači u nisko dok izravno konfigurira LMP91000. Zanemaruje se za adrese od 0x30 do 0x37. Ovaj primjer prosljeđuje 5.
bool begin()returns bool

Pokreće I2C i prema adresi odabire način komunikacije s pločicom. S adresom od 0x30 do 0x37 provjerava odgovara li ATtiny404 na pločici i šalje mu pojačanje ADC-a iz vrste senzora s najmanjom 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 i povlači ga u nisko dok konfigurira LMP91000. Pozovite ga jednom prije očitavanja.

Returnstrue kada su svi koraci uspjeli, inače false.

double getPPM()returns double

Čita ADC, oduzima unutarnju nulu ulaznog stupnja (2,5 V puta njezin postotak), dodaje kalibraciju nule, zatim dijeli s pojačanjem pojačala i 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 double

Alternativa u primjeru koja je pretvorena u komentar: očitava vrijednost pomoću getPPM() i množi je s 1000.

ReturnsKoncentracija plina u PPB.

Sve zajedno​

Proslijedite adresu i konfiguracijski pin kao drugi i treći argument konstruktora, jednom pozovite begin() u setup(), a zatim očitavajte pomoću getPPM() ili getPPB().