Hola gente, les vengo a presentar mi proyecto de un riego automático para el exterior.
Como componentes voy a usar
Arduino uno r3
Relay
Sensores de humedad
Boton
Led
Mi idea es la siguiente,
Voy a a tener 3 sensores de humedad que me van a dar una lectura del suelo, la idea es que no estén tan distanciados y luego con el tiempo agregarle mas, con esas lecturas voy a hacer un promedio y dependiendo si el promedio este bajo o no va a hacer que el relay prenda la bomba un cierto tiempo.
Pero también quiero ponerle un botón para cuando lo aprete se encienda la bomba, la idea es que tenga el control automático y manual. Solo hago esto para agregarle algo mas y aprender.
De mas esta decir qeu soy nuevo y cualquier sugerencia me viene mas que bien.
Este es el codigo que arme pero el cual no me esta funcionando nose porque, cuando lo conecto el relay se vuelve loco y prende y apaga sin si quiera tocar algo!
Lo comento demasiado al codigo porque me parece mas facil despues darme cuenta de que es lo que hice.
//Regador V1
//Voy a declarar todas las constantes para luego si en algun momento voy a modificar algo solo cambio el numero y no todo el codigo.
//PINES DIGITALES
const int led = 5;
const int boton = 6;
const int s1 = 2;
const int s2 = 3;
const int s3 = 4;
const int rele1 = 7;
//PINES ANALOGICOS
const int s1A = 2 ;
const int s2A = 1 ;
const int s3A = 0 ;
//VALORES Y PROMEDIO DE LECTURAS DE LOS SENSORES
int valors1;
int valors2;
int valors3;
int promediovalores;
int espera = 50; // el valor e humedad que tiene que subir la bomba
//estado del boton
int estadoboton = 0;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(boton, INPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(rele1, OUTPUT);
//Cuando iniciamos prendemos los 3 sensores
digitalWrite(s1, HIGH);
digitalWrite(s2, HIGH);
digitalWrite(s3, HIGH);
//Me aseguro que cuando inciie el rele y el led este apagado cuando inicio
digitalWrite(rele1, HIGH);
digitalWrite(led, LOW);
}
void loop()
{ //abro bucle loop
//le asignamos a las varilables la lectura de los sensores
valors1 = analogRead(s1A);
valors2 = analogRead(s2A);
valors3 = analogRead(s3A);
//calculamos el primedio de los 3 valores y se lo asignamos a la variable
promediovalores = ((valors1 + valors2 + valors3) / 3);
estadoboton = digitalRead(boton);//
/* IF para prender o apagar la bomba automaticamente
si el promedio de la humedad de la tierra decae de cierto punto */
if (promediovalores < 400)
{
digitalWrite(led, HIGH);
digitalWrite(rele1, HIGH);
}
if ( promediovalores > (400 + espera)) //la bomba va a estar prendida hasta que llegue a dejar la tierra lo suficientemente humeda
{
digitalWrite(led, LOW);
digitalWrite(rele1, LOW);
}
//IF para el modo manual de activar la bomba, mediante un boton
if (estadoboton == HIGH)
{
digitalWrite(led, HIGH);
digitalWrite(rele1, HIGH);
}
else
{
digitalWrite(led, LOW);
digitalWrite(rele1, LOW);
}
}//llave de cierre bucle loop
y lo e armado de esta forma
http://es.zimagez.com/zimage/avtxpde5leslye3lkisxssulcc9ww7z-seham0wsg1tg.php
http://es.zimagez.com/zimage/airuahwcrqdjfxevn8b21grixol3gjpnhn2ipibkn-.php
http://es.zimagez.com/zimage/avxqbcaxnujemvueryxwmdm5wsxx6nrx80wpdzbf2req.php
http://es.zimagez.com/zimage/asrou9uemqy2y9lmhnhwvqyxzbh2-u0qgpvrmwi0-.php