Bienvenido, Invitado
Nombre de Usuario: Contraseña: Recordarme

TEMA:

Nivel de Agua con Arduino y MPX5010 Ayuda 3 años 9 meses antes #182

Bien, si el tema del millis se te complica, peirmero haz un programa funcional y luego ya pondrmeos millis().
Vuelve un paso atras, ol vidate de millis y haz un bucle aqui :
     tone(buzzer, 300);
      delay(300);
      noTone(buzzer);


Este trozo de codifo tarda unos 300 milisegundos en realizarse (despreciamos los dos comandos que añadiria algun miscrosegundo), sabiendo eso sabes que cada 10 ciclos tienes 3 segundos de bocina.
El for se debe activar una vez y luego no volver a sonar hasta que haya bajado de nuevo del 5%m es decir has de poner una variable booleana (que y le lamo flag ) que has de cambiar el estado con el for, para que no se repita mientras no subas del 5%, y al subir del 5% has de volver a ambiar el estado, para que al volver a bajar se pueda volver a sonar la alarma. Vamos es algo parecido a lo que te hice con el otro flag.

Yo ahora voy para cama que me levante a las 4 y 45 de la mañana para acercarme al trabajo, si no lo arreglas mañana te echo una mano.

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

Nivel de Agua con Arduino y MPX5010 Ayuda 3 años 9 meses antes #183

Creo que ya deberias haber recibido un mensaje privado mio. Habia unos problemillas y creo que los resolvi esta tarde, con lo que si lees tus mensajes privados deberia aparecer uno mio.

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

Nivel de Agua con Arduino y MPX5010 Ayuda 3 años 9 meses antes #184

No encuentro la logica para este codigo Jose Luis, no se si es que pienso de forma incorrecta o no se.
Se que la función for no es mas que esto:
for (variable índice; condición; incrementador)
{
// comandos
}
Me he leído como 50 veces la logica que me has escrito para hacer esta función, pero soy incapaz de hacer el FOR. Me queda mucho
que aprender aun.

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

Nivel de Agua con Arduino y MPX5010 Ayuda 3 años 9 meses antes #185

Hoy tengo que pasarme por la empresa aunque no hacemos nada, ayer te iba a hacer el programita pero nos han cortado el internet, pero tengo ahora unos minutillos y te comento :

Efectivamente es como dices :
if (flagcontrolsonido) {
for (int conta=0; cota++;conta<numeroRepeticiones) {   // Creas un contador y se repite mientras sea menor que numeroRepeticiones.
 tone(buzzer, 300);
  delay(300);
  noTone(buzzer);
 }
flagcontrolSonido= false;
}

Tienes que tener referenciadas las variables numeroRepeticiones, que si quieres que suene 6 segundos tendira que tener el valor 20 (aproximadamente) y crear la variable booleana flagcontrolsonido con valor true. Tambien cuando el % es superior a 5% has de ponerla de nuevo en True.

Con eso funcionaria, ahora has de ponerlo en el codigo en la parte que corresponde (dendro del if del otro flag).

Estoy escribiendo todo de memoria, a lo mejor hay algun fallito, pero asi practicas si al compilar te da algun error tonto.

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

Nivel de Agua con Arduino y MPX5010 Ayuda 3 años 9 meses antes #186

Asín da gusto aprender Jose Luis.
Lo hice con el bucle "for" tal cual me explicaste y funciona correctamente, pero surge un problema que era de esperar usando delay, y es que el
sistema se queda totalmente parado hasta que no termina el delay, en principio no importa, pero como quiero seguir con este proyecto ampliando
mas cosas seria un problema.
Así que teniendo ya claro como funciona FOR y como implantar las variables booleanas, lo he echo con millis , que como me dijiste
seria la mejor forma de hacerlo y funciona perfecto.
Dejo aquí los dos códigos para aquellos que quieran aprender esto.

Ahora voy a intentar hacer lo siguiente, un auto ajuste del deposito:

1º- Un botón desde la pantalla que nos lleva al menu de ajuste del deposito

2º- Medimos con el deposito vació para saber lo que el sensor esta midiendo en vació, que nunca es cero, en mi caso 36 y
con una variable lo pondremos en donde pone 36 y lo guardaremos en memoria con un botón de aceptar en la pantalla.

valorsensor = analogRead(sensor) - 36; // Restamos 36 por que es lo que el sonsor mide en vacio y conseguimos que mida 0.

3º- Llenar el deposito al máximo y ver cuanto mide el sensor y hacer lo mismo con otra variable y guardarlo en memoria, seria
donde pone 180 en esta linea del código:

porcentaje = map (valorsensor, 0, 180, 0, 100); // Mapeamos para pasar las medidas a porcentaje de 0 a 100%

Me pondré a ello haber si soy capaz de hacerlo.
Adjuntos:

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

Nivel de Agua con Arduino y MPX5010 Ayuda 3 años 9 meses antes #191

Tienes razon en el tema del delay, pero si haces con millis() no me metas un for para repetir el bucle, hazlo todo con millis().

Luego viendo tu codigo me he quedao flipao. Esta linea es la primera vez que la veo programar asi :

if ( flagTanque1, flagcontrolsonido)

Y dices que funciona el codigo? Psssssssssssssss, flipao me quedo.
Yo no lo haria asi, pero si te funciona, pues guay,

Y las modificaciones que quieres hacer, acuertade de guardar en eeprom los valores que te de el sensor en la calibracion, asi cuando reseteees o se te vaya la tension en el arduino, no tendras que recalibrar todo el sistema.

Cuando tengas mas cosas hechas quiero verlas eh.

:D

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

Última Edición: por Jose Luis.
Tiempo de carga de la página: 0.140 segundos
Gracias a Foro Kunena