THIS IS NOT A QUESTION
Just posting my Aquaponics sketch works on 1.04 it’s not fully completed but still usable, or you may wish to play with it.
It contains ball valves, float switches, extractor fan, inlet & outlet working with DHT11 relays and all that jazz
I will post the full completed sketch when I obtain all the hardware needed
//Define PIN's
#include <Time.h>
#include <TimeAlarms.h>
#define outletballvalveopen 3
#define outletballvalveclosed 7
#define ballvalvearth 6
#define solenoidPin 1
#define airpump 2
#define inletballvalve 5
#define floatswitchaqua 6
#define floatswtchtreserve 7
#define ventilationPin 8
#define relaylights 9
#define waterpump 10
#define airwaterjet 11
#define dht_dpin A4
#define DHTTYPE DHT11
const int buttonPin = 2;
byte compFunc;
byte dht_dat[5];
int buttonState = 0;
void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(ballvalvearth ,OUTPUT);
pinMode(outletballvalveclosed ,OUTPUT);
pinMode(ventilationPin,OUTPUT);
pinMode(solenoidPin, OUTPUT);
pinMode(relaylights, OUTPUT);
pinMode(waterpump, OUTPUT);
pinMode(airpump, OUTPUT);
pinMode(outletballvalveopen, OUTPUT);
pinMode(inletballvalve, OUTPUT);
pinMode(airwaterjet, OUTPUT);
pinMode(floatswtchtreserve, INPUT);
pinMode(floatswitchaqua, INPUT);
digitalWrite(ventilationPin,HIGH);
digitalWrite(solenoidPin, HIGH);
digitalWrite(relaylights, HIGH);
digitalWrite(waterpump, HIGH);
digitalWrite(airpump, HIGH);
digitalWrite(outletballvalveopen, HIGH);
digitalWrite(inletballvalve, HIGH);
digitalWrite(airwaterjet, HIGH);
Serial.println(F("_________AquaDuino by ArkAnArky_________"));
setTime(05,59,30,1,07,13); //
Alarm.alarmRepeat(06,00,00, MorningAlarm); // 6:00am every day
Alarm.alarmRepeat(18,00,00,EveningAlarm); // 6:00pm every day
delay(300);
delay(700);
}
void loop(){
buttonState = digitalRead(buttonPin);
InitDHT();
ReadDHT();
switch (compFunc){
case 0:
Serial.print(dht_dat[0], DEC);
Serial.println (F("% Humidity "));
Serial.println (F("Temperature = "));
Serial.print(dht_dat[2], DEC);
Serial.println (F("*C "));
digitalClockDisplay();
Alarm.delay(1000);
break;
case 1:
Serial.println (F("Error 1: DHT start condition 1 not met."));
break;
case 2:
Serial.println (F("Error 2: DHT start condition 2 not met."));
break;
case 3:
Serial.println (F("Error 3: DHT checksum error."));
break;
default:
Serial.println (F("Error: Unrecognized code encountered."));
break;
}
if(dht_dat[0] >= 40 && dht_dat[2] >= 30){
digitalWrite(ventilationPin, LOW);
digitalWrite(inletballvalve, LOW);
delay(500);
digitalWrite(airwaterjet, LOW);
Serial.println (F("ventilation running"));
}
else {
digitalWrite(ventilationPin, HIGH);
digitalWrite(airwaterjet, HIGH);
delay(500);
digitalWrite(inletballvalve, HIGH);
Serial.println (F("ventilation off"));
}
if (floatswitchaqua, LOW);
Serial.println (F("aquarium water level low."));
digitalWrite(outletballvalveopen, LOW);
delay(2000);
digitalWrite(outletballvalveclosed, HIGH);
if (floatswitchaqua, HIGH);
digitalWrite(outletballvalveclosed, LOW);
delay(2000);
digitalWrite(outletballvalveopen, HIGH);
Serial.println (F("aquarium water level normal."));
Serial.println (F(" \n\n"));
delay(2000);
}
void InitDHT()
{
pinMode(dht_dpin,OUTPUT);
digitalWrite(dht_dpin,HIGH);
}
void ReadDHT()
{
compFunc=0;
byte dht_in;
byte i;
digitalWrite(dht_dpin,LOW);
delay(50);
digitalWrite(dht_dpin,HIGH);
delayMicroseconds(40);
pinMode(dht_dpin,INPUT);
dht_in=digitalRead(dht_dpin);
if(dht_in){
compFunc=1;
return;
}
delayMicroseconds(80);
dht_in=digitalRead(dht_dpin);
if(!dht_in){
compFunc=2;
return;
}
delayMicroseconds(80);
for (i=0; i<5; i++)dht_dat[i] = read_dht_dat();
pinMode(dht_dpin,OUTPUT);
digitalWrite(dht_dpin,HIGH);
byte dht_check_sum =dht_dat[0]+dht_dat[1]+dht_dat[2]+dht_dat[3];
if(dht_dat[4]!= dht_check_sum){
compFunc=3;
}//DHT checksum error
}
byte read_dht_dat(){
byte i = 0;
byte result=0;
for(i=0; i< 8; i++){
while(digitalRead(dht_dpin)==LOW);
delayMicroseconds(45);
if (digitalRead(dht_dpin)==HIGH) result |=(1<<(7-i));
while (digitalRead(dht_dpin)==HIGH);
}
return result;
if (buttonState == HIGH) {
digitalWrite(ballvalvearth ,HIGH);
digitalWrite(outletballvalveclosed,HIGH);
Serial.println (F("outletballvalveopen"));
}
else {
Serial.println (F("WATER ADJUSTING"));
}
if (buttonState == LOW) {
digitalWrite(outletballvalveclosed,LOW);
digitalWrite(ballvalvearth ,LOW);
digitalWrite(outletballvalveopen,HIGH);
Serial.println (F("outletballvalveclosed"));
}
else {
digitalWrite(outletballvalveopen,LOW);
digitalWrite(ballvalvearth ,HIGH);
digitalWrite(outletballvalveclosed,HIGH);
}
}
void MorningAlarm(){
Serial.println (F("Good-morning Arky"));
Serial.println (F("Aquaduino System Starting"));
digitalWrite(solenoidPin, LOW);
digitalWrite(relaylights, LOW);
digitalWrite(waterpump, LOW);
digitalWrite(airpump, LOW);
digitalWrite(outletballvalveclosed, LOW);
digitalWrite(outletballvalveopen, HIGH);
digitalWrite(inletballvalve, HIGH);
}
void EveningAlarm(){
Serial.println (F("Goodnight Arky"));
Serial.println (F("Aquaduino System Sleeping"));
digitalWrite(solenoidPin, HIGH);
digitalWrite(relaylights, HIGH);
digitalWrite(waterpump, HIGH);
digitalWrite(airpump, HIGH);
digitalWrite(outletballvalveopen, LOW);
digitalWrite(outletballvalveclosed, HIGH);
digitalWrite(inletballvalve, LOW);
}
void digitalClockDisplay()
{
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.println ();
}
void printDigits(int digits)
{
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}