hej jeg har brug for lidt hjælp til mit første arduino hack, jeg har et drivhus hvori jeg har en oliekamin som starter og slukker ved at trykke på en trykknap, hvis man holder knappen inde melder den fejl - så derfor skal det være et tryk "on" og derefter "off" altså et såkaldt simulate push button hack, som skal tændes af min arduino med en dallas temp føler og et solid-state relay.
men mit relæ tænder og slukker konstant, og det er her i skal hjælpe en begynder p.f.h. Tak
min kode ser indtil nu sådan ud:
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into pin 3 on the Arduino
#define ONE_WIRE_BUS 3
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
//set maximum tank temperature
int drivhusMax = 27.00;
//set maximum tank temperature
int drivhusMin = 25.00;
DeviceAddress insideThermometer = { 0x28, 0x34, 0x6d, 0x95, 0x04, 0x0, 0x0, 0x2c };
//variables used for control logic
static bool ovnOn;
//variables to hold temperature values
float temp;
//define pin for pump relay
const int ovn = A1;
void setup(void)
{
// start serial port
Serial.begin(9600);
// Start up the library
sensors.begin();
// set the resolution to 10 bit (good enough?)
sensors.setResolution(insideThermometer, 10);
//set pins to output
pinMode (ovn, OUTPUT);
digitalWrite(ovn, LOW);
}
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.print("Error getting temperature");
} else {
Serial.print("C: ");
Serial.print(tempC);
Serial.print(" F: ");
Serial.print(DallasTemperature::toFahrenheit(tempC));
}
}
void loop(void)
{
delay(2000);
Serial.print("Getting temperatures...\n\r");
sensors.requestTemperatures();
//assign value to variables
temp = (sensorValue(insideThermometer));
Serial.print("Inside temperature is: ");
printTemperature(insideThermometer);
Serial.print("\n\r");
if ( (drivhusMin < temp ) )
{
digitalWrite (ovn, HIGH);
delay(250);
digitalWrite(ovn, LOW);
ovnOn = true;
}
else
{
if ( (drivhusMax > temp ) )
digitalWrite (ovn, HIGH);
delay(250);
digitalWrite(ovn, LOW);
ovnOn = false;
}
Serial.print ("ovn status ");
Serial.println (ovnOn);
Serial.println ("");
Serial.println ("");
}
float sensorValue (byte deviceAddress[])
{
float tempC = sensors.getTempC (deviceAddress);
float tempF = (DallasTemperature::toFahrenheit(tempC));
return tempC;
}
Moderator edit:
</mark> <mark>[code]</mark> <mark>
</mark> <mark>[/code]</mark> <mark>
tags added.