⚡ Descuentos en cursos en video - Lleva tu aprendizaje técnico al siguiente nivel y aprovecha precios especiales antes de que termine la oferta. 🔥 Aprovechar oferta ahora 🔥
Arduino

Problema con codigo arduino

electorcar45.5VAC
hace 6 años
hace 6 años
Buenas tardes estimados  colegas del foro tengo unos problemas con.este codigo en la plataforma arduino y el primer problema  es que hay que oprimir los dos botones al mismo tiempo para que se ejecute el programa y tambien hay que insistirle bastante a los botones para iniciar el programa y el segundo problema es que queda continuo y no se detiene cuando tiene que repetirse dos veces y parar y ya le.hecho cambios y no me funciono aqui  el codigo  int motor={2,3}; int v1=4,v2=5,cent=6,bomba=7,bot_ini=8,pres=9,cont=0; bool a=0; void contador(){ if(bot_ini!=digitalRead(8)){ bot_ini=!bot_ini; if(bot_ini==HIGH ){ delay(250); cont++; } } } void llenar(){ if(cont==1){ a=1; } if(a==1){ digitalWrite(v1,HIGH); digitalWrite(v2,HIGH); } } void lavar(){ pres=digitalRead(9); if(pres==HIGH){ digitalWrite(v1,LOW); digitalwrite(v2,LOW); for(int a=0; a<2;a++){ for(int a1=0;a1<=1;a1++){ digitalWrite(motor[a1],HIGH); delay(1000); digitalWrite(motor[a1],LOW); } for(int a1=1;a1>0;a1--){ digitalWrite(motor[a1],HIGH); delay(1000); digitalWrite(motor[a1],LOW); } } drenar(); centripetar(); } void centripetar(){ digitalWrite(cent,HIGH); delay(1000); digitalWrite(bomba,LOW); digitalWrite(cent,LOW); } void drenar(){ digitalWrite(bomba,HIGH); delay(1000); } void repetir(){ bool inicio=1; if (inicio==1){ for(int g=1;g<2;g++){ llenar(); lavar(); a=0; } inicio=0; cont=0; } } void loop(){ contador(); if(cont==1){ repetir(); } } la variable pres no cambia de estado el programa hace las funciones basicas de una lavadora llenar, drenar, centrifugar etc simulo el presostato con un pulsador la idea es que primero se oprima el boton de inicio(bot_ini) y despues el presostato simulado(pres) y que todo se haga dos veces, en el setup todo se configuró  como entradas  y salidas digitales normales.
Jorgeal
Jorgeal
399
hace 6 años

sugiero que definas a bot_ini como bool, porque lo has definido como int y les has asignado valor 8 no se porque, y luego haces comparacion logica, y si alguno de los bits de la variable es 1 siempre te va a dar TRUE. para que te de false todos deben ser 0. Lo unico raro que veo por ahora.

Responder
electorcar45.5VAC
hace 6 años

Aqui anexo el set up
void setup(){
for(int q=0;q<=1;q++){
pinMode(motor[q],OUTPUT );
}
pinMode(v1,OUTPUT );
pinMode(v2,OUTPUT );
pinMode(cent,OUTPUT );
pinMode(bomba,OUTPUT );
pinMode(bot_ini,INPUT);
pinMode(pres,INPUT);
}
No creo q definir bot_ini como tipo entero sea el problema lo defini así para que quedara como entrada digital normal.
Los problemas son los que ya mencione con anterioridad

Responder
electorcar45.5VAC
hace 6 años

Creo que el error fue preguntar dos veces por elcontador

Responder
Jorgeal
Jorgeal
399
hace 6 años

No es una buena politica utilizar variables para definir los puertos, si querés darle identidad a cada port lo ideal es hacerlo utilizando constantes. En teoria parece que todo esta bien, pero uno no sabe después que es lo que hace el compilador internamente cuando convierte el código en lenguaje de maquina. Porque encima seguis utilzando esa variable en el programa.

Responder
electorcar45.5VAC
hace 6 años

Entonces que debo hacer

Responder
electorcar45.5VAC
hace 6 años

Y como hago para que todo el programa se repita solodos veces

Responder
electorcar45.5VAC
hace 6 años

Necesito ayuda por favor

Responder

¿Conoces una solución?

¡Aprende a reparar con estos cursos YoReparo!

4.93
(14)

Curso Reparación de Equipos de Audio de Alta Fidelidad

Maximiliano Resch
$ 60 USD
$ 20 USD
4.84
(25)

Curso Práctico de Reparación y Bobinado de Motores Eléctricos

Héctor Castiñeira
$ 60 USD
$ 20 USD
4.94
(16)

Curso Refrigeración Comercial Aplicado a Diagnóstico y Reparación

Ing. Georga Melgarejo
$ 40 USD
$ 13 USD
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos?
Regístrate gratis