Pulsador para dar una orden

Hola amigos, estoy con mi proyecto super sencillo pero me resulta imposible.
Necesito hacer una ducha con una bomba de agua de 12v que cuando pulso un boton esta se encienda por 30segundos y despues se apague esperando a que se vuelva a pulsar el boton.

Dispongo de

  • un boton pulsador de dos patas para cerrar el circuito,
  • un arduino uno
  • cables de conexionado
  • protoboard.
  • 1 mosfest (transistor)

Mi idea es que al cerrar un circuito, la arduino interprete que hay que hacer una orden que será la de cerrar un circuito 30 segundos para que la bomba eche a andar ese tiempo sin estár presionando diario el boton y luego pare.

Me imagino que esto será muy facil pero soy nuevo en esto. He visto muchos tutoriales de botones en internet pero esplican todo pero no de esta manera que quiero yo.

Os agradeceria mucho si me ayudarais con el codigo y el montaje, Sobre todo con el codigo

Muchas gracias

  • Durante esos 30 segundos el Arduino tiene que realizar algo más?
  • Por qué no intentas hacer el código? Para tu aplicación, creo que hasta un principiante podría... :smiley:

jeje . estoy en ello.

En realidad no hace mas nada. El tema es que quiero hacer una ducha para campismo con una mini bomba de agua y así con una botella de 8 litros poder rendir el agua. es decir. 30 seg me mojo, me enjabono bien y otros 30 segundos me aclaro. :grinning:

Estoy intentando hacer el codigo pero no me aclaro para empezar. haber si le doy trazo hoy a la tarde jeje.

Muchas gracias por contestar. Una pista?? jeje

Su tu idea es solo para la función de 30 segundos, la opción apropiada no es arduino sino un pequeño circuito electrónico con un 555 muy sencillo y económico con un timer de 30 segundos.

Por otro lado, si tu idea es para aprender Arduino entonces debes comenzar por hacer algo de código y mostrarlo para ayudarte. PISTA: Función "Delay()"

Saludos

El código lo tienes hecho en los ejemplos del IDE de Arduino.

Ejemplos->Digital->Button

Se enciende un LED (bomba de agua)

Solo tienes que añadir un delay para 30'' y listo

SI el ejemplo que dices me vale pero no entiendo en donde poner el boton, el caso es que el boton no se como lo tengo que conectar, es decir un lado a el pin 2 y el otro??

Pongo el codigo:

const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 13; // the number of the LED pin

// variables will change:
int buttonState = 0; // variable for reading the pushbutton status

void setup() {
Serial.begin (9600);
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}

void loop() {
Serial.println(ledPin);
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}

bruswilis:
SI el ejemplo que dices me vale pero no entiendo en donde poner el boton, el caso es que el boton no se como lo tengo que conectar, es decir un lado a el pin 2 y el otro??

Ahora que veo que haces el esfuerzo, te voy a ayudar. Que tal este código:

const byte boton = 2;
const byte bomba = 13;

void setup() {
    pinMode(boton, INPUT);
    pinMode(bomba, OUTPUT);
}

void loop() {
    if (digitalRead(boton) == HIGH) {
    digitalWrite(bomba, HIGH);
    delay(30000); // Mientras esté atascado en esta parte, no se puede hacer nada más al mismo tiempo
    digitalWrite(bomba, LOW);
    }
}

bruswillis, ves como Lucario posteó el código, bueno, ve a las Normas del foro y mira como se usan los tags (</>) luego vuelve y edita lo que posteaste tu, al simplemente pegar el código.