a_wild_card.ino example
Example A: Using the Wildcard - Getting Single Sensor Information
This is a simple demonstration of the SDI-12 library for Arduino. It requests information about a single attached sensor, including its address and manufacturer info, and prints it to the serial port
PlatformIO Configuration
; PlatformIO Project Configuration File [platformio] description = SDI-12 Library Example A: Getting information for a single attached sensor src_dir = .piolibdeps/Arduino-SDI-12_ID1486/examples/a_wild_card [env:mayfly] monitor_speed = 115200 board = mayfly platform = atmelavr framework = arduino lib_ldf_mode = deep+ lib_ignore = RTCZero lib_deps = SDI-12
The Complete Example
/** * @file a_wild_card.ino * @copyright (c) 2013-2020 Stroud Water Research Center (SWRC) * and the EnviroDIY Development Team * This example is published under the BSD-3 license. * @author Kevin M.Smith <SDI12@ethosengineering.org> * @date August 2013 * * @brief Example A: Using the Wildcard - Getting Single Sensor Information * * This is a simple demonstration of the SDI-12 library for Arduino. * * It requests information about the attached sensor, including its address and * manufacturer info. */ #include <SDI12.h> #define SERIAL_BAUD 115200 /*!< The baud rate for the output serial port */ #define DATA_PIN 7 /*!< The pin of the SDI-12 data bus */ #define POWER_PIN 22 /*!< The sensor power pin (or -1 if not switching power) */ /** Define the SDI-12 bus */ SDI12 mySDI12(DATA_PIN); /** '?' is a wildcard character which asks any and all sensors to respond 'I' indicates that the command wants information about the sensor '!' finishes the command */ String myCommand = "?I!"; void setup() { Serial.begin(SERIAL_BAUD); while (!Serial) ; Serial.println("Opening SDI-12 bus..."); mySDI12.begin(); delay(500); // allow things to settle // Power the sensors; if (POWER_PIN > 0) { Serial.println("Powering up sensors..."); pinMode(POWER_PIN, OUTPUT); digitalWrite(POWER_PIN, HIGH); delay(200); } } void loop() { mySDI12.sendCommand(myCommand); delay(300); // wait a while for a response while (mySDI12.available()) { // write the response to the screen Serial.write(mySDI12.read()); } delay(3000); // print again in three seconds }