First init.

This commit is contained in:
2025-10-12 09:13:56 +02:00
commit 1548aeaf9b
458 changed files with 118808 additions and 0 deletions

View File

@@ -0,0 +1,100 @@
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS_1 2 // DS18B20 temperature sensor CLT1
#define ONE_WIRE_BUS_2 3 // DS18B20 temperature sensor CLT2
#define FAN_PIN 11 // PWM output pin for FAN1
#define ANALOG_INPUT_PIN A0
#define ORS_PIN 19 // Input pin for fan control
#define FAN_ON 95 // Temperature threshold to turn on fan
#define FAN_OFF (FAN_ON - 10) // Temperature threshold to turn off fan
#define FAN_HIGH (FAN_ON + 10) // High temperature threshold for increased fan speed
#define FAN_HIGH_DUTY_CYCLE 95 // Duty cycle for increased fan speed
#define FAN_LOW_DUTY_CYCLE 40 // Duty cycle for normal fan speed
OneWire oneWire1(ONE_WIRE_BUS_1);
OneWire oneWire2(ONE_WIRE_BUS_2);
DallasTemperature sensor1(&oneWire1);
DallasTemperature sensor2(&oneWire2);
bool fanOverride = false;
int fanOverrideDutyCycle = 0;
void setup() {
pinMode(ORS_PIN, INPUT_PULLUP);
pinMode(FAN_PIN, OUTPUT);
Serial.begin(9600);
sensor1.begin();
sensor2.begin();
}
void loop() {
float temp1, temp2;
bool validReading1 = false, validReading2 = false;
// Read temperatures from sensors
sensor1.requestTemperatures();
sensor2.requestTemperatures();
temp1 = sensor1.getTempCByIndex(0);
temp2 = sensor2.getTempCByIndex(0);
// Check if readings are valid
if (temp1 >= -20 && temp1 <= 130) {
validReading1 = true;
}
if (temp2 >= -20 && temp2 <= 130) {
validReading2 = true;
}
// Calculate average temperature
float avgTemp = -1;
if (validReading1 && validReading2) {
avgTemp = (temp1 + temp2) / 2;
} else if (validReading1) {
avgTemp = temp1;
} else if (validReading2) {
avgTemp = temp2;
}
// Check if fan should be controlled by temperature
if (!fanOverride) {
if (avgTemp >= FAN_ON) {
analogWrite(FAN_PIN, FAN_LOW_DUTY_CYCLE);
} else if (avgTemp <= FAN_OFF) {
digitalWrite(FAN_PIN, LOW); // Fan should be off if temperature is below FAN_OFF threshold
} else if (avgTemp >= FAN_HIGH) {
analogWrite(FAN_PIN, FAN_HIGH_DUTY_CYCLE);
} else {
analogWrite(FAN_PIN, FAN_LOW_DUTY_CYCLE);
}
} else {
analogWrite(FAN_PIN, fanOverrideDutyCycle);
}
// Check if fan control pin is pulled low
if (digitalRead(ORS_PIN) == LOW) {
int potValue = analogRead(ANALOG_INPUT_PIN);
fanOverrideDutyCycle = map(potValue, 0, 1023, 0, 255);
fanOverride = true;
} else {
fanOverride = false;
}
// Output to serial monitor
Serial.print("Average Temperature: ");
if (avgTemp != -1) {
Serial.print(avgTemp);
Serial.println(" C");
} else {
Serial.println("Invalid reading");
}
Serial.print("Fan Duty Cycle: ");
if (fanOverride) {
Serial.print(map(fanOverrideDutyCycle, 0, 255, 0, 100));
} else {
Serial.print(map(analogRead(FAN_PIN), 0, 1023, 0, 100));
}
Serial.println("%");
delay(1000);
}