7.5 Reto A05. El potenciómetro

Un potenciómetro es una resistencia cuyo valor es variable ya que son un tipo de resistencias especiales que tienen la capacidad de variar su valor cambiando de forma mecánica su posición. Con ellos indirectamente, se puede controlar la intensidad de corriente que fluye por un circuito si se conecta en paralelo, o controlar el voltaje al conectarlo en serie. Son adecuados para su uso como elemento de control en los aparatos electrónicos como el control de volumen, brillo, etc.

image-1654081830843.79L3M1.png

La placa Imagina TDR STEAM tiene un potenciómetro denominado Rotation que van asociado al pin A0. Las entradas Anúmero son entradas analógicas, así que empezamos con el uso de este tipo de entradas. Este potenciómetro permite realizar un giro de unos 270º entre topes (3/4 de vuelta).

image-1654081842559.png

La diferencia entre un sensor analógico y digital es que mientras este último, el digital, sólo permite dos tipos de entradas, 0-1, alto-bajohigh-lowon-off, un sensor analógico puede tener infinidad de valores. En Arduino, las entradas analógicas pueden tener 210 valores (10 bits de resolución), es decir, valores comprendidos entre 0 y 1023.

En el menú de sensores de ArduinoBlocks, disponemos de un bloque específico para realizar programas utilizando el potenciómetro de nuestra placa.

image-1654081855950.F0XAN1.png

En el desplegable del bloque del sensor, podemos elegir su lectura en porcentaje (%) o en valor (de 0 a 1023).

image-1654081861633.BDB3M1.png

7.5.1 Lectura de valores con el puerto serie

Para realizar una lectura de los valores del sensor es necesario utilizar la Consola (lector de datos por el puerto serie) que nos ofrece ArduinoBlocks, vamos a ver como se hace.

En primer lugar, generamos una variable a la que llamaremos pot.

image-1654081913047.10MTM1.png

Para cambiar el nombre de la variable pulsaremos sobre el menú desplegable del bloque de la variable y elegiremos Variable nueva… nos aparecerá una ventana en la que escribiremos el nuevo nombre y daremos a Aceptar. Ahora fijaremos el valor de la variable al valor del potenciómetro, tal y como está en la imagen.

image-1654081926365.ZSVVM1.png

Es importante establecer la variable con el valor del potenciómetro dentro de Bucle, ya que si sólo se hace en Inicializar el valor siempre será el mismo a lo largo de todo el programa. En otras ocasiones interesa establecer las variables en el inicio, pero no es este el caso.

Continuando con el programa, ahora nos faltan los bloques del Puerto Serie. El primero que debemos utilizar es el Iniciar Baudios 9.600 que siempre lo colocaremos en el Inicio y después el bloque Enviar.

image-1654081966347.png

Observa cómo queda el programa resultante:

image-1654081976418.MCPDN1.png

Sube ahora el programa y después pulsa sobre el botón de la Consola

image-1654081986506.HCX6M1.png

Se abrirá la siguiente ventana y pulsaremos sobre el botón conectar. De esta manera podremos ver cada medio segundo el valor de nuestro potenciómetro. Gira el potenciómetro y observa cómo van cambiando los valores.

image-1654081991794.AGYYM1.png

Actividad de ampliación: prueba ahora quitando el tic de Salto de línea a ver qué sucede.

7.5.2 Ajuste de valores de entrada y salida: mapear

Existe un pequeño “problema” entre las entradas y las salidas en Arduino. Las entradas trabajan con 10 bits (210 valores = 0 a 1023) y las salidas trabajan a 8 bits (28 valores = 0 a 255). Debido a esto, debemos realizar un cambio de escala. A este cambio de escala se le llama “mapear”. En el menú Matemáticas existe un bloque llamado mapear. Este bloque permite modificar el rango de un valor o variable desde un rango origen a un rango destino. Esta función es especialmente útil para adaptar los valores leídos de sensores o para adaptar valores a aplicar en un actuador.

image-1654082047764.9XRYM1.png

En esta actividad vamos a imaginar que con el potenciómetro queremos definir un rango de valores entre 0 a 255. Para ello definiremos una variable, llamada consigna, que será el valor mapeado del potenciómetro. En el potenciómetro cambiaremos su opción para obtener datos 0...1023.

image-1654082057689.WSEAN1.png

Continuando el programa para poder realizar lecturas por el puerto serie utilizaremos un nuevo bloque de crear texto con.... Fíjate como al pulsar sobre el símbolo del mecanismo podemos ampliar las líneas añadiendo varNum a la parte derecha.

image-1654082067919.EA8YM1.png

El programa resultante quedará de la siguiente forma: 

image-1654082093466.png

Por último, carga el programa, abre la Consola y comprueba las lecturas moviendo el potenciómetro.

image-1654082113505.X7KUM1.png

Actividad de ampliación: cambia ahora el rango de salida y el texto que envía por el puerto serie.

7.5.3 Control del led RGB con el potenciómetro

En la siguiente actividad vamos a controlar los colores del led RGB utilizando el potenciómetro. Vamos a hacer que cambie de color según varíe el valor del potenciómetro. Es decir, cuando el valor del potenciómetro se encuentre entre 0 y 100 que el color del led sea rojo, cuando se encuentre entre 101 y 200 que sea verde y cuando esté entre 201 y 255 que sea azul.

Del menú Lógica vamos a necesitar dos nuevos bloques; el bloque de Evaluar condición y el bloque de Conjunción/Disyunción. Con ellos crearemos estas condiciones:

image-1654082159180.F79BN1.pngimage-1654082172579.TJI7M1.png

Deberemos crear tres estructuras para hacer los tres rangos.

image-1654082185559.DZB7M1.png

El programa quedaría como muestra la imagen: 

image-1654082195859.YP6TM1.png

También se puede hacer el mismo programa de la siguiente forma: