Re: Arduino Akvarie controller
Postat: 26 juni 2014, 16:43:39
Inte riktigt säker på hur du menar här?
Svenskt forum för elektroniksnack.
https://elektronikforumet.com/forum/
Kod: Markera allt
if (celsius > val_setH) { // Higher then set value H
M100 = 1; //M100 memory for value have been higher then H
relay_out = 0;
}
if (celsius <= val_setL) { //M100 reset, value have been lower then L
M100 = 0;
relay_out = 1;
}
if ((celsius >= val_setL) && (celsius <= val_setH) &&(M100 = 0)){
relay_out = 1;
}
relay = relay_out;
if (relay == 1) {
digitalWrite(9,LOW);
} else {
digitalWrite(9,HIGH);
}
}
Kod: Markera allt
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
#define ONE_WIRE_BUS 2
#define COOLFAN 3
#define WHITELIGHT 11
#define BLUELIGHT 12
#define RELAY4 13
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress tempProbe = { 0x28, 0xB0, 0x30, 0x7A, 0x05, 0x00, 0x00, 0x1B };
float tempC;
void setup(void)
{
Serial.begin(9600);
Wire.begin();
RTC.begin();
pinMode(COOLFAN, OUTPUT);
pinMode(WHITELIGHT, OUTPUT);
pinMode(BLUELIGHT, OUTPUT);
pinMode(RELAY4, OUTPUT);
sensors.begin();
sensors.setResolution(tempProbe, 9);
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("ReefCon");
}
void printTempSerial(float temp)
{
}
void LCDTemp(float temp)
{
lcd.setCursor(0,1);
if (temp < -100) {
lcd.print("Error");
} else {
lcd.print (temp);
lcd.print(char(223));
}
}
void loop(void)
//TEMPERATURE RELAY FUNCTION
{
sensors.requestTemperatures();
tempC = sensors.getTempC(tempProbe);
printTempSerial(tempC);
LCDTemp(tempC);
if (tempC > 27) { // Higher then set value H
M100 = 1; //M100 memory for value have been higher then H
relay_out = 0;
}
if (tempC <= 26) { //M100 reset, value have been lower then L
M100 = 0;
relay_out = 1;
}
if ((tempC >= 26) && (tempC <= 27) &&(M100 = 0)){
relay_out = 1;
}
relay = relay_out;
if (relay == 1) {
digitalWrite(COOLFAN,HIGH);
lcd.setCursor(9,1);
lcd.print("Fan/On ");
} else {
digitalWrite(COOLFAN,LOW);
lcd.setCursor(9,1);
lcd.print("Fan/Off");
}
}
//if (tempC > 27)
//{
// digitalWrite(COOLFAN,HIGH);
// lcd.setCursor(9,1);
// lcd.print("Fan/On ");
//}
//else
//{
// digitalWrite(COOLFAN,LOW);
// lcd.setCursor(9,1);
// lcd.print("Fan/Off");
//}
//CLOCK FUNCTION
DateTime now = RTC.now();
lcd.setCursor(11,0);
if(now.hour() < 10){
lcd.print("0");
lcd.print(now.hour(), DEC);
}
else{
lcd.print(now.hour(), DEC);
}
lcd.print(':');
if(now.minute() < 10){
lcd.print("0");
lcd.print(now.minute(), DEC);
}
else{
lcd.print(now.minute(), DEC);
}
// TIMER RELAY FUNCTION
if (now.hour() >= 13 and now.hour() < 22) {
digitalWrite(WHITELIGHT,HIGH);
}
else {
digitalWrite(WHITELIGHT,LOW);
}
if (now.hour() >= 12 and now.hour() < 23) {
digitalWrite(BLUELIGHT,HIGH);
}
else {
digitalWrite(BLUELIGHT,LOW);
}
delay(1000);
}
Kod: Markera allt
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
#define ONE_WIRE_BUS 2
#define COOLFAN 3
#define WHITELIGHT 11
#define BLUELIGHT 12
#define RELAY4 13
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress tempProbe = { 0x28, 0xB0, 0x30, 0x7A, 0x05, 0x00, 0x00, 0x1B };
float tempC;
int M100 = 0;
int relay_out = 0;
int relay;
void setup(void)
{
Serial.begin(9600);
Wire.begin();
RTC.begin();
pinMode(COOLFAN, OUTPUT);
pinMode(WHITELIGHT, OUTPUT);
pinMode(BLUELIGHT, OUTPUT);
pinMode(RELAY4, OUTPUT);
sensors.begin();
sensors.setResolution(tempProbe, 9);
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print(" Reef Control ");
lcd.setCursor(0,1);
lcd.print(" v.1.0 ");
delay(4000);
lcd.clear();
}
void printTempSerial(float temp)
{
}
void LCDTemp(float temp)
{
lcd.setCursor(0,1);
if (temp < -100) {
lcd.print("Error");
} else {
lcd.print (temp);
lcd.print(char(223));
}
}
void loop(void)
//TEMPERATURE RELAY FUNCTION
{
sensors.requestTemperatures();
tempC = sensors.getTempC(tempProbe);
printTempSerial(tempC);
LCDTemp(tempC);
if (tempC > 27) { // Higher then set value H
M100 = 1; //M100 memory for value have been higher then H
relay_out = 0;
}
if (tempC <= 26) { //M100 reset, value have been lower then L
M100 = 0;
relay_out = 1;
}
if ((tempC >= 26) && (tempC <= 27) &&(M100 = 0)){
relay_out = 1;
}
relay = relay_out;
if (relay == 1) {
digitalWrite(COOLFAN,HIGH);
lcd.setCursor(9,1);
lcd.print("Fan/On ");
} else {
digitalWrite(COOLFAN,LOW);
lcd.setCursor(9,1);
lcd.print("Fan/Off");
}
}
//if (tempC > 27)
//{
// digitalWrite(COOLFAN,HIGH);
// lcd.setCursor(9,1);
// lcd.print("Fan/On ");
//}
//else
//{
// digitalWrite(COOLFAN,LOW);
// lcd.setCursor(9,1);
// lcd.print("Fan/Off");
//}
//CLOCK FUNCTION
DateTime now = RTC.now();
lcd.setCursor(11,0);
if(now.hour() < 10){
lcd.print("0");
lcd.print(now.hour(), DEC);
}
else{
lcd.print(now.hour(), DEC);
}
lcd.print(':');
if(now.minute() < 10){
lcd.print("0");
lcd.print(now.minute(), DEC);
}
else{
lcd.print(now.minute(), DEC);
}
// TIMER RELAY FUNCTION
if (now.hour() >= 13 and now.hour() < 22) {
digitalWrite(WHITELIGHT,HIGH);
lcd.setCursor(0,0);
lcd.print("Wh");
lcd.print(char(42));
}
else {
digitalWrite(WHITELIGHT,LOW);
lcd.setCursor(0,0);
lcd.print("Wh");
lcd.print(" ");
}
if (now.hour() >= 12 and now.hour() < 23) {
digitalWrite(BLUELIGHT,HIGH);
lcd.setCursor(4,0);
lcd.print("Bl");
lcd.print(char(42));
}
else {
digitalWrite(BLUELIGHT,LOW);
lcd.setCursor(4,0);
lcd.print("Bl");
lcd.print(" ");
}
delay(1000);
}