# 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 ![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.023.png)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](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654081830843-79l3m1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654081830843-79l3m1.png)

La placa Imagina TDR STEAM ![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.024.png)tiene un potenciómetro denominado *Rotation* que van asociado al pin A0. Las entradas *Anúmero* son entradas ![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.025.png)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](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654081842559.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/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-bajo*, *high-low*, *on-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 ![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.005.png)específico para realizar programas utilizando el potenciómetro de nuestra placa.

![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.026.png)[![image-1654081855950.F0XAN1.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654081855950-f0xan1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/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](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654081861633-bdb3m1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/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*.

![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.028.png)[![image-1654081913047.10MTM1.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654081913047-10mtm1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/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.

![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.029.png)[![image-1654081926365.ZSVVM1.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654081926365-zsvvm1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654081926365-zsvvm1.png)

Es importante establecer la variable con el valor del potenciómetro dentro ![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.005.png)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](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654081966347.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654081966347.png)![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.031.png)![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.032.png)

Observa cómo queda el programa resultante:

[![image-1654081976418.MCPDN1.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654081976418-mcpdn1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654081976418-mcpdn1.png)

Sube ahora el programa y después pulsa sobre el botón de la *Consola*. **![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.005.png)**

[![image-1654081986506.HCX6M1.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654081986506-hcx6m1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/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.

![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.035.png)[![image-1654081991794.AGYYM1.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654081991794-agyym1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654081991794-agyym1.png)

<p class="callout info">Actividad de ampliación: prueba ahora quitando el tic de *Salto de línea* a ver qué sucede.</p>

### 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](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654082047764-9xrym1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/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.

![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.037.png)[![image-1654082057689.WSEAN1.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654082057689-wsean1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/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.

![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.038.png)[![image-1654082067919.EA8YM1.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654082067919-ea8ym1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654082067919-ea8ym1.png)

El programa resultante quedará de la siguiente forma: ![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.005.png)

![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.039.jpeg)[![image-1654082093466.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654082093466.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654082093466.png)

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

[![image-1654082113505.X7KUM1.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654082113505-x7kum1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654082113505-x7kum1.png)

<p class="callout info">Actividad de ampliación: cambia ahora el rango de salida y el texto que envía por el puerto serie.</p>

### 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:

![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.041.png)[![image-1654082159180.F79BN1.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654082159180-f79bn1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654082159180-f79bn1.png)[![image-1654082172579.TJI7M1.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654082172579-tji7m1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654082172579-tji7m1.png)![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.042.png)

Deberemos crear tres estructuras para hacer los tres rangos.

![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_42_to_56.043.png)[![image-1654082185559.DZB7M1.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654082185559-dzb7m1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654082185559-dzb7m1.png)

El programa quedaría como muestra la imagen: ![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_56_to_70.005.png)

![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_56_to_70.006.jpeg)[![image-1654082195859.YP6TM1.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654082195859-yp6tm1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654082195859-yp6tm1.png)

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

[![image-1654082208046.QPJTM1.png](https://libros.catedu.es/uploads/images/gallery/2022-06/scaled-1680-/image-1654082208046-qpjtm1.png)](https://libros.catedu.es/uploads/images/gallery/2022-06/image-1654082208046-qpjtm1.png)

<p class="callout info">![](https://file+.vscode-resource.vscode-cdn.net/home/deleyva/Descargas/Retos%20con%20Imagina%20TdR%20STEAM/retos_steam_pages_from_56_to_70.007.jpeg)Actividad de ampliación: completa el programa con más condiciones.</p>