Saltar navegación

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

Loop Parking Domótico Arduíno. Vídeo 1 - 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 20 de diciembre de 2025 por Francisco J. G.

1 visualizaciones

Loop Parking Domótico Arduíno. Vídeo 1

Descargar la transcripción

Buenos días. Vamos a terminar el último vídeo del proyecto 1 con la implementación del Boil Loop. 00:00:00
Es lo único que nos queda y ya probaremos todo. Veremos, acordaos que nos quedó un error que 00:00:12
teníamos con la función leer potenciómetro, pero yo creo que es porque no tenemos todavía el loop. 00:00:17
Ahora cuando tengamos el loop veremos si tenemos el error, pondremos los serial activados para que se vea cuando leemos el potenciómetro y bueno, lo vemos todo. 00:00:23
Lo primero que vamos a hacer es irnos al loop y vamos a escribir primero, lo primero que necesitamos saber dentro del loop es la distancia del objeto, del vehículo con respecto al sensor para ver si se va o no se va. 00:00:34
Esto lo vamos a reflejar, ¿dónde? En centímetros. 00:00:50
Esta variable la creamos, era una variable global, que la teníamos aquí. 00:00:53
Aquí está. 00:00:57
Vamos a ponerlo aquí, creamos variables globales para que quede claro. 00:00:58
Variable global la puede ver cualquier método de todo el programa. 00:01:04
Entonces el Boilub puede acceder a ella. 00:01:09
¿Centímetros cómo los tenemos? 00:01:12
Pues los teníamos a través de, acordaos, leer distancia. 00:01:13
Entonces, queremos que en todo momento leer la distancia de ese sensor. Entonces, llamamos a la función leer distancia. 00:01:16
Y como esa función nos devolvía un log, lo almacenamos dentro de centímetros, que será la distancia que habrá del vehículo con respecto al sensor. 00:01:26
A continuación, necesitaremos una serie de condicionales. ¿Para qué? Primero, tenemos que saber si se ha dado al pulsador. 00:01:36
Si se ha dado el pulsador es que hay un coche que quiere entrar. Entonces, pondremos un IF, ponemos la apertura y el cierre. Vale. Llave de apertura y llave de cierre. A ver que esto… Ahora. Llave de apertura y llave de cierre. 00:01:41
¿La condición cuál va a ser? Queremos saber si con el DigitalWrite, queremos saber si, perdón, Digital, estamos aquí, DigitalWrite, porque lo que queremos es leer. 00:02:08
acordaos que el pulsador lo que va es a leer si realmente le está llegando un valor 1 o 0 00:02:37
0 cuando no se pulsa y cuando le das a pulsar nos daría un valor de 1 00:02:47
que lo va a recibir justamente este, el pin 7 00:02:52
entonces vamos a leer del pin 7 y el pin 7 se llamaba pin pulsador 00:02:56
cogemos el constante y le ponemos aquí y vamos a leer del pin 7 00:03:02
¿Qué queremos que ese valor sea? Queremos comprobar si realmente está recibiendo un 1, entonces si ese valor es high. Esa será la condición. 00:03:08
Si eso se cumple, ¿qué sucederá? Que es que hay un coche en la entrada que quiere pasar, pero claro, antes tendremos que comprobar si el parking está lleno o no. 00:03:21
Entonces ponemos otro condicional dentro de este condicional y comprobamos si lleno tiene un valor de 1 o de 0. 00:03:29
Si está lleno tendrá un valor de 1, si está vacío tendrá un valor de 0. 00:03:48
Entonces, llave de apertura y llave de cierre. Y aquí, ¿qué es lo que pondremos? Una vez que hemos comprobado tanto que se ha dado el pulsador como que... 00:03:53
Vamos a ponerlo aquí, comprobación de si se ha pulsado el pulsador y aquí comprobación de si el parking está lleno. 00:04:08
Bien, si veis que este condicional está dentro de este 00:04:44
o sea que previo a que esté lleno 00:04:50
tiene que haber cumplido que alguien ha dado el pulsador 00:04:52
Entonces, si se ha dado el pulsador y el parking está lleno 00:04:56
entonces ¿qué haremos? 00:04:59
Pues tendremos que encender el LED rojo y apagar el verde 00:05:01
Entonces, DigitalWrite 00:05:05
y pondremos aquí, lo vamos a repetir dos veces 00:05:08
digital 00:05:12
write 00:05:18
aquí tendremos 00:05:19
en el primero 00:05:22
tendremos que decir que el LED 00:05:23
vamos a poner, ¿cómo se llamaba el LED? 00:05:25
el LED se llamaba 00:05:27
pin LED verde 00:05:29
pues que el pin 00:05:33
del LED verde 00:05:35
se ponga a low 00:05:36
porque queremos 00:05:41
si está lleno el parking 00:05:43
lógicamente el led verde se apagará 00:05:44
mientras que el led rojo se encenderá 00:05:49
entonces el pin rojo 00:05:53
estaremos dando al rojo 00:05:55
un valor de high 00:05:57
repaso, si está lleno el parking 00:06:00
le mandamos a su pin 00:06:04
el pin del led verde, le vamos a mandar un 0 00:06:06
y al pin del led rojo le mandamos un 1 00:06:09
Queremos que se encienda el led rojo y el verde se apague. A continuación tendremos que actualizar la pantalla llamando a la función mostrar pantalla para que en la pantalla aparezca que el parking está lleno. 00:06:13
Si nos vamos a mostrar pantalla, está llamando a esta función, verá, comprobará el número de plazas y verá que el parking está lleno. Entonces pondrá en la pantalla parking lleno. Bien, ¿qué más? Le dejamos aquí que paramos un poquito la ejecución durante medio segundo, por ejemplo, para que se actualice. 00:06:33
Y ya estaría. ¿Qué sucede si no está lleno? Entonces pasaríamos al ELSE, abrimos llave, cerramos llave y aquí tendríamos que poner los semáforos, o sea, los LED que actúan como semáforos. 00:06:54
semáforos sería al revés ahora el verde es el que se enciende porque no está lleno y el rojo se apaga 00:07:10
porque no está lleno bien y además tendremos que abrir la barrera aquí lo que hemos dicho es que 00:07:20
no nos abre la barrera porque está lleno y lo único que nos introduce es un mensaje de oye que 00:07:27
está lleno te tendrás que esperar mientras que si no está lleno entonces ahora el led verde se 00:07:33
enciende y el rojo se apaga y además tenemos que abrir la barrera. ¿Cómo lo abrimos? Llamando a la 00:07:39
función abrir y cerrar barrera. La copiamos y la ponemos aquí. Se abre la barrera, espera unos 00:07:47
segundos en función de cómo esté el potenciómetro y luego la vuelve a cerrar. Y además tenemos que 00:07:58
añadir aquí que si está entrando un vehículo que sucede que habrá una plaza menos, entonces habrá 00:08:05
que actualizar el número de plazas. Número plazas. Tiene que ser igual a número plazas, pero ahora menos 1. ¿Qué nos quedaría de nuevo? Pues ahora tenemos que también aquí, al igual que sucedía en la parte de arriba, tendremos que actualizar la pantalla. 00:08:10
Entonces llamaríamos a la función, mostrar pantalla, veis la utilidad de las funciones, el hecho de que puedan hacerme una tarea en función de la tarea y yo pueda llamar a esa función sin saber qué es lo que hace esa tarea y me la haga y una vez que me haga la tarea que yo pretendo que se haga, volvería a mi programa y seguiría. 00:08:33
Pero veis la utilidad de establecer secciones, secciones de tareas, de diferentes tareas que quiero que se realicen en el loop y que metiéndolas aquí el loop generaría un método excesivamente grueso en líneas. 00:08:58
Entonces, al derivar todas esas tareas en determinadas funciones, veis la utilidad del estar llamando a cada una de ellas y luego volver a mi loop y continuar. 00:09:15
bien, hemos mostrado pantalla y podemos ponerle aquí también un delay 00:09:23
para que espere medio segundo para que se actualice 00:09:30
y esto sería el boil loop 00:09:34
y con esto ya tendríamos todo el código que vamos a ver ahora 00:09:39
luego actualizo los serial, los pongo, los descomento 00:09:44
pero vamos a ver si esto funciona o no 00:09:49
Nos está diciendo que aparece un error que era el error que teníamos antes. Si yo pongo, voy a poner como sucedía en la línea ya sea otra vez no va muy bien Tinkercad hoy y veis se queda en bucle y no te deja hacer nada. 00:09:50
menos mal que lo va dejando grabado 00:10:12
lo que vas escribiendo 00:10:14
conforme vas escribiendo se va quedando grabado 00:10:16
porque si no 00:10:18
entonces voy a abrir otra vez Tinkercad 00:10:19
y vuelvo 00:10:22
al mismo proyecto 00:10:25
y este le borro 00:10:27
a ver que lo tenga ya 00:10:29
veis el código, se ha actualizado y está todo 00:10:30
este le voy a borrar 00:10:34
y lo que voy a hacer 00:10:35
ahora es quitar la función 00:10:36
leer potenciómetro 00:10:39
para ver si realmente el único error que teníamos 00:10:40
era en esa función. La quitamos y como comento la línea leer potenciómetro, puesto que ahora no existe, 00:10:43
si no me daría error también, y vemos que funciona. Con lo cual tenemos un problema nada más que en la función leer potenciómetro 00:10:52
y vamos a ver por qué. Le vamos a poner otra vez, lo detengo, espero que no se le... Vale, pongo la función y descomento esta línea. 00:10:59
Si veo, si miro en el potenciómetro, la función se llama exactamente igual, con lo cual está bien. 00:11:11
Tiene su llave de apertura y de cierre, está bien. 00:11:27
Y no sé si lo que no coge es la función de mapeo. Voy a comentarla también y voy a darle. 00:11:31
Y eso no es. Y se nos ha vuelto a quedar aquí en bucle sin poder hacer nada. Voy otra vez a ponerla. Hoy no sé qué le pasa a Tinkercad, pero no va muy bien. 00:11:38
vale, vamos a ver 00:11:59
en la función potenciómetro que era la que fallaba 00:12:01
había comentado esta línea 00:12:03
pero seguía existiendo el mismo error 00:12:06
con lo cual esta línea no es 00:12:07
y puede ser a lo mejor 00:12:09
el analog red 00:12:11
no lo sé, voy a comprobar 00:12:14
el pin 00:12:16
es el correcto 00:12:20
el pin poten 00:12:21
está escrito bien y es el A3 00:12:22
sí, está correcto 00:12:26
y no debería dar ningún problema 00:12:29
vale 00:12:32
y aquí 00:12:36
ah, que mirad, veis 00:12:38
he puesto analog 00:12:41
he puesto, fijaos, una letra 00:12:42
lo que supone 00:12:45
bien, entonces ya habíamos visto el error 00:12:46
voy a quitar, descomentar esto 00:12:48
para luego ver que veamos cómo se ejecuta 00:12:52
y le vamos a dar a ejecutar 00:12:54
Tendría que estar ya bien. Voy a darle y ya funciona. 00:12:56
Si veo el monitor, en principio no pasa nada, pero si yo modifico el... 00:13:03
Fijaos, voy a ponerlo a la mitad del potenciómetro, que tendría que darme un valor entre 0 y la mitad de 1023. 00:13:10
Ese 1023, con la función de mapeo, lo va a comprender en un valor entre 2000 y 6000. 00:13:20
Vamos a ver con el monitor cuál es ese valor. Claro, no llama al potenciómetro hasta que yo no le doy a pulsar. Cuando yo le doy a pulsar, se enciende en verde, ¿lo veis? 00:13:28
Aquí está listo para que se vea bien y nos dice que hay dos plazas. 00:13:39
Bien, vamos al monitor a ver cómo aparece y veis, nos ha dicho, valor analógico, bueno, las tildes no las coge y nos dice que son 511 que corresponde a un valor de 3.998 milisegundos, o sea, casi 4 segundos, ¿vale? 00:13:43
que sería justo la mitad, el valor intermedio entre 2.000 y 6.000, o sea que estaría bien. 00:14:02
Lo que sí vamos a ver, bueno, vamos a comprobar ahora que esto funciona, 00:14:10
y claro, en cuanto he dado al botón, perdón, mi vehículo ha entrado 00:14:16
y el tiempo que ha transcurrido desde que se ha abierto hasta que se ha cerrado el propio, la barrera o el servo, ha sido de 4 segundos. 00:14:26
Vamos a poner que un vehículo sale para demostrar que esto funciona y le damos aquí. 00:14:42
Entonces, para la distancia y debería ponerse salir un vehículo. 00:14:47
Bien, vamos a darle a esto al máximo para que sea, y aún bajando la distancia, esto no abre, o sea que no nos está funcionando bien el sensor. Ahora debería estar, pero no lo hace. Vamos a detener la simulación y vamos a darle otra vez por si acaso. 00:14:53
bienvenido 00:15:20
vamos a bajar la distancia y vemos que no funciona 00:15:28
vamos a ver qué es lo que sucede al código para que 00:15:34
esto no funcione, vamos a quitar el monitor para tener más espacio 00:15:39
y vamos a ver qué es lo que le falta a la propia 00:15:42
algo tiene que estar mal para que no lea la distancia 00:15:47
entonces 00:15:51
Entonces, claro, nos queda... 00:15:52
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:
20 de diciembre de 2025 - 17:28
Visibilidad:
Público
Centro:
IES CIFP a Distancia Ignacio Ellacuría
Duración:
16′ 05″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
406.03 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid