Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Potenciómetro en Arduíno - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 16 de diciembre de 2025 por Francisco J. G.

1 visualizaciones

Potenciómetro en Arduíno

Descargar la transcripción

Buenos días, os presento aquí otro esquema de otro circuito en el que he añadido un componente más. 00:00:05
El componente que he añadido ha sido el potenciómetro, que es este que veis aquí. 00:00:13
Si veis nos aparece una resistencia porque realmente un potenciómetro lleva interna una resistencia y ahora veremos por qué. 00:00:17
Un potenciómetro es la clásica rueda que tenéis en las radios o en los televisores antiguos, 00:00:24
antiguos en el que con esta rueda lo que haces es que vas aumentando o disminuyendo la resistencia 00:00:29
cuando está en el lado izquierdo estaría en un máximo de resistencia entonces el voltaje no pasa 00:00:35
y cuando lo vais moviendo va disminuyendo la resistencia y va añadiendo mayor voltaje 00:00:41
este es un instrumento analógico un potenciómetro es un componente electrónico variable que actúa 00:00:47
como una resistencia ajustable al girar su eje cambia el valor de la resistencia y por tanto 00:00:53
el voltaje de salida. En Arduino se usa principalmente para control de posición, para regulador 00:00:59
de intensidad de un LED, como selector de velocidad o de ángulo, que es lo que vamos 00:01:05
a ver aquí en el caso del servo, para entrada analógica para menús o ajustes, etc. Es 00:01:11
uno de los sensores analógicos más básicos y más importantes. ¿Cómo funciona? Tiene 00:01:17
tres extremos. Si nos acercamos, está formado por tres terminales. Uno será el que conectemos 00:01:22
a tierra, el otro le conectaremos 00:01:28
del de la izquierda 00:01:30
al voltaje 00:01:32
o alimentación y luego el viper 00:01:33
que el viper es el central 00:01:36
y es el que va a producir la salida variable 00:01:38
y no tiene mucho más 00:01:40
al girarlo la patilla 00:01:42
central entrega un voltaje entre 0 00:01:44
y 5 voltios dependiendo de donde pongamos 00:01:46
la rejilla 00:01:48
donde si aplicamos mayor o menos resistencia 00:01:50
Arduino lo lee con una 00:01:53
función que luego veremos que es analog 00:01:54
red, y el valor que va a tener 00:01:56
va a ser, ya no te hablamos 00:01:58
de un componente digital en el que sólo 00:02:00
permitía un valor de 0, 0 voltios 00:02:02
o de 1, que era 5 voltios 00:02:04
sino que ahora es un valor comprendido 00:02:06
entre 0 y 1023, un valor analógico 00:02:08
por tanto, no es un valor discreto 00:02:10
sino que es un valor continuo 00:02:12
el objetivo del ejercicio 00:02:14
que aparece aquí es 00:02:17
girar el potenciómetro y que el servo 00:02:18
se mueva suavemente de 0 a 180 00:02:20
grados según la posición 00:02:22
lo veremos a través de una función de transformación 00:02:24
Y este ejemplo es muy visual y perfecto para explicar entradas analógicas con versión de valores y control de actuadores. Voy a borrar el que he sacado y os voy a poner el circuito. Este sería el código, no es un código muy sencillito. 00:02:26
y iniciaremos la simulación y en un principio el servo no se mueve. 00:02:42
Conforme yo voy moviendo la rueda, pues le bajo confiriendo porque va disminuyendo la resistencia 00:02:48
y por tanto generando un voltaje que iría por aquí hasta el pinal analógico 00:02:53
y lo que haría es que iría moviendo el servo a mayor ángulo o menor en función del voltaje 00:03:00
que le estoy pasando a través del potenciómetro. 00:03:06
vamos a comerciarlo desde el principio 00:03:08
lo que voy a hacer es que voy a quitar todos los componentes 00:03:13
y creamos de nuevo todo el circuito 00:03:18
me quedo tan solo con la placa de arduino y pasamos la placa de pruebas 00:03:23
lo que voy a hacer es que voy a alimentar estas dos líneas con 0 voltios y 5 voltios 00:03:27
como siempre hago voy a poner una para alimentación que iría hasta aquí 00:03:32
que sería de color rojo, ya estamos alimentando esta línea con 5 voltios 00:03:36
y una con GND que iría hasta la otra línea para alimentarlo con 0 voltios 00:03:43
lo vamos a poner en negro para que lo distingamos 00:03:50
ya tenemos el circuito cerrado hasta estas dos líneas 00:03:52
ahora a continuación vamos a añadir el potenciómetro 00:03:55
le vamos a poner aquí y alimentaremos su pata izquierda 00:03:59
la alimentaremos con tierra o con masa 00:04:05
como siempre hemos hecho 00:04:09
y esta otra la alimentaríamos con 5 voltios 00:04:11
que iría hasta aquí 00:04:16
nos quedaría la pata central 00:04:17
que la pata central lo que vamos a hacer es que 00:04:19
tiene que ir hasta un pin analógico 00:04:22
para que pueda leer el valor analógico 00:04:26
que va aportando el potenciómetro 00:04:28
según movemos la tuerca o la rosca 00:04:30
Este le ponemos otro color para distinguirlo y ya tendríamos puesto el potenciómetro. A continuación vamos a traer un servo, le giramos para que esté más cómodo para las conexiones y bueno, os acordáis del servo. 00:04:33
El servo tenía un pin de potencia que le vamos a llevar hasta la zona de alimentación. 00:04:49
La zona de alimentación es la roja, que era esta. 00:04:55
Le vamos a poner de color rojo para que veamos que está alimentado el servo. 00:04:59
Y yo luego la tierra para que no sea tan... 00:05:04
Voy a eliminarlo y para que sea más visual vamos a crear un puente aquí 00:05:11
con alimentación 00:05:16
alimentando esta otra línea de aquí arriba 00:05:20
para que nos podamos utilizarla para el servo 00:05:22
y por otro lado tenemos la de masa 00:05:24
que la vamos a alimentar también aquí 00:05:27
con esta la ponemos de color negro 00:05:30
y ya tenemos estas dos líneas alimentadas desde aquí 00:05:33
entonces ahora ya podemos llevar las dos líneas 00:05:35
la de alimentación 00:05:39
hasta el servo, acordaos que esta es la de alimentación, 00:05:43
la roja, y la de tierra la llevamos también hasta la otra línea 00:05:50
para alimentar el servo y darle los cero voltios. 00:05:54
Y tenemos de color negro. 00:05:58
Ya tenemos las dos líneas, lo único que nos quedaría 00:06:00
es la de la señal, que iría a un pin digital, acordaos. 00:06:02
Lo vamos a llevar hasta, por ejemplo, el pin 9, 00:06:07
que era un pin digital, y le ponemos de otro color 00:06:10
para distinguirlo, de color azul. Esto sería ya el circuito. Si le damos, vamos a ver si 00:06:14
funciona o no, y movemos el potenciómetro y veis, me va dando el ángulo que yo deseo. 00:06:19
Bien, vamos a pasar a explicar el código. El código es muy sencillito. Lo único que 00:06:26
sí quiero explicar previo a esto es una función que vamos a utilizar. Bueno, realmente vamos 00:06:32
Vamos a utilizar dos métodos. Uno sería el método AnalogRed, que está aquí, 00:06:38
que lo que va a hacer es leer del potenciómetro qué potencial está saliendo 00:06:45
desde 0 a 2023. Ya hemos visto que tenía esos dos valores de intervalo 00:06:53
como mínimo y como máximo. Entonces queremos saber qué potencial 00:06:58
está proporcionando el potenciómetro. Entonces para ello necesitamos 00:07:02
que se ha leído por este pin analógico. 00:07:06
Entonces, analogRed va a leer de ese pin. 00:07:09
Este pin, por tanto, será un pin analógico de entrada, 00:07:11
porque va a leer el potencial que sale del potenciómetro. 00:07:14
Con respecto a la otra función, sería la función map, 00:07:20
que es una función que permite convertir un valor a un ángulo. 00:07:23
Veis aquí, tiene cinco parámetros. 00:07:27
Primero tenemos el valor de la lectura del potenciómetro, 00:07:30
el que nos va a dar analog red y luego tiene los dos siguientes parámetros 00:07:35
son el intervalo de lectura del potenciómetro que hemos dicho que iba de 0 a 1023 00:07:40
y luego por último la lectura de los ángulos del servo que va a ir de 0 a 180 grados 00:07:46
y esa sería la función map 00:07:56
Bien, voy a ponerlo, voy a hacer toda la secuencia desde cero para que veamos cómo funciona el programa. 00:07:58
Recordar, por tanto, que AnalogRed es para leer un valor analógico a través de un pin analógico 00:08:17
analógico y que map no es nada más que una función que va a traducir los valores, unos valores en otros, traduce los valores de 0 a 1023 del potenciómetro a 0 y 180 grados que es el ángulo del servo, si tiene un valor de 0 el potenciómetro tendrá un valor de 0 grados, si tiene un valor de 1023 el potenciómetro tendrá un valor de 180 grados, 00:08:23
Los valores intermedios se corresponderán con los valores intermedios también de los ángulos y no hace mucho más. Imaginaos, si el valor del potenciómetro está a la mitad, nos da un valor entre 0 y 1023, la mitad sería aproximadamente 512, el valor del potenciómetro, que nos va a dar, si lo traduce a ángulos, que nos va a dar la mitad del ángulo, sería 90 grados y no hace mucho más. 00:08:50
Bien, entonces vamos a ir poco a poco con el código. Lo voy a cortar y poniendo las líneas una a una. 00:09:18
Entonces, lo primero que vamos a hacer, ¿qué es? Lo primero es, acordaos que necesitamos una librería, la librería de Servo para poder manejar sus métodos. 00:09:28
Ya la tengo aquí añadida y a continuación lo único que voy a hacer es crear un objeto Servo. Entonces Servo y le llamamos MiServo. 00:09:39
Bien, ya tenemos el objeto servo para poder utilizar los métodos de la librería servo. 00:09:47
A continuación vamos a generar cuatro variables. Una primera variable entera que se llama pinPot y esta variable va a tener un valor que va a ser el valor del potenciómetro, del pin analógico que va a establecer la lectura. 00:09:54
que sería el a cero 00:10:17
a continuación tendríamos otro entero 00:10:19
que sería pin servo 00:10:22
y que el pin servo va a ser el nueve 00:10:23
lo hemos visto anteriormente 00:10:25
metemos el valor de nueve 00:10:27
es el valor de lectura del propio servo 00:10:28
una vez que tenemos estos 00:10:31
a continuación tengo otra variable 00:10:33
que sería valor pot 00:10:37
y este valor le vamos a poner a cero 00:10:39
luego veremos para qué es 00:10:42
y a continuación in ángulo 00:10:43
que será también un valor de 0 inicializado a 0 00:10:46
estas serían las 5 variables globales que vamos a tener 00:10:49
la de servo, la de pin pot que va a contener el pin analógico 00:10:55
la de pin servo que va a contener el valor del pin digital 00:11:01
y luego el valor pot será el valor que iríamos obteniendo 00:11:05
desde el potenciómetro 00:11:09
un valor que va a ser entre 0 y 1023 00:11:13
mientras que ángulo va a reflejar el valor que vamos a tener 00:11:17
entre 0 y 180 grados 00:11:20
estos dos, si se produciera una conversión 00:11:22
entre los valores de valor pot y de ángulo 00:11:25
lo va a realizar la función MAP 00:11:27
bien, pasamos a Void Setup 00:11:29
como siempre 00:11:35
y le ponemos sus 00:11:40
creamos también el 00:11:42
el método loop 00:11:44
void loop 00:11:47
que siempre tiene que estar aquí 00:11:49
y ya tendríamos 00:11:51
los dos métodos 00:11:53
procedemos primero con el 00:11:56
setup y lo único que vamos a hacer 00:11:58
es acordaros 00:12:01
perdón 00:12:02
cuando tenemos un servo tenemos que asociar 00:12:03
a que pin estaba unido ese servo 00:12:06
hemos dicho que está al pin 9 00:12:09
Y el pin 9 es la variable pin servo. Eso se hacía con la función attach. Servo.attach y le ponemos el valor del pin del servo, que es el pin servo. O lo que es lo mismo, el valor de 9. 00:12:11
Y como queremos ver el resultado a través del monitor en serie, vamos a generar también el serial y le vamos a inicializar. 00:12:27
Acordaros, 9600 baudios siempre se utilizaban para el serial. 00:12:40
600. 00:12:47
Vale, ya tenemos el voice setup, que no hemos añadido más que dos líneas de configuración, 00:12:49
configuración tanto para el servo como para el monitoreo en serie a continuación tenemos que 00:12:56
hacer lo primero que tenemos que hacer es leer el valor del potenciómetro lo que lo va a leer 00:13:00
a través de este pin analógico entonces queremos saber en todo momento en el void loop que lo va 00:13:08
repitiendo continuamente saber porque yo voy a poder mover la rosca ver qué valor de potencial 00:13:13
me está confiriendo eso lo vamos a albergar donde en valor pot y se hacía a través de un método que 00:13:19
lo hemos dicho le he dicho antes que era el analog red que es para leer el valor en un pin 00:13:25
analógico aquí tendremos que poner el pin pot y el pin pot nos refleja que qué pin analógico va 00:13:31
a leer el valor ese sería el acero que es el que hemos conectado al potenciómetro y a los red va a 00:13:43
leer puesto que era un pin de entrada va a leer el valor que le está dando el potenciómetro en 00:13:52
función de que giremos la ruedecita y que apliquemos mayor o menor resistencia una vez 00:13:58
que tenemos el valor de lectura del potenciómetro introducido dentro de la variable valor pot a 00:14:05
continuación lo que tenemos que hacer es el ángulo el ángulo que era otra variable que hemos definido 00:14:13
arriba le vamos a poner la función map que es la que he dicho anteriormente porque porque esta 00:14:17
función nos va a coger cinco parámetros primero coge el valor bot el valor que le ha dado la 00:14:22
lectura del pin analógico a continuación le ponemos la escala que tiene el propio potenciómetro que 00:14:30
hemos dicho que va de 0 a 1023 y después la escala o intervalo que tiene el servo que sería de 0 a 00:14:37
180 grados esta función como digo anteriormente y que lo que hacía convierte 0 el 0 del potenciómetro 00:14:45
lo convierte en un 0 grados y el 1023 en 160 grados los valores intermedios no serían nada 00:14:54
más que calcularlos la mitad que hemos dicho que era 512 de si aporta un valor de 512 el 00:15:01
potenciómetro tendríamos que sería la mitad de 180 que sería lo convertiría en 90 grados luego 00:15:09
lo veremos a través del monitor en serie una vez que ya tenemos esto ahora tenemos que decirle al 00:15:13
servo qué cuántos grados queremos que se mueva por tanto hay que poner mi servo y escribir great 00:15:19
dicho valor en él y por ello tenemos que pasarle el valor del ángulo a esa función great ángulo 00:15:31
Una vez que ya hemos hecho esto, ya estaría completo. Si nosotros le damos a ejecutar, funcionaría perfectamente. Bueno, aquí hemos escrito algo mal, mi servo que lo he puesto en minúsculas. Le damos de nuevo a ejecutar y no creo que haya ningún problema más. 00:15:39
¿Veis? En función del valor que yo le voy dando de potencial del potenciómetro, él va girando los grados que se correspondan. 00:15:58
Para verlo vamos a crear aquí el monitor en serie y verlo in situ cómo va haciendo esas conversiones la función map desde los valores del potenciómetro a los valores de ángulo. 00:16:07
Por ello utilizamos el serial y acordaos con la función print. La función print imprimía en el monitor en serie y vamos a poner aquí, por ejemplo, potenciómetro, dos puntos, esta cadena de texto. 00:16:19
A continuación ponemos serial.print y le ponemos ahora lo que queremos que nos saca en el monitor es el valor que le está dando para que lo lea el pin analógico a cero el valor de potencial que le está confiriendo. 00:16:36
Entonces acá va a poner ese valor, lo habíamos recogido en esta lectura y por tanto será valor pot, le ponemos que imprima valor pot. 00:16:57
Posteriormente, ahora queremos que nos saque el valor del ángulo, entonces le ponemos un espacio ángulo servo con dos puntos, espacio y le dejamos y cerramos. 00:17:10
y por último 00:17:25
bueno aquí nos ha faltado el print 00:17:29
y por último 00:17:31
vamos a ponerle serial 00:17:35
tendríamos que ponerle 00:17:37
pero ahora no le pongo print 00:17:39
solo sino print nl 00:17:40
para que haga un retorno de carro y que nos vaya 00:17:43
saliendo no solo en horizontal 00:17:45
sino que cada uno de los valores en vertical 00:17:47
esto lo he puesto mal 00:17:49
y aquí tendríamos que indicarle 00:17:51
que nos imprima en el monitor en serie 00:17:57
pues el ángulo 00:17:59
que ya vimos que estaba aquí 00:18:00
lo hacía la función map 00:18:03
convertía valores 00:18:04
del potenciómetro 00:18:05
en valores de ángulo 00:18:08
y ya estaría completo 00:18:11
si nosotros le damos a ejecutar 00:18:12
algo he escrito mal 00:18:15
serial.print 00:18:18
potenciómetro perfecto, valor pot 00:18:20
perfecto 00:18:22
y serial.print 00:18:23
vamos a ver que está mal 00:18:28
hasta aquí estaba todo bien 00:18:31
tiene que estar en estas cuatro líneas 00:18:32
aquí le hemos puesto las comillas 00:18:34
perfecto, aquí también sería el punto print 00:18:36
sería el punto print 00:18:39
ah, ln 00:18:40
estaba mal escrito 00:18:42
bien, le damos a ejecutar 00:18:43
y si ahora ponemos el monitor en serie 00:18:45
veis que me está diciendo 00:18:48
cuando el potentiómetro como está en la rosca 00:18:49
en el valor de cero 00:18:53
no le está confiriendo ningún valor 00:18:54
analógico a este pin analógico 00:18:56
como me está dando un valor de 0 00:18:59
la conversión que hace MAP es 0 grados 00:19:01
si yo le subo 00:19:04
vamos a subirle 00:19:06
un poco a 184 grados 00:19:08
él hace la regla de 3 00:19:10
en el que el 184 00:19:12
le correspondería un ángulo de 32 grados 00:19:14
si yo lo pongo a 90 00:19:16
acordaos que eran 511 00:19:18
511 es lo que 00:19:20
le está transfiriendo 00:19:22
él calcula el ángulo 00:19:23
que serían aproximadamente 90 grados y si yo le llevo al sal máximo que serían los 1023 recordad 00:19:25
que los valores que puede proporcionar el potenciómetro sería entre 0 y 1023 serían 00:19:31
los 180 grados y el servo se mueve 180 grados detenemos la simulación y por último comentó 00:19:36
de nuevo las líneas para que nos quede aquí bastante claro la primera sería la importación 00:19:47
Tendrá librerías, aquí tendríamos creamos un objeto servo, en estas dos líneas creamos dos variables enteras que serían tanto pinpot que va a alojar el pin analógico y pinservo que va a alojar el número del pin digital. 00:19:52
Aquí creo otras dos variables, creamos dos variables enteras que van a albergar tanto el valor que le confiere el potenciómetro, que sería un valor entre 0 y 1023 y por otro lado tenemos el valor que estaría reflejado en ángulo que va a tener un valor entre 0 y 180 grados. 00:20:20
Nos vamos al setup, aquí unimos al servo cuál es el pin que tiene, el pin sería el 9 y aquí comenzamos el monitor en serie. 00:20:49
Con respecto al Void Loop, lo primero que hace es la lectura del pin analógico de entrada y en esa lectura alberga un valor entre 0 y 1023 que le va a dar el propio potenciómetro. 00:21:08
Muy bien, después tenemos función map, función map que convierte un valor del potenciómetro en un ángulo. 00:21:38
Un ejemplo de ello podría ser, vamos a poner aquí ejemplos, si fueran un valor de 0 le correspondería un valor de 0 grados. 00:22:00
Si fuera un valor de 512 lo convertiría en un valor de 90 grados y así sucesivamente. 00:22:15
por último escribimos el valor del ángulo en el servo 00:22:27
para que lo mueva 00:22:30
escribimos 00:22:32
valor del 00:22:40
ángulo 00:22:43
en el servo 00:22:44
para 00:22:47
que lo mueva 00:22:49
y ya nos 00:22:50
quedaría nada más que las líneas del serial 00:22:53
que no las voy a comentar 00:22:55
que lo único que hace es dibujar 00:22:57
o sea, escribir 00:23:00
en el monitor en serie, primero potenciómetro, 00:23:01
luego el valor que le está confiriendo el potenciómetro, 00:23:05
luego ángulo servo y luego el ángulo que ha convertido la función MAP. 00:23:08
Idioma/s:
es
Materias:
Informática
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado básico
      • Primer Curso
      • Segundo Curso
    • Ciclo formativo de grado medio
      • Primer Curso
      • Segundo Curso
    • Ciclo formativo de grado superior
      • Primer Curso
      • Segundo Curso
Autor/es:
Francisco José González Constanza
Subido por:
Francisco J. G.
Licencia:
Todos los derechos reservados
Visualizaciones:
1
Fecha:
16 de diciembre de 2025 - 9:25
Visibilidad:
Público
Centro:
IES CIFP a Distancia Ignacio Ellacuría
Duración:
23′ 22″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
1.05

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid