Go Down

Topic: encender y apagar 3 leds con pulsadores reducir y aumentar intensidad (Read 195 times) previous topic - next topic

sebaoka

Hola Buen día estimados:

Tengo la siguiente inquietud y quisiera saber si podrían ayudarme un poco. El siguiente código que estoy desarrollando permite el apagado y encendido de 3 leds con un tiempo de parpadeo de 500 ms utilizando 2 pulsadores. Bueno eso me genera una señal de ancho de pulso con un ciclo de trabajo del 50% pero lo que quiero ahora es que con otros dos pulsadores incremente y decremente ese ancho de pulso, ( +5%, -5%), con eso van a disminuir la intensidad de los leds. Me podrian ayudar porfavor.

Code: [Select]


int boton1 = 8; //le asigna la variable boton1 a el pin 8
int boton2 = 7;//le asigna la variable boton2 a el pin 7
int led1 = 2;//le asigna la variable led1 a el pin 2
int led2 = 3;//le asigna la variable led2 a el pin 3
int led3 = 4;//le asigna la variable led3 a el pin4
bool flag=false; //variable booleana falsa     
int ledState = LOW;  // VARIABLE LEDSTATE USADO PARA CONFIGURAR EL LED
unsigned long previousMillis = 0; //ALMACENARÁ LA ULTIMA VEZ QUE SE ACTUALIZO EL LED
const long interval = 500;  //INTERVALO EN EL CUAL PARPADEAR (MILISEGUNDOS) NO CAMBIA

void setup() {

  pinMode(boton1,INPUT);//CONFIGURAR EL PULSADOR 1 COMO ENTRAADA
  pinMode(boton2,INPUT);//CONFIGURAR EL PULSADOR 2 COMO ENTRADA
  pinMode(led1,OUTPUT);//CONFIGURAR EL LED 1 COMO SALIDA
  pinMode(led2,OUTPUT);//CONFIGURAR EL LED 2 COMO SALIDA
  pinMode(led3,OUTPUT);//CONFIGURAR EL LED 3 COMO SALIDA
}



void loop() {

 unsigned long currentMillis = millis(); //
 
  int estado=digitalRead(boton1);//  Variable estado con la lectura del boton 1 (parada)
  int estado2=digitalRead(boton2);// variable  estado 2 con la lectura del boton 2 (inicio)


if (estado==LOW) // si la lectura del boton 1 es LOW es decir el boton fue presionado
     flag=true;  //la variable flag es verdadera

if (estado2 == LOW) // si la lectura del boton 2 es de LOW es decir fue presionado
     flag=false;  // la variable booleana flag es falsa

if(flag){   // es lo mismo que if(flag==true)
if (currentMillis - previousMillis >= interval) {
    // guarda la ultima vez que parpadeo el led
    previousMillis = currentMillis;

    // SI EL LED SE APAGA QUE SE ENCIENDA Y VICEVERSA:
    if (ledState == LOW) {
      ledState = HIGH;
    } else {
      ledState = LOW;
    }

    // ESTABLECE EL LED CON EL LEDSTATE DE LA VARIABLE:
    digitalWrite(led1, ledState);
    digitalWrite(led2, ledState);
    digitalWrite(led3, ledState);
  }
}
 

 if(!flag){      // es lo mismo que if(flag==false)
  digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
 
}
}






surbyte


sebaoka

si, forma parte de este programa donde me ayudaron con la primera parte. Pero ahora le quiero agregar 2 pulsadores para incrementar y disminuir la intensidad de los led. Lo que pasa es que estoy haciendo una señal PWM pero usando pines digitales donde estan los led. El proposito es controlar un motor de 30 [V] continua excitación independiente donde primero le implementaré una etapa de potencia con un mosfet IRF 520 y asi regular su velocidad. Pero lo que no entiendo es como puedo hacer al pulsar un pulsador 3 incrementar una variable y asi por ejemplo que aumente la velocidad del motor. (estoy usando los led para ver el periodo del parpadeo y tambien para poder ver si baja o sube la intensidad). En la primera parte del programa tuve problemas con el delay pero lo solucioné usando millis () que fué lo que me recomendaron.

Go Up