on, off rele con sonda de agua

Buenas, mi proyecto es para controlar un deposito de agua de relleno para un acuario a través de arduino. Tengo este código

int bombarelleno = 7; // BOMBA RELLENO int boya= 8; // Nivel agua para relleno ENTRADA ANALOGICA

void setup() {

pinMode(boya,INPUT); //sensor de nivel de liquido pinMode(bombarelleno, OUTPUT); //salida led }

void loop() { if(digitalRead(boya)==HIGH) digitalWrite(bombarelleno,HIGH); else digitalWrite(bombarelleno,LOW); }

El funcionamiento es básico: una urna que vierte agua a otro a través de una bomba de agua pequeñita, en la urna principal para controlar el agua que se evapora en esta. En la urna principal o la que recibe el agua hay una sonda de nivel que se activa o desactiva cuando el nivel de agua oscila por evaporación, mandando una señal a arduino que pone en funcionamiento un rele en el cual esta conectada la bomba de agua que debería de apagarse cuando la sonda ha alcanzado el nivel correcto, repitiéndose asi este ciclo indefinidamente. la sonda estando en posición encendida conecta el rele correctamente, pero cuando se cierra, enciende y apaga el rele repetidamente hasta que la vuelvo en on, con lo que el rele activa la bomba de agua y la para. El problema que tengo es que cuando baja el nivel de agua y la sonda se activa el rele se conecta correctamente, pero cuando sube el nivel de agua, el rele se enciende y se apaga repetidamente sin cortar que es lo que debería de hacer hasta que la sonda baje de nuevo.

Agradeceria que me ayuden, aunque parezca mentira llevo todo el santo dia mirando por google y no soy capaz de arreglarlo, ya que soy un copia/pega en programación. Saludos

No me cuadra que en el comentario del pin boya pongas entrada analogica y lo conectes a un pin digital .en el caso de que la señal de la boya sea digital y el comentario este equivocado ,has puesto resistencia de pulldown en la entrada de dicho pin??

Hola Jose el comentario estará mal, y la resistencia no la he puesto, es necesaria? Tampoco se que resistencia es.

|500x333

Ok, la resistencia no sabía que fuese necesaria, ya que me he fijado en este esquema y aquí no aparece nada [url=http://][/url]

En ese caso tendré que comprarlas, de cuanto seria para decírselo al de la tienda. Mil gracias

No necesitas comprar ni colocar ninguna resistencia si colocas

pinMode(boya,INPUT_PULLUP);

y la boya la conectas entre el PIN 8 y GND

Y con eso se solucionq lo del rele pa que se quede fijo, que no sw encienda y se apague?

Se ha repetio el post, lo borro

Con esa Resistencia PULLUP interna, tendras dos estados reconocidos con de la boya. Seria bueno que los verifiques

int bombarelleno = 7;  // BOMBA RELLENO
int boya= 8; // Nivel agua para relleno ENTRADADigital de la Boya
bool estado = false;


void setup() {                
  pinMode(boya,INPUT_PULLUP);   //sensor de nivel de liquido
  pinMode(bombarelleno, OUTPUT); //salida led
}

void loop()
{
  estado = digitalRead(boya);
  Serial.print("Estado boya :");
  Serial.println(estado?"OFF":"ON");  
}

Gracias jose por indicarme el error

Buenas, acabo de llegar a casa, he probado el pullup y funciona correctamente, os agradezco enormemente vuestra ayuda a los tres, aun no me entra en la cabeza que una simple palabra "pullup" pueda enmendar las 4 o 5 horas que heché ayer probando un código y otro y otro de otras personas que sacaba de google... en fin, me habéis alegrado el dia.

Enhorabuena por vuestra labor y otra vez gracias.

Manupower. lo que te paso se hubiera resuelto siguiendo un buen libro. En Documentación tienes clases en Youtube, muy buenos tutoriales y buenos libros. Te recomiendo que leas y te instruyas para aprender y ahorrar tiempo. Ahora bien, no importa el nivel que tengas, estas cosas ocurren y a cualquiera, sea con una resistencia PULLUP o con otra cosa tonta pero simple. Muchas veces está delante de los ojos pero no lo vemos.