ayuda programar bombeo [solucionado]

hola gente quiero simular un bombeo, que vallan arrancando las bombas correlativas y que si una bomba lleva encendida X tiempo y si la boya de alto sigue en HIGH arranque otra, no se que estoy haciendo mal porque no hace nada bien.

muchas gracia a todos.

int bomba = { 6, 9, 10, 11 }; // pines digitales de las bombas
const int Boya_alto=7; // sensor alto
const int Boya_bajo=4; // sensor bajo
unsigned long tiempo;
int contador_bomba=0; // contador de la bomba q tiene q arrancar

void setup(){
for (int i=0; i>3; i++)
{
pinMode(bomba*,OUTPUT);*

  • }*
  • pinMode(Boya_bajo,INPUT);*
  • pinMode(Boya_alto,INPUT);*
    }
    void loop()
    {
  • if(digitalRead(Boya_alto)==HIGH) // si la boya esta en alto entro en el bucle*
  • {*
  • tiempo = millis(); // cojo el tiempo para saber cuando ha empezado*
  • while(digitalRead(Boya_bajo) != LOW) // mientras sea diferente a bajo dentro del bucle*
  • {*
  • digitalWrite(bomba[contador_bomba],HIGH); //enciendo la bomba que corresponda*
  • if (digitalRead(Boya_alto == HIGH) && (millis() - tiempo == 3000)) // si el tiempo es superior al marcado.*
  • {*
  • contador_bomba++; // le sumo uno para arrancar la siguiente bomba*
  • digitalWrite(bomba[contador_bomba],HIGH); // arranca la bomba de ayuda.*
  • }*
  • delay(100) *
  • }*
  • contador_bomba++; // aquí una vez se ha bajado el nivel de agua le sumo 1 a la bomba para la siguiente arrancada*
  • }*
  • for (int i=0; i>3;i++) *
  • {*
    _ digitalWrite(bomba*,LOW); // apago todas las bombas, no tengo q saber cual esta encendida*_
    * delay(10);*
    * }*
    * if(contador_bomba > 3)
    _
    {_
    contador_bomba=0; // si el contador es mayo de 3 se pone a cero*

    * }*
    }
    [/quote]
    muchas gracias a todos, puede ser que este fatal el código.
    un saludo;
    Fermg

Desdeel móvil no puedo mirarlo con detalle pero estoy debería de ser mayor o igual igitalRead(Boya_alto == HIGH) && (millis() - tiempo == 3000)

Ahora no puedo, pero a la noche lo probaré, solo una duda, ¿si pongo mayor o igual, no estará todo el rato entrando al bucle? esta es mi teoría; millis()-tiempo >= 3000 por ejemplo, cada vez que pase entrara sumara uno al contador y me encenderá una bomba no? es una pregunta puede que sea absurda si lo es lo sieno.

muchas gracias por responder.

Hola gente, ya está solucionado el problema era que no había configurado bien los pins porque había puesto >3 y tenía que ser <4 para que funcionase correctamente, con el tema del tiempo si lo pongo >= 3000 me pasa lo que yo creía que se encienden todas las bombas y eso no quiero y lo he dejado como estaba.

muchas gracias a todos

puede que funcione pero esta mal. Esto

 (millis() - tiempo == 3000)

solo se cumple durante 1 milisegundo. y si durante ese milisegundo no esta leyendo esta instrucción en concreto, pues no se ejecutara nunca.

revisalo.

Hola, tienes razón, lo voy a cambiar por millis()-tiempo>=3000 y nada más entrar en el bucle vuelvo a coger el tiempo para que después del tiempo fijado me entre otra bomba, lo probaré esta misma tarde porque ahora no estoy, muchas gracias.

un saludo

Fermg