No encuentro la manera de programar un código para que me haga la siguiente función
-Dependiendo de lo que yo escriba en el monitor serie me ejecute un bloque u otro pero constantemente.
Por ejemplo si pongo 'rojo' me lea el valor de un potenciómetro y regule la salida a un led rojo que tengo puesto a una salida pwm y me lo regule constantemente hasta que yo ponga en el monitor serie "ok"
Si pongo en el monitor serie una "g" me haga lo mismo pero a otra salida a la que tengo un led verde y así con otras salidas
Gracias un saludo
funcion leer rojo {tal y cual}
función leer g {cual y pascual}
setup {todo preparado}
loop { if ¿debo leer rojo?
SIIII
llamar funcion leer rojo
nooooooo
¿y debo leer la g?
SIIII
llamar a la otra funcion
NOOOO
No hacer nada
No necesitas un loop para cada color, la salida pwm va a mantenerse hasta que le cambies el valor.
O sea, en el loop lees el comando, lees el potenciómetro correspondiente, seteas el pwm, y vuelves al loop para esperar otro comando (ya sea encender otro color o apagar el que ya encendiste, por ej.).
Saludos
Para que te ejecute constantemente prueba con:
While(1)//esto hace que se repita indefinidamente hasta que aparezca un break
{
if(color==rojo)// si el color es rojo ejecuta lo que hay aqui
{
leer potenciometro
mapear la lectura analogica
encender led por pwm
if(leerdato=="ok"){
break;
}
}
if (color=="g"){
//se repite lo mismo de arriba pero con otra entrada analogica
}
}
He puesto lo del While(1), ya se que se comporta como un loop es porque como dices de tener varios bucles, será llamando a otras funciones y la forma de que esa función se comporte como un bucle es mediante el While(1) o While(color=="g") o lo que sea.
Dentro de la función Loop(), puedes llamar a otras funciones como por ejemplo una función que se encargue de leer el puerto serie, otra función que lea por el pin analógico o lo que quieras.
A mi en particular no me gusta tener todo el código en la función Loop(), solo tengo el mínimo código imprescindible ahi dentro.
Creo que lo que buscas es lo que te he puesto, mas o menos creo que se entiende. No parece dificil de realizar lo que quieres hacer.
Moderador
Hola @emvbot, por favor edita tu post usando etiquetas de código.
Normas del foro
@emvbot
Usar while(1) es repetir lo que hace loop() en arduino que es exactamente lo mismo.
a jmg23 le digo.
En arduino no es lo mismo enviar un comando como r, g, o que esperar "rojo", "ok".
"rojo" y "ok" son cadenas de caracteres. r g y o son solo caracteres.
Es muy fácil crear un código que responda a r, g y o y lleva algo mas de trabajo hacerlo con cadenas.
En Documentación hay tutoriales al respecto. Ve, consúltalos y luego nos compartes las dudas.
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.