2
« Dato: September 23, 2022, 13:54:24 »
Hej.
Jeg har lavet en lille kodning i Arduino som skal styre nogle relæ'er alt efter hvor temperaturen er på min DS18B20 temperatur sensor.
Der SKAL være et relæ trukket hele tiden, så jeg har selvfølgelig lidt problemer med at relæ'erne står og danser frem og tilbage, og det er ikke rigtig godt, jeg kan selvfølgelig give den en høj Delay time, så er det knapt så voldsomt. Skal lige siges at det er en ude temperatur jeg måler
Jeg har læst lidt om at finde gennemsnit forskellige steder, men jeg forstår det ikke rigtigt, jeg er meget ny i denne verden, så måske der var en herinde der kunne hjælpe, Hvis jeg bare kunne få rette mit Sketch, så skal jeg skam nok sidde og nørde med det for at finde ud af hvordan og hvorfor.. Tænker hvis der feks kunne laves 10 målinger og så giver den en gennemsnit værdi, ved ikke om det kan laves så jeg selv kan vælge om der skal være 1 eller 15 sek mellem de 10 målinger? Har lidt svære ved at se mig ud af det.
Den kodning jeg har lavet kan med garanti laves på en helt anden og forenklet måde, men viser jo bare hvor ny jeg er i det. Men kom gerne med input.
Mvh Dan
#include <OneWire.h>
#include <DallasTemperature.h>
float Temp1 = 22.0;
float Temp2 = 24.0;
float Temp3 = 26.0;
float Temp4 = 28.0;
float Temp5 = 30.0;
float Temp6 = 32.0;
float Temp7 = 29.0;
float Temp8 = 30.0;
float Temp9 = 31.0;
#define ONE_WIRE_BUS 2
#define K101 3
#define K102 4
#define K103 5
#define K104 6
#define K105 7
#define K106 8
#define K107 9
#define K108 10
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600);
pinMode(K101, OUTPUT);
pinMode(K102, OUTPUT);
pinMode(K103, OUTPUT);
pinMode(K104, OUTPUT);
pinMode(K105, OUTPUT);
pinMode(K106, OUTPUT);
pinMode(K107, OUTPUT);
pinMode(K108, OUTPUT);
sensors.begin();
}
void loop(void)
{
sensors.requestTemperatures();
float current_temp = sensors.getTempCByIndex(0);
Serial.print("Ude Temperatur: ");
Serial.println(current_temp);
if(current_temp < Temp1)
{
digitalWrite(K101, HIGH);
digitalWrite(K102, LOW);
digitalWrite(K103, LOW);
digitalWrite(K104, LOW);
digitalWrite(K105, LOW);
digitalWrite(K106, LOW);
}
if(current_temp >= Temp1)
{
digitalWrite(K101, LOW);
digitalWrite(K102, HIGH);
digitalWrite(K103, LOW);
digitalWrite(K104, LOW);
digitalWrite(K105, LOW);
digitalWrite(K106, LOW);
}
if(current_temp >= Temp2)
{
digitalWrite(K101, LOW);
digitalWrite(K102, LOW);
digitalWrite(K103, HIGH);
digitalWrite(K104, LOW);
digitalWrite(K105, LOW);
digitalWrite(K106, LOW);
}
if(current_temp >= Temp3)
{
digitalWrite(K101, LOW);
digitalWrite(K102, LOW);
digitalWrite(K103, LOW);
digitalWrite(K104, HIGH);
digitalWrite(K105, LOW);
digitalWrite(K106, LOW);
}
if(current_temp >= Temp4)
{
digitalWrite(K101, LOW);
digitalWrite(K102, LOW);
digitalWrite(K103, LOW);
digitalWrite(K104, LOW);
digitalWrite(K105, HIGH);
digitalWrite(K106, LOW);
}
if(current_temp >= Temp5)
{
digitalWrite(K101, LOW);
digitalWrite(K102, LOW);
digitalWrite(K103, LOW);
digitalWrite(K104, LOW);
digitalWrite(K105, LOW);
digitalWrite(K106, HIGH);
}
delay(2000);
}