Created
January 11, 2020 03:23
-
-
Save smartynov/eef1f656582dde782ec508e260411a84 to your computer and use it in GitHub Desktop.
Simple Arduino script to search for connected 1wire devices and get addresses. Useful for DS18B20 discovery.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// FILE: oneWireSearch.ino | |
// AUTHOR: Rob Tillaart | |
// VERSION: 0.1.04 | |
// PURPOSE: scan for 1-Wire devices + code snippet generator | |
// DATE: 2015-june-30 | |
// URL: http://forum.arduino.cc/index.php?topic=333923 | |
// | |
// inspired by http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html | |
// | |
// Released to the public domain | |
// | |
// 0.1.00 initial version | |
// 0.1.01 first published version | |
// 0.1.02 small output changes | |
// 0.1.03 added more explicit range | |
// 0.1.04 added CRC check | |
#include <OneWire.h> | |
uint8_t findDevices(int pin) | |
{ | |
OneWire ow(pin); | |
uint8_t address[8]; | |
uint8_t count = 0; | |
if (ow.search(address)) | |
{ | |
Serial.print("\nuint8_t pin"); | |
Serial.print(pin, DEC); | |
Serial.println("[][8] = {"); | |
{ | |
count++; | |
Serial.println(" {"); | |
for (uint8_t i = 0; i < 8; i++) | |
{ | |
Serial.print("0x"); | |
if (address[i] < 0x10) Serial.print("0"); | |
Serial.print(address[i], HEX); | |
if (i < 7) Serial.print(", "); | |
} | |
Serial.print(" },"); | |
// CHECK CRC | |
if (ow.crc8(address, 7) == address[7]) | |
{ | |
Serial.println("\t\t// CRC OK"); | |
} | |
else | |
{ | |
Serial.println("\t\t// CRC FAILED"); | |
} | |
} while (ow.search(address)); | |
Serial.println("};"); | |
Serial.print("// nr devices found: "); | |
Serial.println(count); | |
} | |
return count; | |
} | |
void setup() | |
{ | |
Serial.begin(115200); | |
Serial.println("//\n// Start oneWireSearch.ino \n//"); | |
for (uint8_t pin = 20; pin <= 20; pin++) | |
{ | |
findDevices(pin); | |
} | |
Serial.println("\n//\n// End oneWireSearch.ino \n//"); | |
} | |
void loop() | |
{ | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment