Arduino: práctica nº 2: Control mediante pulsadores

Arduino: práctica nº 2: Control mediante pulsadores- Arduino, Electrónica
1.9/5 - (181 votos)

Bien en esta segunda práctica usaremos unos pulsadores para controlar el encendido de un diodo LED; ¿cómo conectamos un pulsador? Usaremos un divisor de tensión, como se aprecia en la figura, con una resistencia en Pull-down, de forma que cuando pulsemos la entrada digital tome el valor alto.

Declaramos el pin como entrada y usamos la función DigitalRead() para leer el valor de dicha entrada.

control-_pulsadores_arduino

Se proponen tres ejercicios diferentes,

1. Este es el más sencillo, al accionar el pulsador enciendo un diodo LED, al soltar se apaga:

int buttonPin = 2;
int ledPin = 13;

int estado = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}

void loop(){
estado = digitalRead(buttonPin);

if (estado == HIGH) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
}

2. Ahora con dos pulsadores, al accionar el pulsador 1, enciende el Diodo, al accionar el pulsador 2, apaga el diodo.

int ledPin = 13;
int inputPin1 = 2; // pulsador 1
int inputPin2 = 3; // pulsador 2
int p1;
int p2;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
}

void loop(){
p1=digitalRead(inputPin1);
p2=digitalRead(inputPin2);
if (p1 == HIGH) {
digitalWrite(ledPin, HIGH);
} else if (p2 == HIGH) {
digitalWrite(ledPin, LOW);
}
}

3. Ahora usamos los pulsadores para iluminar más o atenuar la luz del led, para ello debemos cambiar la conexión del Led al pin 9, que usa la salida PWM, modulación por ancho de pulso, como si de una salida analógica se tratara.

int ledPin = 9;
int inputPin1 = 2; // pulsador 1
int inputPin2 = 3; // pulsador 2
int p1;
int p2;
int value = 0;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
}
void loop(){

p1=digitalRead(inputPin1);
p2=digitalRead(inputPin2);
if (p1 == HIGH) { value--; }
else if (p2 == HIGH) { value++; }
value = constrain(value, 0, 255);
analogWrite(ledPin, value);
delay(10);
}

