Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Programación básica en Arduíno - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Programación básica en Arduíno
Buenas tardes. Voy a explicar el paso 6 del aula donde hablamos de una iniciación a la
00:00:00
programación en Arduino. Entonces voy a ir explicando cada una de las imágenes que nos
00:00:14
aparecen en el aula lo que queremos lograr es una estructura lo que es una estructura básica de lo
00:00:23
que se llama un sketch en arduino que sería el código que vamos a implementar para que funcione
00:00:31
nuestro esquema entonces en todos los sketch tiene que haber como siempre dos métodos que son
00:00:36
indispensables uno sería el setup y otro es el loop ya he hablado en varios vídeos sobre ellos
00:00:45
Pero aquí lo vuelvo a explicar para que nos quede bien claro para qué se utilizan estos dos métodos y que son imprescindibles, siempre tienen que aparecer en nuestro código.
00:00:51
el setup solo ya lo he dicho muchas veces pero solo se va a ejecutar una sola vez donde se
00:01:07
pondrán aquí parámetros de configuración como aquí pues he puesto el pin mode que sería un
00:01:14
método que lo que hace es que configura el pin 13 como un pin de salida en cambio el loop se va a
00:01:19
ejecutar de manera repetitiva desde que iniciamos la ejecución del propio programa se va a estar
00:01:27
repitiendo y repitiendo y repitiendo hasta que lo paremos aquí se pondrán pues otro tipo de
00:01:33
lógica la lógica en definitiva la lógica principal del programa es la que se pondrá en el loop aquí
00:01:38
no está diciendo que le está concediendo o le está aportando al pin 13 un valor alto un valor
00:01:44
de 1 para que pues esto será un led para que se encienda bien una vez que hemos visto los dos
00:01:51
componentes principales de todo programa es el método setup y el método loop, cómo se crea una
00:02:01
variable en Arduino, tanto si la variable está fuera de esos dos métodos que serían variables
00:02:07
globales y que valdrían para todo el programa, todo el programa incluidos los métodos podrían
00:02:14
leer dichas variables o bien dentro de un método como dentro del setup o dentro del loop o dentro
00:02:21
de otra función que nosotros creemos que serían a nivel local
00:02:25
y solo se tendrían valor dentro
00:02:28
del propio método. Hay distintos tipos en temas
00:02:31
más de creación de variables, pero que sepáis que primero
00:02:34
se tiene que poner el tipo de la variable
00:02:37
luego el nombre y luego se inicializa si queremos
00:02:40
como veis aquí
00:02:43
una variable realmente no es nada más que un cajón
00:02:45
que tiene un nombre, en ese cajón tú guardas algo
00:02:49
en función del tipo de cajón, del tipo de variable
00:02:52
que nosotros queramos, podremos guardar una cosa u otra.
00:02:55
Si la variable es de tipo entero, en ese cajón
00:02:59
solo podremos meter números enteros.
00:03:01
Si es de tipo float, solo números decimales. Si es de tipo
00:03:04
bool, solo verdadero o falso. Y si es de tipo char,
00:03:07
solo caracteres. Pero que sepáis que una variable
00:03:10
es un contenedor de algo en el que
00:03:13
lógicamente tiene que tener un nombre para luego ser
00:03:16
identificado. Y se le iguala
00:03:19
al valor que nosotros queremos almacenar, que sería la inicial
00:03:22
de la propia variable con respecto a la creación de constantes en c++ se hace de dos modos bien
00:03:25
añadiendo una palabra const delante del esto sería si nos olvidamos la palabra const esto sería como
00:03:37
la creación de una variable si nosotros le ponemos previo a ella le ponemos la palabra const estamos
00:03:43
diciendo que es una constante una constante también va a ser un contenedor que va a contener
00:03:49
algo, pero ese algo nunca va a cambiar. Si tenemos la constante LED, como es esta, va a tener siempre
00:03:53
un 13 y no puede cambiar ese valor. Ese cajón siempre va a tener un 13, ese número entero que
00:03:59
es el número 13. La otra manera es a través de una cláusula que se pone al principio del programa,
00:04:06
como sucede con los includes, que luego veremos, que se pone con esta estructura, en el que estamos
00:04:11
definiendo que LED va a tener un valor constante de 13. La otra cláusula que se puede poner al
00:04:15
principio del programa sería la de include que es para incluir librerías externas y por tanto
00:04:26
serán las primeras líneas que se pondrán en el programa aquí veis se hace con estos ángulos
00:04:30
invertidos en el que se pone dentro la librería la librería generalmente la librería es una
00:04:36
librería con una extensión punto h h de head de cabecera el archivo cabecera es el enlace a una
00:04:42
librería esta sería por ejemplo la librería de servo está la del lcd etcétera entramos en dentro
00:04:50
de un programa para el que no lo conozca podemos utilizar condicionales un condicional se va a
00:05:03
utilizar con esta estructura que aparece aquí siempre con un if luego entre paréntesis dentro
00:05:10
va una condición y luego hay un bloque con una apertura de una llave y una llave de cierre donde
00:05:15
dentro tenemos una serie de comandos que vamos a ejecutar o no dependiendo si se cumple esta
00:05:21
condición pero un condicional tiene que cumplirse esta condición para que pueda leer esta línea si
00:05:25
esta condición no se cumple se lo saltará y seguirá con las siguientes líneas del programa
00:05:31
hay otra versión veis aquí este ejemplo nos dice si se cumple la condición escribirá en el 13 en
00:05:35
el pin 13 un valor de high o de 1 si no se cumple pues se nos salta y no haría esta línea el if else
00:05:43
sería la otra posibilidad y es cuando tenemos un if
00:05:50
y se cumple la condición, pues leería
00:05:53
esta línea. Pero si no se cumple, ahora
00:05:56
no seguiría el programa, pero tenemos
00:05:58
otra posibilidad que es el else, que se pondría así, también con
00:06:02
una llave de apertura y una de cierre y leería esta
00:06:05
otra línea. Entonces, si se cumple la condición, valor mayor de
00:06:08
500, escribiría en el pin 13 un valor de alto.
00:06:11
Pero si no, ahora ya no lo perderíamos, sino que
00:06:15
también hay otra línea que, en el caso de que no se cumpla, lo que hace es que al pin 13 le va a
00:06:17
conferir un valor de low o de cero. Hemos visto los condicionales, vamos a ver los bucles for. Un
00:06:24
bucle for se utiliza para repetir un conjunto de instrucciones, el número de veces que nosotros
00:06:38
indiquemos, y siempre tendrá tres partes. Una inicialización, veis el for, se pone entre paréntesis,
00:06:43
y entre paréntesis tiene tres partes separadas por puntos y coma. La primera parte sería esta,
00:06:49
que es una inicialización, la segunda sería una condición y la tercera sería un incremento.
00:06:54
Entonces esto lo que hará es que en un principio, veis, está en la inicialización,
00:07:00
está inicializando la variable i de tipo entero a cero
00:07:04
y nos está poniendo la condición de que i sea menor que 10 y luego aparecería el incremento.
00:07:07
Entonces el primer valor con el que pasaría entraría aquí y nos sacaría en el monitor en serie,
00:07:13
nos sacaría un cero, volvería otra vez para atrás y comprobaría la condición.
00:07:19
¿Cero es menor que 10? Sí. Entonces produciría el incremento, se formaría el valor de 1 y imprimiría 1 y así sucesivamente hasta el 9, porque cuando llegue al 9, le incremente y sea igual a 9, pasaría al monitor, lo imprimiría, pero cuando subiéramos otra vez, lo primero que hace es incrementarlo.
00:07:23
al incrementarlo nos daría un valor de 10
00:07:50
y él como ya no cumple la condición
00:07:52
porque i tiene que ser menor que 10
00:07:54
no lo imprimiría y saltaría y seguiría con las demás líneas
00:07:56
con lo cual este programa
00:07:59
lo que haría es que imprimiría en el monitor en serie
00:08:01
de manera vertical
00:08:03
0, 1, 2, 3, 4, 5, 6, 7, 8 y 9
00:08:06
¿para qué es usado?
00:08:09
para barridos, contadores, animaciones con LED, etc.
00:08:11
a continuación tenemos el apartado de funciones
00:08:19
Las funciones las utilizaremos también en los ejemplos y se utilizan para agrupar instrucciones, pero de una manera ordenada y más clara y que esté separado de lo que es en un lugar apartado del programa al que podamos llamar a esa función, nos haga una determinada tarea y después nos devuelva un valor.
00:08:22
Hay funciones en las que devuelven valores y otras en las que no.
00:08:43
En este caso tenemos una función que sería voidEncenderLed y dentro haría esta línea.
00:08:46
¿Cómo se la llama? Se la llama poniendo el nombre de la función y los doble paréntesis y punto y coma.
00:08:53
Esto se le llamaría desde otro lado del programa, a lo mejor dentro del void loop seguramente,
00:08:59
y diríamos en el encenderLed esta otra función estaría separada,
00:09:06
Pues dentro del programa tendría una función setup con su llave de apertura y de cierre, con sus líneas dentro. Luego tendríamos una loop y dentro del loop, por ejemplo, tendríamos encender LED.
00:09:09
Cuando llegue a esa línea, llamaría a otra función, que es la tercera que tendríamos en el programa, que sería voice encender con su llave de apertura y su llave de cierre.
00:09:22
la ejecutaría, le daría un valor de alto al pin 13
00:09:31
y una vez que terminara la función
00:09:35
volvería a la siguiente línea
00:09:37
desde donde ha sido llamada dicha función
00:09:39
o sea que seguiría leyendo debajo de la línea de encender LED
00:09:42
pasamos a las entradas y salidas digitales
00:09:46
a lo largo de todo el curso
00:09:56
he hablado de ello
00:09:59
pero lo vuelvo aquí a remarcar
00:10:00
primero en configuración dentro del setup
00:10:04
ya configurábamos los pines como de entrada o de salida
00:10:07
un pin entonces se encarga de configurar aquí
00:10:11
los pines 2 y 13, uno de entrada y otro de salida
00:10:15
la lectura digital como se hace
00:10:18
se hace con el digital red
00:10:21
aquí nos está diciendo que recojamos en esta variable entera
00:10:23
el estado fruto de la lectura digital del pin 2
00:10:26
eso sería al leerlo
00:10:31
Sería un pin de salida. En cambio, una escritura digital sería con digital write y le diríamos que le estamos confiriendo al pin 13 un valor alto. Entonces, sería lo que sería una escritura digital y, por tanto, esta sería de salida porque le estamos confiriendo al pin 13 un valor alto.
00:10:33
mientras que, lo he dicho mal antes, esta sería con el pin 2, sería un valor de entrada.
00:10:55
todo dependerá de lo que queramos utilizar
00:11:05
para lo que queramos utilizar el pin
00:11:11
si lo que queremos es que ese pin lea un dato
00:11:12
con lo cual sería entrada
00:11:15
o bien le proporcionaremos un voltaje
00:11:17
o le escribamos un voltaje a ese pin
00:11:23
y que sea de salida
00:11:25
y por ejemplo encienda un LED
00:11:27
en cuanto a las lecturas analógicas
00:11:28
la diferencia con las anteriores
00:11:36
es que ahora una lectura analógica se va a hacer a través de los pines analógicos
00:11:38
y el método va a ser con el analogRED en vez de con el digitalRED.
00:11:43
Este va a devolver, ahora ya no devuelve un valor de 0 o de 1 o de high o de low,
00:11:48
sino que devolverá valores entre 0 y 1023.
00:11:52
En cuanto al PWM, es la modulación por ancho de pulso,
00:12:00
es como si dijéramos un intermedio entre lo que es el digital y el analógico.
00:12:04
Esto es el pulse width modulation. Es una técnica que permite a Arduino simular una salida analógica utilizando pines digitales. Aunque el pin solo puede estar en high, encendido o apagado, con el PWM lo que vamos a conseguir es valores intermedios.
00:12:08
aquí tenemos un ejemplo de un control de billo del LED
00:12:23
en el que el análogo le está escribiendo un valor entre 9 y 128
00:12:28
un ciclo de trabajo bajo significa que el pin está encendido poco tiempo
00:12:34
y eso sería menos potencia
00:12:41
en cambio cuando el ciclo de trabajo es alto
00:12:42
lo que le estamos dando es un valor de más potencia
00:12:45
para acabar tenemos aquí un ejemplo completo
00:12:48
integrado en el que meto el include
00:12:56
meto los dos tipos de constantes, meto cómo creo un objeto y luego meto lo único que no ha introducido, sería una función.
00:12:58
Pero veis aquí lo que hace primero, importa la librería servo, a continuación lo que hace es que el define crea una variable llamada let con un valor de 13
00:13:08
y luego creamos otra variable de tipo entero llamada pot con un valor de a0.
00:13:17
Creamos un objeto servo que proviene de la librería que hemos importado y luego en el setup, que sería el que lee una vez, lo que hace es que configuramos el LED, o sea el 13, como de salida.
00:13:23
Al servo le unimos al pin 9 para indicar que el pin que gobierna el servo va a ser el 9 de la placa de Arduino.
00:13:36
Y ya entramos en el bucle loop que, acordaos, está continuamente leyéndolo. Lo primero que hace es que desde el pin analógico está leyendo el valor y lo está metiendo dentro de un valor entero y luego como es analógico y ese valor va a tener un valor comprendido entre 0 y 1023, nos dice que si ese valor es mayor de 512,
00:13:45
que al LED, o sea, al pin 13, le pase un valor de 1.
00:14:10
Si no, al LED le pasa un valor de 0.
00:14:16
Con lo cual, ¿qué le está haciendo?
00:14:20
Le está haciendo que cuando tenemos valores de mayor de 512,
00:14:21
lo está encendiendo.
00:14:25
Cuando tenemos valores menores de 512, lo está apagando.
00:14:26
A continuación, tiene un for que una vez que hemos obtenido
00:14:31
una vez que ya hemos obtenido el resultado del condicional
00:14:38
lo que hace es una lectura del for
00:14:45
y el for lo que hace es que crea una variable i con un valor 0
00:14:47
y va a recorrer desde 0 hasta un valor de 180
00:14:50
que serán de 0 a 180 grados del servo
00:14:53
y va a ir de 10 en 10
00:14:57
esto sería igual que i igual a i más 10
00:14:58
recorrerá el i
00:15:01
lo que hará es que en un principio
00:15:04
y escribirá en el servo un valor de 0, con lo cual le está comunicando
00:15:07
que se localice en la posición 0 grados, retrasará 100 milisegundos
00:15:10
y acordaos que delay es un comando que nos va a indicar que pause la ejecución,
00:15:17
la pausará 10-100 milisegundos, el parámetro que tiene dentro es milisegundos,
00:15:23
pausará 100 milisegundos y a continuación subirá otra vez a la for.
00:15:29
Se producirá el incremento de 10 y tendremos que ahora el valor de Y valdrá 10 y le pasará al servo o le escribirá en el servo un valor de 10 grados para que se gire 10 grados.
00:15:33
Esperará 100.000 segundos y subirá otra vez.
00:15:44
Pasará por 20, por 30, por 40, por 50, así hasta 180 grados.
00:15:47
Y cuando termine ese for, cuando haga todo el recorrido cada 10 grados del servo, saldrá del mismo y volverá a leer el loop.
00:15:53
Hará exactamente lo mismo y volverá a generar las distintas posiciones del propio servo.
00:16:01
Este analogRED es porque está unido a un potenciómetro,
00:16:11
entonces lo que vamos a hacer es que el potenciómetro con la ruedecita nosotros podemos modificarlo
00:16:17
y darle distintos valores de entre 0 y 1023, de tal manera que movamos el servo o no lo movamos.
00:16:21
- Idioma/s:
- 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
- Ciclo formativo de grado básico
- Autor/es:
- Francisco José González Constanza
- Subido por:
- Francisco J. G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 3
- Fecha:
- 17 de diciembre de 2025 - 22:03
- Visibilidad:
- Público
- Centro:
- IES CIFP a Distancia Ignacio Ellacuría
- Duración:
- 16′ 37″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 344.51 MBytes