Arduino Forum upgrade scheduled for Monday, October 20th, 11am-4pm (CEST). Sorry for the inconvenience!
Pages: [1]   Go Down
Author Topic: ayuda programar bombeo [solucionado]  (Read 797 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Quote
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
  }
}

muchas gracias a todos, puede ser que este fatal el código.

un saludo;

Fermg
« Last Edit: August 05, 2013, 02:25:00 pm by fermg » Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1414
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1414
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

puede que funcione pero esta mal. Esto

Code:
(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.
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1]   Go Up
Arduino Forum upgrade scheduled for Monday, October 20th, 11am-4pm (CEST). Sorry for the inconvenience!
Jump to: