• Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

Ayuda con do y while

Ayuda con do y while Publicado por MANUEL

Posted 6 años 3 semanas antes #1402
Por Dios un alma caritativa que me ayude con estas dos instrucciones, que tengo un lio del quince, o soy tela de cortito.
Bueno lo que quiero es que en un programa cuando pulse un boton el sistema entre en pausa, es decir que si esta moviendo un motor este se pare, y si de nuevo lo pulso el sistema se ponga en funcionamiento.
en el void setup he puesto los siguiente jejejejejej "while (digitalRead(Boton)==0);" bueno pues hace su función, ya que lo que quería era que al alimentar el sistema este no echar a andar hasta que no pulsara el boton, vale hasta que no lo pulso no salta al void loop jejejejjeejej pero sigo sin entenderla ya que cuando el boton no se pulsa manda un 0 cuando se pulsa un 1. en fin
y ya no te cuento con el "do.... while" tengo uno para ese trozo de programa donde se pausa el sistema, hasta que vuelvo a pulsarlo,
funciona bien, a base de ensayo y error, pero en el fondo no sé por qué va.
Code:
int LED_AZUL = 4; int LED_ROJO = 5; int BOTON = 6; int buzzer = 11; void setup() { pinMode (LED_AZUL,OUTPUT); pinMode (LED_ROJO,OUTPUT); pinMode (BOTON,INPUT); pinMode(buzzer, OUTPUT); while (digitalRead(BOTON)== 0); // MIENTROAS SE CUMPLA QUE BOTON ES 0 NO ALE DE AQUI delay (500); } void loop() { //while (digitalRead(BOTON)== 1); digitalWrite(buzzer, LOW); digitalWrite(LED_ROJO, LOW); digitalWrite(LED_AZUL, HIGH); if (digitalRead(BOTON)== 1) //delay (2000); encender_LED (); } void encender_LED () { do{ digitalWrite(LED_AZUL, LOW); digitalWrite(LED_ROJO, HIGH); analogWrite(buzzer,20); //emite sonido //delay(2000); //espera medio segundo //digitalWrite(buzzer, LOW); //deja de emitir //delay(500);//espera medio segundo } while (digitalRead(BOTON)== 1 && digitalRead(LED_AZUL)== LOW); delay (300); while (digitalRead(BOTON)== 0 && digitalRead(LED_AZUL)== LOW); delay (300); }
Last Edit:6 años 3 semanas antes Post by MANUEL
Última Edición: 6 años 3 semanas antes por MANUEL.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Respuesta de Raúl Diosdado sobre el tema Ayuda con do y while

Posted 5 años 8 meses antes #1552
Esto es mas sencillo de lo que parece, lo has complicado metiendo el do while, lo que necesitas es un botón con enclavamiento, es decir un botón que al pulsarlo se quede abierto o cerrado. Esto se puede hacer comprando un boton que fisicamente tenga el enclavamiento o programando el enclavamiento, para esto necesitas una variable que almacene el estado del boton y tu motor estará encendido o apagado dependiendo de ese estado.
Code:
#define LED 10 #define boton 2 boolean estado = 0; //estado del motor (0 apagado - 1 encendido) void setup() { pinMode (MOTOR,OUTPUT); pinMode(boton,INPUT); } void loop() { int p1 = digitalRead(boton); if(p1) //Si detecta pulsación entra { estado = !estado; //cambiamos el estado del motor delay(300); } digitalWrite(MOTOR,estado); }

Con este código te vale para tu proyecto
Post by Raúl Diosdado

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Tiempo de carga de la página: 1.682 segundos