hola, hace varios días llevo diseñando y programando un prototipo para ayudar con los respiradores del covid-19, el código consiste en: tener 3 pulsadores, uno de ellos se encarga de prender y apagar el sistema, el segundo de seleccionar la presión necesaria para cada paciente (niño, adulto, adulto mayor), el tercer pulsador cumple la función de velocidad (bajo, medio, alto) en donde necesito ayuda es para controlar el motor, ya que, necesito crear una intermitencia, ejemplo: al seleccionar la opción adulto necesito que funcione a la derecha 3s (ejemplo) y a la izquierda 3(s). Al utilizar delay() no me deja utilizar el pulsador para cambia de paciente (niño,adulto,adulto mayo) o de velocidades, me informe con un profesor que existe una función llamada millis() la cual he leído y visto varios vídeos pero no entiendo como se ocupara. Urgente, ya que es lo único que me faltaría para presentar proyecto en mi universidad
bool C,Y,W,M,S,R; // declaracion de lls flancos de subida
int boton_onoff=1, boton_e=2, boton_v=3; // declaracion de los botones de seleccion de etapas
int led_e0=13, led_e1=12, led_e2=11; // delcaracion de led de casa etapa seleccionada
int led_v0=10, led_v1=9, led_v2=8; // declaracion de los led de los tipos de velocidades
int contador_onoff=0, contador_v=0, contador_e =0;
void setup() {
Serial.begin(9600);
pinMode (boton_onoff,INPUT);//--------------------------------|
pinMode (boton_e,INPUT); //-----------------------------------|--- declaracion de tipos de entradas
pinMode (boton_v,INPUT); //-----------------------------------|
pinMode (led_e0,OUTPUT); //-----------------------------------|
pinMode (led_e1,OUTPUT); //-----------------------------------|--- declaracion de tipos de salida
pinMode (led_e2,OUTPUT); //-----------------------------------|
pinMode (led_v0,OUTPUT); //-----------------------------------|
pinMode (led_v1,OUTPUT); //-----------------------------------|--- declaracion de tipos de salida
pinMode (led_v2,OUTPUT); //-----------------------------------|
}
void loop() {
R=digitalRead(boton_v); // flanco de subida para el pulsador
if(R==LOW && W==HIGH)
{contador_v++;
delay(10);}
S=digitalRead(boton_e); // flanco de subida para el pulsador
if(S==LOW && Y==HIGH)
{contador_e ++;
delay(10);}
M=digitalRead(boton_onoff); // flanco de subida para el pulsador
if(M==LOW && C==HIGH)
{contador_onoff ++;
delay(10);}
if(contador_onoff==1){ //if para prendeer y apagar el motor
if(contador_e==0){ // if para controlar lasetapas del paciente (niño, adulto, adulto mayor)
//AQUI HIRIA LA INTERMITENCIA DEL MOTOR CONTOLANDOLO CON UN PUNTE H (TB6612FNG)
if(contador_v==0){
digitalWrite(led_e0,HIGH);
digitalWrite(led_e1,LOW);
digitalWrite(led_e2,LOW);
digitalWrite(led_v0,HIGH);
digitalWrite(led_v1,LOW);
digitalWrite(led_v2,LOW);
}
if(contador_v==1){
digitalWrite(led_e0,HIGH);
digitalWrite(led_e1,LOW);
digitalWrite(led_e2,LOW);
digitalWrite(led_v0,LOW);
digitalWrite(led_v1,HIGH);
digitalWrite(led_v2,LOW);
}
if(contador_v==2){
digitalWrite(led_e0,HIGH);
digitalWrite(led_e1,LOW);
digitalWrite(led_e2,LOW);
digitalWrite(led_v0,LOW);
digitalWrite(led_v1,LOW);
digitalWrite(led_v2,HIGH);
}
}
if(contador_e==1){
//AQUI HIRIA LA INTERMITENCIA DEL MOTOR CONTOLANDOLO CON UN PUNTE H (TB6612FNG)
if(contador_v==0){
digitalWrite(led_e0,LOW);
digitalWrite(led_e1,HIGH);
digitalWrite(led_e2,LOW);
digitalWrite(led_v0,HIGH);
digitalWrite(led_v1,LOW);
digitalWrite(led_v2,LOW);
}
if(contador_v==1){
digitalWrite(led_e0,LOW);
digitalWrite(led_e1,HIGH);
digitalWrite(led_e2,LOW);
digitalWrite(led_v0,LOW);
digitalWrite(led_v1,HIGH);
digitalWrite(led_v2,LOW);
}
if(contador_v==2){
digitalWrite(led_e0,LOW);
digitalWrite(led_e1,HIGH);
digitalWrite(led_e2,LOW);
digitalWrite(led_v0,LOW);
digitalWrite(led_v1,LOW);
digitalWrite(led_v2,HIGH);
}
}
if(contador_e==2){
//AQUI HIRIA LA INTERMITENCIA DEL MOTOR CONTOLANDOLO CON UN PUNTE H (TB6612FNG)
if(contador_v==0){
digitalWrite(led_e0,LOW);
digitalWrite(led_e1,LOW);
digitalWrite(led_e2,HIGH);
digitalWrite(led_v0,HIGH);
digitalWrite(led_v1,LOW);
digitalWrite(led_v2,LOW);
}
if(contador_v==1){
digitalWrite(led_e0,LOW);
digitalWrite(led_e1,LOW);
digitalWrite(led_e2,HIGH);
digitalWrite(led_v0,LOW);
digitalWrite(led_v1,HIGH);
digitalWrite(led_v2,LOW);
}
if(contador_v==2){
digitalWrite(led_e0,LOW);
digitalWrite(led_e1,LOW);
digitalWrite(led_e2,HIGH);
digitalWrite(led_v0,LOW);
digitalWrite(led_v1,LOW);
digitalWrite(led_v2,HIGH);
}
}
}
if (contador_onoff==0){
digitalWrite(led_e0,LOW);
digitalWrite(led_e1,LOW);
digitalWrite(led_e2,LOW);
digitalWrite(led_v0,LOW);
digitalWrite(led_v1,LOW);
digitalWrite(led_v2,LOW);
}
if (contador_onoff>1){
contador_onoff = 0; }
if (contador_e>2){
contador_e = 0; }
if (contador_v>2){
contador_v = 0; }
Serial.print(contador_v);
// Serial.println("\t");
Serial.print(contador_onoff);
// Serial.println("\t");
Serial.print(contador_e);
Serial.println("\t");
C=M;
Y=S;
W=R;
}