Skip to main content

Prilagođena adresa

Što ovaj primjer prikazuje​

Primjer customAddress iz biblioteke stvara senzor na I2C adresi koja nije zadana, pri čemu se adresa i pin predaju kao drugi i treći argument konstruktora, a koncentracija u ppm ispisuje se svakih 2,5 s. Primjer predaje adresu 0x4B i pin 5.

Primjer stvara senzor s SENSOR_SO2, predloškom za sumporov dioksid. Biblioteka izračunava ppm iz postavki osjetljivosti i pojačanja predloška; predložak za klorovu ćeliju ove pločice je SENSOR_CL2.

Adresa same pločice postavlja se preklopnikom ADDRESS, od 0x30 do 0x37 (0x30 pri isporuci); pogledajte Detalji o hardveru.

Kôd primjera​

Select Board
customAddress.ino
/**
**************************************************
*
* @file customAddress.ino
* @brief See how to init a sensor on a custom address
*
* To successfully run the sketch:
* - Set the custom address using the jumpers on the back of the board
* - 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"

// Create the sensor object with the according type
// To set a custom address, connect one of the following jumpers:
// JP5 for 0x49
// JP6 for 0x4A
// JP7 for 0x4B
// 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);
}

Komentari u primjeru postavljaju adresu pomoću jumpera na poleđini pločice, navode jumpere za 0x49 do 0x4B i traže da se LMPEN spoji. Na ovoj pločici svi su jumperi na gornjoj strani, JP5 i JP6 su pull-up jumperi, a adresa same pločice postavlja se preklopnikom ADDRESS. Otpornik od 10 kΩ drži LMPEN na niskoj razini i spojen je na ATtiny404, zato ga ostavite nespojenim (pogledajte Detalji o hardveru).

Očekivani rezultat:

Serial MonitorAutoscrollShow timestampNewline115200 baud
Message (Enter to send message to the board)
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 ElectrochemicalGasSensor

Stvara objekt senzora. Sprema samo postavke; ništa se ne šalje na pločicu dok se ne pozove begin().

ReturnsObjekt senzora.

Parametri

TipNazivOpis
sensorType_tPredložak ćelije. Primjer predaje SENSOR_SO2; ćelija SGX-4CL2 na ovoj pločici ima predložak SENSOR_CL2.
uint8_t_adcAddrI2C adresa, DEFAULT_ADC_ADDR (0x49) ako se izostavi; primjer predaje 0x4B. Za adresu od 0x30 do 0x37, raspon preklopnika ADDRESS 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_configPinGPIO koji begin() postavlja na nisku razinu dok izravno konfigurira LMP91000; primjer predaje 5. -1 (nijedan) ako se izostavi. Ne koristi se za adrese od 0x30 do 0x37.
bool begin()returns bool

Pokreće Wire, provjerava odgovara li pločica, postavlja pojačanje ADC-a i brzinu podataka predloška te konfigurira LMP91000 postavkama predloška. Pozovite jednom u setup() prije čitanja.

Returnstrue ako je pločica odgovorila i oba koraka konfiguracije uspjela, inače false.

double getPPM()returns double

Obavlja jedno očitanje i pretvara ga u ppm: oduzima unutarnji nulti napon (referenca od 2,5 V pomnožena unutarnjim nultim postotkom predloška), dodaje nultu kalibraciju, dijeli s pojačanjem pojačala i s osjetljivošću predloška u nA po ppm. Rezultat ispod nule vraća se kao 0.

ReturnsKoncentracija plina u ppm.

double getPPB()returns double

Isto 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​

Adresa i pin jedine su razlike u odnosu na senzor stvoren sa zadanim vrijednostima: begin() čita adresu kako bi odlučio na koji način doći do pločice, a ostatak skice jednak je kao kod jednog očitanja svakih 2,5 s.