15 comentarios en «Arduino: práctica nº 2: Control mediante pulsadores»

  1. Hacer un programa en Arduino utilizando estructuras de repetición que permita encender 5 leds en secuencia de 1 segundo utilizando 4 botones. El primer botón será para iniciar la secuencia, el segundo botón será para reducir la velocidad de la secuencia, el tercer botón es para aumentar la velocidad y el último botón es para detener la secuencia.

  2. hola buenas tardes como le hago para hacer cambio de direccion de luz ya se tiene uno pero no veo como activar el otro debo activar con un push a la derecha y otro push a la izquierda

    se tiene este codigo
    const int buttonPin = 2;
    const int ledPin = 8;
    int buttonState = 0;

    void setup() {
    pinMode(ledPin, OUTPUT);
    pinMode(buttonPin, INPUT);
    }

    void loop() {
    buttonState = digitalRead(buttonPin);

    if (buttonState == HIGH) {
    for (int x = 0; x < 15; x++) {
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    delay(500);
    }
    }
    }

  3. DANNY BUENOS DIAS, NECESITO ENCENDER UN LED CON VARIOS PULSADORES SOLO 4 Y CADAS PULSADOR LO CONTROLE A DIFERENTES FRECUENCIAS 1Hz (1.000 milseg), 2hZ (500 milseg) 3Hz (333,3 milseg) y 4Hz (250 milseg) POR AHORA LO CONTROLO CON UN SOLO PULSADOR
    ASI:

    //const int pulsador1 = 2;
    const int led1 = 3;

    //int valorpulsador1 = 0;
    void setup()
    {
    // pinMode (pildador1, INPUT);
    }

    void loop()
    {
    digitalWrite(led1, HIGH);
    delay(500);
    digitalWrite(led1, LOW);
    delay(500);
    }

    GRACIAS

  4. Haga un proyecto con 2 pulsadores P1 y P2 y 3 LEDs, led1, led2 y led3, si presiona
    P1 este hace que se encienda el LED1 durante 1s luego este se apaga, si presiona P2,
    este hace que el LED2 se encienda durante 1s y luego se apague, si presiona P1y P2
    al mismo tiempo, el LD3 parpadea 5 veces con una pausa de 300ms, luego permanece
    apagado.

    1. #include

      //*3. Haga un proyecto con 2 pulsadores P1 y P2 y 3 LEDs, led1, led2 y led3, si presiona
      //P1 este hace que se encienda el LED1 durante 1s luego este se apaga, si presiona P2,
      //este hace que el LED2 se encienda durante 1s y luego se apague, si presiona P1y P2
      //al mismo tiempo, el LD3 parpadea 5 veces con una pausa de 300ms, luego permanece
      //apagado.*/
      int contar = 0;
      int L0 = 0;
      int L1 = 1;
      int L2 = 2;
      int p1;
      int p2;
      void setup() {

      pinMode(13, INPUT); //comportamiento de ENTRADA digital
      pinMode(12, INPUT); //comportamiento de ENTRADA digital
      pinMode(L0, OUTPUT);
      pinMode(L1, OUTPUT);
      pinMode(L2, OUTPUT);
      }
      void loop() {
      p1 = digitalRead(13);
      p2 = digitalRead(12);

      if (p1 == LOW && p2 == HIGH)

      {

      digitalWrite (L0, HIGH);
      delay(1000); //transforme los valores decimales a binarios
      digitalWrite (L0, LOW);

      }
      else if (p1 == HIGH && p2 == LOW )

      {

      digitalWrite(L1, HIGH);
      delay(1000);
      digitalWrite(L1, LOW);

      }
      else if (p1 == LOW && p2 == LOW)
      {
      do
      {
      digitalWrite(L2, HIGH);
      delay(300);
      digitalWrite(L2, LOW);
      delay(300);
      contar++;
      } while (contar <= 4);
      contar = 0;
      }
      }

  5. buenas tardes ojala me puedas ayudar, necesito activar un botón y encender un led y este se apague después de un segundo (o el tiempo que yo le ponga) aunque el botón siga activado, ya después que el botón se desactive se vuelva a cumplir la condición activando nuevamente el botón, le agradeceré mucho su apoyo, gracias

    1. no, para eso necesitas variar frecuencias. no modular anchos de pulso.
      ocupas un variador de frecuencia y una placa de control para el variador,

  6. Disculpen como hago pa controlar un led con un pulsador pero que este al pulsar se quede prendido y al dar otro pulso se apage en tiempo indefinifoo hasta ke se le pulse de nuevo para que se prenda de nuevo

    1. /*============================================================================================*/
      int estado=0;
      int estadoAnterior=0;
      int salida=0;
      #define LED 4
      #define BOTON 8
      #define LEDint 13
      const int ANTIreb=60;
      /*============================================================================================*/

      void setup() {
      pinMode(LEDint, OUTPUT);
      pinMode(BOTON, INPUT);
      pinMode(LED, OUTPUT);
      }

      void loop() {
      digitalWrite(LEDint, LOW);
      estado = digitalRead(BOTON);

      if((estado == HIGH) && (estadoAnterior == LOW)) {
      salida = 1 – salida;
      delay(ANTIreb);
      }

      estadoAnterior = estado;

      if(salida == 1) {
      digitalWrite(LED, HIGH);
      }
      else{
      digitalWrite(LED, LOW);
      }
      }

      mismo circuito solo eliminas un boton, su alimentacion 5vcc, su cable de señal y su resistencia

    2. /*============================================================================================*/
      int estado=0;
      int estadoAnterior=0;
      int salida=0;
      #define LED 4
      #define BOTON 8
      #define LEDint 13
      const int ANTIreb=60;
      /*============================================================================================*/

      void setup() {
      pinMode(LEDint, OUTPUT);
      pinMode(BOTON, INPUT);
      pinMode(LED, OUTPUT);
      }

      void loop() {
      digitalWrite(LEDint, LOW);
      estado = digitalRead(BOTON);

      if((estado == HIGH) && (estadoAnterior == LOW)) {
      salida = 1 – salida;
      delay(ANTIreb);
      }

      estadoAnterior = estado;

      if(salida == 1) {
      digitalWrite(LED, HIGH);
      }
      else{
      digitalWrite(LED, LOW);
      }
      }

Deja un comentario