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);
}