From fb83761487fdfe8e9ded7425618c67363b046fb7 Mon Sep 17 00:00:00 2001 From: Marcus Date: Sun, 6 Aug 2023 23:12:01 +0200 Subject: [PATCH] first working prototype. --- main/adresses.txt | 6 ++++ main/main.ino | 84 +++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 77 insertions(+), 13 deletions(-) create mode 100644 main/adresses.txt diff --git a/main/adresses.txt b/main/adresses.txt new file mode 100644 index 0000000..7626af3 --- /dev/null +++ b/main/adresses.txt @@ -0,0 +1,6 @@ +Found 2 devices. + +Printing addresses... +black : 0x28, 0xFF, 0x64, 0x1F, 0x79, 0xD1, 0xB1, 0x75 +red : 0x28, 0xFF, 0x64, 0x1F, 0x79, 0xD7, 0xDA, 0x9A + diff --git a/main/main.ino b/main/main.ino index bde3271..410075b 100644 --- a/main/main.ino +++ b/main/main.ino @@ -1,4 +1,6 @@ - +/* References: + * https://lastminuteengineers.com/multiple-ds18b20-arduino-tutorial/ +*/ #include "ArduinoJson.h" #include @@ -6,25 +8,34 @@ // Data wire is conntec to the Arduino digital pin 4 #define ONE_WIRE_BUS 2 -#define MOSFET 3 +#define MOSFET1 3 +#define MOSFET2 4 // Setup a oneWire instance to communicate with any OneWire devices OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature sensor DallasTemperature sensors(&oneWire); - - +DeviceAddress Thermometer; +int deviceCount = 0; int analogPin = 2; int data = 0; char userInput; char* commandVer; +// temperature values in °C float tempSensor1; float tempSensor2; +// HighTemp - when to turn on the power float HTemp1 = 12.0; -float HTemp2; +float HTemp2 = 16.0; +// LowTemp - when to turn of the power float LTemp1 = 10.0; -float LTemp2; +float LTemp2 = 14.0; + +uint8_t addrSensor1[8] = { 0x28, 0xFF, 0x64, 0x1F, 0x79, 0xD1, 0xB1, 0x75 }; +uint8_t addrSensor2[8] = { 0x28, 0xFF, 0x64, 0x1F, 0x79, 0xD7, 0xDA, 0x9A }; +/* + // countLowTemp int cLTemp1 = 0; int cLTemp2 = 0; @@ -34,12 +45,34 @@ int cHTemp2 = 0; // loops to count temp before switching state int cTemp = 5; +*/ + void setup() { // put your setup code here, to run once: - pinMode(MOSFET, OUTPUT); + pinMode(MOSFET1, OUTPUT); Serial.begin(9600); sensors.begin(); + + + + // locate devices on the bus + Serial.println("Locating devices..."); + Serial.print("Found "); + deviceCount = sensors.getDeviceCount(); + Serial.print(deviceCount, DEC); + Serial.println(" devices."); + Serial.println(""); + + Serial.println("Printing addresses..."); + for (int i = 0; i < deviceCount; i++) + { + Serial.print("Sensor "); + Serial.print(i+1); + Serial.print(" : "); + sensors.getAddress(Thermometer, i); + printAddress(Thermometer); + } } void loop() { @@ -51,18 +84,31 @@ void loop() { Serial.print("Sens 1 "); Serial.print("Celsius temperature: "); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire - Serial.print(sensors.getTempCByIndex(0)); + Serial.print(sensors.getTempC(addrSensor1)); Serial.print(" - Fahrenheit temperature: "); - Serial.println(sensors.getTempFByIndex(0)); + Serial.println(sensors.getTempF(addrSensor1)); + + Serial.print("Sens 2 "); + Serial.print("Celsius temperature: "); + // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire + Serial.print(sensors.getTempC(addrSensor2)); + Serial.print(" - Fahrenheit temperature: "); + Serial.println(sensors.getTempF(addrSensor2)); - tempSensor1 = sensors.getTempCByIndex(0); + tempSensor1 = sensors.getTempC(addrSensor1); if(tempSensor1 > HTemp1) { - digitalWrite(MOSFET, HIGH); + digitalWrite(MOSFET1, HIGH); } else if(tempSensor1 < LTemp1) { - digitalWrite(MOSFET, LOW); + digitalWrite(MOSFET1, LOW); + } + + tempSensor2 = sensors.getTempC(addrSensor2); + if(tempSensor2 > HTemp2) { + digitalWrite(MOSFET2, HIGH); + } else if(tempSensor1 < LTemp1) { + digitalWrite(MOSFET2, LOW); } - /* digitalWrite(MOSFET, HIGH); delay(2000); @@ -73,3 +119,15 @@ void loop() { // } } + +void printAddress(DeviceAddress deviceAddress) +{ + for (uint8_t i = 0; i < 8; i++) + { + Serial.print("0x"); + if (deviceAddress[i] < 0x10) Serial.print("0"); + Serial.print(deviceAddress[i], HEX); + if (i < 7) Serial.print(", "); + } + Serial.println(""); +}