123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- //
- // FILE: UserDataDemo.ino
- // AUTHOR: Rob Tillaart
- // VERSION: 0.1.0
- // PURPOSE: use of alarm field as user identification demo
- // DATE: 2019-12-23
- // URL:
- //
- // Released to the public domain
- //
- #include <OneWire.h>
- #include <DallasTemperature.h>
- #define ONE_WIRE_BUS 2
- OneWire oneWire(ONE_WIRE_BUS);
- DallasTemperature sensors(&oneWire);
- uint8_t deviceCount = 0;
- // Add 4 prepared sensors to the bus
- // use the UserDataWriteBatch demo to prepare 4 different labeled sensors
- struct
- {
- int id;
- DeviceAddress addr;
- } T[4];
- float getTempByID(int id)
- {
- for (uint8_t index = 0; index < deviceCount; index++)
- {
- if (T[index].id == id)
- {
- return sensors.getTempC(T[index].addr);
- }
- }
- return -999;
- }
- void printAddress(DeviceAddress deviceAddress)
- {
- for (uint8_t i = 0; i < 8; i++)
- {
- // zero pad the address if necessary
- if (deviceAddress[i] < 16) Serial.print("0");
- Serial.print(deviceAddress[i], HEX);
- }
- }
- void setup(void)
- {
- Serial.begin(115200);
- Serial.println(__FILE__);
- Serial.println("Dallas Temperature Demo");
- sensors.begin();
-
- // count devices
- deviceCount = sensors.getDeviceCount();
- Serial.print("#devices: ");
- Serial.println(deviceCount);
- // Read ID's per sensor
- // and put them in T array
- for (uint8_t index = 0; index < deviceCount; index++)
- {
- // go through sensors
- sensors.getAddress(T[index].addr, index);
- T[index].id = sensors.getUserData(T[index].addr);
- }
- // Check all 4 sensors are set
- for (uint8_t index = 0; index < deviceCount; index++)
- {
- Serial.println();
- Serial.println(T[index].id);
- printAddress(T[index].addr);
- Serial.println();
- }
- Serial.println();
- }
- void loop(void)
- {
- Serial.println();
- Serial.print(millis());
- Serial.println("\treq temp");
- sensors.requestTemperatures();
- Serial.print(millis());
- Serial.println("\tGet temp by address");
- for (int i = 0; i < 4; i++)
- {
- Serial.print(millis());
- Serial.print("\t temp:\t");
- Serial.println(sensors.getTempC(T[i].addr));
- }
- Serial.print(millis());
- Serial.println("\tGet temp by ID"); // assume ID = 0, 1, 2, 3
- for (int id = 0; id < 4; id++)
- {
- Serial.print(millis());
- Serial.print("\t temp:\t");
- Serial.println(getTempByID(id));
- }
- delay(1000);
- }
- // END OF FILE
|