Paso 11: Dar Garduino Control
incluir la biblioteca de datetime, por lo que nuestro garduino puede realizar un seguimiento de cuánto tiempo las luces estén encendidas
#include < DateTime.h >
definir entradas analógicas al que hemos conectado nuestros sensores
int moistureSensor = 0;
lightSensor int = 1;
int tempSensor = 2;
definir salidas digitales a los que tenemos conexió nuestros relés (agua y luz) y LED (temperatura)
bomba de agua int = 7;
lightSwitch int = 8;
int tempLed = 2;
definir las variables para almacenar valores de temperatura, humedad y luz
int moisture_val;
int light_val;
int temp_val;
decidir cuántas horas de luz las plantas deben recibir diariamente
Float hours_light_daily_desired = 14;
calcular horas de luz diaria total y complementaria basada en por encima de valores deseado
Float proportion_to_light = hours_light_daily_desired / 24;
Float seconds_light = 0;
Float proportion_lit;
configurar una variable para almacenar a segundos desde arduino conectado
flotador start_time;
Float seconds_elapsed;
Float seconds_elapsed_total;
Float seconds_for_this_cycle;
void setup() {}
abrir puerto serie
Serial.Begin(9600);
establecer el agua, luz y pins de temperatura como salidas que se dan vuelta apagado
pinMode (bomba de agua, salida);
pinMode (lightSwitch, salida);
pinMode (tempLed, salida);
digitalWrite (bomba de agua, baja);
digitalWrite (lightSwitch, LOW);
digitalWrite (tempLed, baja);
establecer hora de inicio
start_time = DateTime.now();
seconds_elapsed_total = 0;
}
void loop() {}
leer el valor de las sondas sensoras de humedad, imprimir la pantalla y esperar un segundo
moisture_val = analogRead(moistureSensor);
Serial.Print ("humedad sensor Lee");
Serial.println (moisture_val);
Delay(1000);
leer el valor del fotosensor, imprimir la pantalla y esperar un segundo
light_val = analogRead(lightSensor);
Serial.Print ("lecturas del sensor de luz");
Serial.println (light_val);
Delay(1000);
leer el valor del sensor de temperatura, imprimir la pantalla y esperar un segundo
temp_val = analogRead(tempSensor);
Serial.Print ("lecturas del sensor de temperatura");
Serial.println (temp_val);
Delay(1000);
Serial.Print ("total de segundos =");
Serial.println (seconds_elapsed_total);
Delay(1000);
Serial.Print ("segundos encendidos =");
Serial.println (seconds_light);
Delay(1000);
Serial.Print ("proporción deseada =");
Serial.println (proportion_to_light);
Delay(1000);
Serial.Print ("proporción alcanzada =");
Serial.println (proportion_lit);
Delay(1000);
convertir el agua en el suelo esté seco y hasta el suelo es húmedo
Si (moisture_val < 850)
{
digitalWrite (bomba de agua, alta);
}
mientras (moisture_val < 850)
{
Delay(10000);
Gracias a JoshTW por la corrección siguiente, importante
moisture_val = analogRead(moistureSensor);
}
digitalWrite (bomba de agua, baja);
actualizar hora e incremento seconds_light si las luces están en
seconds_for_this_cycle = DateTime.now() - seconds_elapsed_total;
seconds_elapsed_total = DateTime.now() - start_time;
Si (light_val > 900)
{
seconds_light = seconds_light + seconds_for_this_cycle;
}
días nublados que soleados vuelvan: apagar luces de atrás si light_val supera los 900. Esto funciona b y c las luces suplementarias no son tan brillantes como el sol:)
Si (light_val > 900)
{
digitalWrite (lightSwitch, LOW);
}
Apagar las luces si proportion_lit > proportion_to_light, y espere 5 minutos
Si (proportion_lit > proportion_to_light)
{
digitalWrite (lightSwitch, LOW);
retardo (300000);
}
averiguar qué proporción de las luces del tiempo han sido en
proportion_lit = seconds_light/seconds_elapsed_total;
encender la luz si light_val es menos de 900 y las plantas tienen luz menos deseada proporción de tiempo, esperan 10 segundos
Si (light_val < 900 y proportion_lit < proportion_to_light)
{
digitalWrite (lightSwitch, HIGH);
Delay(10000);
}
encender la luz de temp alarm si temp_val es menos de 850 (aproximadamente 50 grados Fahrenheit)
Si (temp_val < 850)
{
digitalWrite (tempLed, alto);
}
}
Tenga en cuenta la inclusión de la biblioteca de datetime, que se puede instalar desde aquí. Colocar el contenido del archivo en el directorio de bibliotecas de la carpeta de arduino y usted debe ser bueno para ir. Consulte el archivo Léame en la descarga si tiene problemas.
Monitoreo debe ser mejorado, como Garduino debe quedar sentado sin hacer nada la mayoría del tiempo cuando está funcionando correctamente. Podrás tirar de los sensores de humedad del suelo y hacer que encienda dentro de algunos segundos (aire = 0 conductividad entre ellos), pero usted no puede hacer esto con el sensor de luz: sólo está tratando de encender durante 16 horas cada 24 horas. En la actualidad, conectar tu Arduino al ordenador y luego monitoreo del puerto serie le dará cierta retroalimentación significativa. Pero esto es reiniciar el contador de tiempo 0, para que no te los datos históricos útiles a menos que deje la Garduino con un ordenador conectado durante el período que desea supervisar...