Arduino - Interruptor con potenciometro

Enunciado del problema

Se trata de realizar un proyecto donde al menos se usen 3 de las 4 posibilidades de entrada/salida, es decir 3 de los tipos de entradas/salidas digitales/analógicas.

Montaje

Para resolver el ejercicio planteado, se ha utilizado un arduino UNO, un led, un pulsador y un potenciómetro. El objetivo es cambiar el estado del led (encendido/apagado) cada vez que se presiona el pulsador. El potenciómetro servirá para graduar la potencia con la que luce el led.

El led está conectado al pin 11 como una salida analógica a través de una resistencia, mientras que el pulsador están conectado al pin 2 como una entrada digital (también se hace uso de una resistencia, tal como se indica en los esquemas del curso). Finalmente, el potenciómetro fue conectado a la entrada analógica A0.

Software desarrollado

En el software desarrollado se realiza la declaración de cuatro variables:

    • pinLed: pin donde se conecta el led.

    • PinPulsador: pin donde se conecta el pulsador que variará el estado del led anterior.

    • PinPotenciometro: variable analógica donde estará conectado el potenciómetro y con el que se graduará la potencia con la que lucirá el led.

    • Iestado: representa si el led está encendido o apagado. Aunque se podría hacer una lectura digital del led, creo que el uso de esta variable hace más legible el código.

En la función setup() se realiza la siguiente configuración:

    • El pulsador como entrada digital

    • El led como salida analógica, para poder graduar la potencia con la que luce.

    • El potenciómetro como entrada analógica.

En la función loop() siempre se repite el mismo proceso:

    1. si se ha pulsado el botón y el estado es apagado:

        1. 1 se enciende el led con la potencia que determine el potenciómetro. Aquí es importante recalcar que el valor de lectura del potenciómetro está comprendido entre 0 y 1023. Por otro lado, el led funcionando como variable analógica de salida admite valores en el intervalo 0-255. Por esta razón, el valor de lectura del potenciómetro debe ser dividido por 4, para poder adaptarlo al rango admitido por el led.

    2. En caso contrario se apaga el led.

Código fuente

/* Montaje con un pulsador, un led y un potenciometro. Cada vez que se presiona el pulsador se cambia el estado del led. Si estaba encendido se apaga. Por el contrario, si estaba apagado se enciende. Con el potenciometro se puede regular el grado de iluminacion del led */

int pinLed = 11; //Led conectado en el pin 11 (analogico) int pinPulsador = 2; //pulsador conectado en el pin 2 (digital) int pinPotenciometro = A0; //analogico int iestado = 0; //0 representa led apagado, 1 encendido void setup() {

//configuracion de los pines como entradas o salidas //en este caso, pulsador como entrada: recogemos informacion //led como salida //potenciometro como entrada analogica pinMode(pinPulsador, INPUT); pinMode(pinPotenciometro, INPUT); pinMode(pinLed, OUTPUT); } void loop() { //proceso que se repite continuamente //comprobamos si se ha presionado el boton

if (digitalRead(pinPulsador) == HIGH){ //si se ha presionado el pulsador cambiamos el estado //comprobacion del estado actual if (iestado == 0){ //se enciende analogWrite(pinLed, analogRead(pinPotenciometro)/4);

//el potenciometro ofrece un valor entre 0 y 1023 //el led como salida analogica contempla los valores de 0 a 255 //esta es la razon por la que la lectura se divide entre cuatro iestado = 1; //cambio de estado a encendido

}else{

//en caso contrario, se apaga analogWrite(pinLed, LOW); iestado = 0; //cambio de estado a encendido }//fin else }//fin if

//delay de 250 ms para que de tiempo a realizar las lecturas correctamente delay(250); }//fin loop()