#include #define SERIAL_BAUD 1200 #define DATA_PIN 7 #define POWER_PIN 6 #define WAKE_DELAY 0 SDI12 mySDI12(DATA_PIN); bool isActive[64] = {0}; uint8_t numSensors = 0; byte charToDec(char i) { // ... (unchanged) } char decToChar(byte i) { // ... (unchanged) } void printInfo(char i) { // ... (unchanged) } bool getResults(char i, int resultsExpected) { // ... (unchanged) } bool takeMeasurement(char i, String meas_type = "") { // ... (unchanged) } boolean checkActive(char i) { // ... (unchanged) } void setup() { Serial.begin(SERIAL_BAUD); while (!Serial); Serial.println("Opening SDI-12 bus..."); mySDI12.begin(); delay(500); Serial.println("Timeout value: "); Serial.println(mySDI12.TIMEOUT); if (POWER_PIN > 0) { Serial.println("Powering up sensors, wait..."); pinMode(POWER_PIN, OUTPUT); digitalWrite(POWER_PIN, HIGH); delay(15000L); } Serial.println("Scanning all addresses, please wait..."); Serial.println("Sensor Address, Protocol Version, Sensor Vendor, Sensor Model, Sensor Version, Sensor ID"); for (byte i = 0; i < 62; i++) { char addr = decToChar(i); if (checkActive(addr)) { numSensors++; isActive[i] = 1; printInfo(addr); Serial.println(); } } Serial.print("Total number of sensors found: "); Serial.println(numSensors); if (numSensors == 0) { Serial.println("No sensors found, please check connections and restart the Arduino."); while (true) { delay(10); } } Serial.println(); Serial.println("Time Elapsed (s), Measurement Type, Sensor Address, Est Measurement Time (s), Number Measurements, Real Measurement Time (ms), Measurement 1, Measurement 2, ... etc."); Serial.println("-------------------------------------------------------------------------------"); } void loop() { String commands[] = {"C", "D", "T"}; for (uint8_t a = 0; a < 3; a++) { for (byte i = 0; i < 62; i++) { char addr = decToChar(i); if (isActive[i]) { Serial.print(millis()); Serial.print(", "); takeMeasurement(addr, commands[a]); Serial.println(); } } } delay(10000L); }