Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Loop Parking Domótico Arduíno. Vídeo 1 - 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:
Loop Parking Domótico Arduíno. Vídeo 1
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:
- 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:
- 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