Hola bienvenidos a este capítulo.
Hace poco estuvimos viendo entradas analógicas anteriormente salidas digitales y nos falta algo muy
importante.
Entradas digitales cuando tenemos que medir o censar si tenemos un uno o un cero alto o bajo 5 voltios
o nada bueno.
Para qué nos puede servir algo super práctico y súper fácil de probar.
Es con un pulsador porque en realidad una función de las entradas digitales es para medir cuando un
pulsador ha sido presionado.
Entonces podríamos imaginarnos que este pulsador que vemos en pantalla cuando lo presiono cierra el
circuito o sea empieza a circular corriente por su interior.
Entonces podríamos decir que cuando presiona este pulsador o botón los 5 voltios van a circular y si
van a ir hacia la entrada digital del Arduino sepan que hay pulsadores normalmente cerrados o normalmente
abiertos.
Esto quiere decir que cuando lo presiono cierro el circuito y la corriente pasa.
En el caso de los normalmente abiertos o sea en su estado de reposo no pasa corriente y después están
los opuestos normalmente cerrados o sea cuando no lo estoy pulsando no pasa corriente pero como medida
general vamos a tomar que son todos o la inmensa mayoría de los que vamos a usar normalmente abiertos.
El circuito se cierra cuando yo lo pulso Entonces retomando este esquema podemos decir que una manera
fácil y aparentemente correcta de usarlos sería esta tengo los 5 voltios de Arduino y cuando lo pulso
le estoy enviando un 1 o un valor alto entonces podría censar en la entrada digital X de Arduino que
estoy leyendo un pulsador presionado pero la idea es que nosotros le mandemos un 1 o un 0 da lo mismo
pero tienen que ser o uno o cero o cinco voltios o grandes en función de si lo aprieto o no lo aprieto
a ese botón.
Entonces miren lo que pasa acá cuando lo presiono le voy a enviar a la entrada digital 5 voltios.
Eso es correcto.
Hasta ahí expectacular ningún problema pero cuando yo suelte y deje de presionar el botón le voy a estar
enviando gran a este a esta entrada necesito enviarle Ground para decirle que no está presionado
y el problema aparece porque cuando yo deje de presionar este pulsador a la entrada digital de Arduino
la dejo en un estado que se conoce como flotante.
No le estoy dando ni tensión ni gran ni negativo y ese es el caldo de cultivo ideal para que todos los
ruidos electromagnéticos o eléctricos que circundan a la placa se metan por ahí.
Entonces es muy probable que pulsos de otros lados radiofrecuencia se metan por este pin y generen falsos
unos falsas señales de que ha sido presionado el botón.
Así que esto es una manera incorrecta de usar un pulsador totalmente incorrecta.
Vamos a tener que valernos de unas resistencias que en el modo en que las vamos a configurar se las
conoce como Pulau UPS o pull down algo como tirar hacia arriba o tirar para abajo.
Vamos a agregar esa resistencia para darle un poco de sentido a esto.
Bueno no se asusten ha cambiado el circuito ahora lo he configurado de la siguiente manera 5 voltios
esos 5 voltios los hago circular a través de una resistencia de unca o superior por lo general se usan
resistencias de entre 1 y 15 kilos ya explico por qué luego antes de llegar al pulsador me voy hacia
la entrada digital del Arduino cualquiera y desde el mismo lugar.
Ahí sí me voy al pulsador y desde el otro extremo del botón Agramunt entonces qué va a suceder cuando
el pulsador no está presionado por acá no fluye corriente entonces el flujo de corriente cuál va a ser
pasa a través de la resistencia.
Viene por acá y va a generar un uno cuando no esté impresionado.
En la entrada digital del Arduino entonces yo ya puedo preparar mi lógica y decir bueno si recibo un
1 quiero decir que el botón no está apretado no está presionado.
Genial.
Sigamos cuando yo no presione la electricidad que fluye por la resistencia se va a ir directamente a
Granda y va a generar una inmensa caída de tensión en este punto porque toda la electricidad va a fluir
hacia tierra haciendo que el valor de la tensión en este punto caiga a cero.
Por ende voy a estar enviando un cero a la entrada digital del Arduino y en mi lógica puedo prepararme
para pensar cuando leo un cero es porque alguien presionó el pulsador.
Ahora bien por qué pongo una resistencia si yo no pusiera esta resistencia y acá estuviera el derecho
tuviera un puente de alambre supongamos en vez de una resistencia cuando yo presiona el pulsador voy
a generar un cortocircuito estoy enviando directamente directamente los 5 voltios a tierra por acá va
a fluir una inmensa cantidad de corriente
y de inmediato se va a calentar y probablemente se retire el pulsador si es que no antes quemó la placa
de Arduino en la fuente de nuestro Arduino.
Entonces qué función cumple esta resistencia cumple la de limitar la corriente máxima que va a circular
cuando presiona el pulsador.
Mientras más chica sea la resistencia cada vez que lo pulso más corriente va a circular.
No queremos que circule demasiada porque tampoco queremos generar un consumo excesivo al presionar un
botón.
No tiene sentido simplemente es una señal la que quiero generar para darle información al Arduino.
Entonces con la corriente que circule es tan pequeña que no fuerzo para nada la fuente de 5 voltios
y voy a generar una señal limpia y clara de cuando tengo el pulsador presionado o no
veamos la otra configuración ésta que acabamos de ver.
Se llama pull HAP tira hacia arriba porque porque en el estado normal vamos a tener siempre una tensión
alta siempre arriba salvo que presionamos el pulsador ahora pasamos a la configuración opuesta que se
llama pull down.
Miren
bueno cambió bastante no pero es más o menos lo mismo acá estamos en una configuración pull down vean
esta resistencia mantiene conectado todo el tiempo la entrada digital del Arduino Agron a tierra o sea
que cuando el botón no está presionado normalmente hay que tener un cero haga entonces ya preparo mi
lógica para decir bueno si ve un cero quiere decir que el pulsador no ha sido presionado pero cuando
yo presione el botón estos 5 voltios van a circular a través de esta sección pasarán hasta aquí y fluirán
hacia tierra por la resistencia lo que sucede es que también van a fluir hacia la entrada del Arduino
generando un 1 tengo o corro peligro de estar generando un cortocircuito no porque estoy poniendo resistencia.
La resistencia de pull down como limitador de corriente si yo lo pusiera acá directo a tierra.
Por supuesto en cuanto Pulse esto o se quema el pulsador o lo más probable es que dañe la placa Arduino
porque va a pasar una inmensa cantidad de corriente a tierra un corto circuito.
Entonces esta es otra manera de configurarlo.
Por lo general usamos Polop pero a veces conviene una o la otra un tipo más cuando estamos trabajando
con sistemas con mucho ruido donde hay motores que generan mucho ruido y meten fluctuaciones importantes
o picos abruptos en la alimentación a veces es mejor usar esta configuración que es una configuración
que se conoce como más silenciosa es más inmune a que se metan ruidos a la entrada digital y generen
falsos unos.
Bueno ahora ya vimos el esquema lo tenemos bien claro pasemos a generar un pool app un Pul APP en nuestra
proto bord
como pueden ver lo que hicimos es tal cual lo que está en el esquema vieron que es más fácil interpretar
primero un esquema y después y después pasar tranquilos a la proto Word lo que vamos a hacer es colocar
el pulsador las dos patitas del pulsador cómo se ve en esta imagen vamos a colocar una resistencia de
un cabo mayor en cualquiera de las dos patitas del pulsador o sea en la misma columna y llevaremos ese
punto opuesto de la resistencia
a positivo a 5 voltios.
Esa es nuestra resistencia de Pulau está manteniendo arriba todo el tiempo la señal luego directamente
lo que queremos hacer es esa señal enviarla a Graham cada vez que presionamos el pulsador vamos a poner
el ámbito que puse desde la segunda pata a gran de la Fuente.
Por supuesto estoy trayendo desde mi placa Arduino desde 5 Volt y Grown 2 cables para alimentar la fuente
de la Protocol ya tenemos el pulsador
solo nos estaría faltando llevar de la pata a donde está la resistencia de la pata del pulsador o dónde
está la resistencia Pulp un cable que lo vamos a enchufar en la salida en este caso lo vamos a usar
como entrada digital Número 3 vamos a trabajar ahora con un poco de código bueno como primera medida
vamos en el ZetaP a declarar en qué modo va a trabajar el puerto digital en cuestión nosotros conectamos
el pulsador en el PIN 3.
Entonces vamos a poner Pimod
tres coma y ahora le debo decir en qué modalidad imput.
Por qué imput porque lo voy a usar como entrada quiero leer qué valor llega ahí.
Bueno una vez que hice esto voy a declarar una variable llamada Estado pulsador que va a ser igual a
digital real.
Esta es la función que vamos a usar para leer el estado digital de ese pin y qué Pin quiere leer en
tres bueno para poder ver qué es lo que está leyendo.
Simplemente serial punto.
Print Levene y le paso la variable estado pulsador vamos a ser simple esta vez lo voy a grabar en la
placa y rápidamente voy a abrir la consola por qué veo un 1 por qué no estoy presionando el mismo no
bien lo presione ven como rápidamente cambia cero sueldo presiono suelto presiona
Bueno sepan de qué a veces puede que sea más apropiado acá usar una variable de tipo booleana que solo
posee dos valores Tru o Fool's grabó
no y de la misma manera veo uno o cero.
Sucede que la representación por la terminal de Tru o Fool's es de esta manera uno o cero no va a aparecer
la palabra Tru o Fool's.
Sepan eso.
Bueno podría mejorar un poco esto que tengo acá de la siguiente manera
vamos a crear una variable de tipo string llamada Estado directamente y luego voy a decir esto.
Si estado pulsador igual a tu qué voy a decir voy a decir que Estado el string va a ser igual a no presionado
dijimos si hay un 1 o un Tru es no presionado cuando lo presiono como estoy enviando a tierra o a gran
la señal vamos a contemplar lo opuesto.
Y ahí voy a decir Estado igual a presionando se acuerdan de él.
No es si estator pulsado igual.
O sea si tengo un 1 quiere decir que no está presionado.
Si pasa lo opuesto esto es este el que pongo acá sería lo mismo que volver a poner un estado pulsador
igual a folles.
Bueno esto es una manera más elegante de hacerlo más eficiente y ahora lo que quiero imprimir ya no
es Estado pulsador julianos sino este string que se llama Estado.
Vamos a ver como luce ahora va a tener un poco más de sentido
no presionado porque no lo estoy apretando y no bien lo presione presionado no presionado presionado
o presionado
Bueno entonces vamos a ser un poco más complejo esto y lo que yo voy a agregar es como ven en esta imagen
en la proto Bor un LED y lo conecto con la configuración que vengo usando siempre ya cada vez.
Esto nos tiene que ser un poco más familiar y es lo siguiente pauta negativa del LED rápidamente con
inalambrico al negativo de la Fuente negativo que obviamente se va elgran de la placa arruino el positivo
del dedo la pata larga a través de una resistencia lo conecto con un cable hacia en este caso yo elegí
ustedes elijan lo que quiera yo elegí la salida digital 5 ahí me siguieron.
Bueno vamos a trabajar con ese LED en combinación con lo que venimos haciendo entonces lo primero que
vamos a hacer es Pin mod Pin 5 output para qué.
Para declarar ese PIN como una salida digital.
Vean que por razones de practicidad yo estoy poniendo directamente los números de los pines.
Recuerden que cuando se metan en un proyecto de una envergadura mayor lo ideal va a ser que usen variables
para nombrar esos leds o puertos.
Va a ser mucho más prolijo y les va a ayudar a no perderse cuando su código cobre un tamaño de importancia.
Entonces para darle más elegancia acá en vez de no presionado vamos a poner apagado impresionado vamos
a poner
encendido.
Bien sigamos vamos a agregar luego luego de modificar la variable vamos a agregar lo siguiente.
Digital Right.
Quiero hacer que el LED que está en el PIN 5 se encienda.
Pablo no Pablo que se apague.
Lo contrario.
Ahora si de manera rápida y eficiente copio esta línea y la voy a pegar y acá le estoy diciendo que
se encienda bueno entonces grabo vamos a probar esto.
Y cómo ven dice apagado encendido y al mismo tiempo que lo presiono el LED se enciende.
Y se apaga.
Bueno la verdad no quiero perder esta oportunidad porque en cada clase vamos a tratar de desarrollar
un poquito más eso que siempre insisto que es nuestra intuición nuestra capacidad de resolver problemas
de cómo vamos a usar los algoritmos para resolver necesidades de la vida real porque más que programadores
somos solucionadores de problemas.
Así que bueno despertar el ingenio quiero hacerla un poco más complicada a esta tarea y yo lo que quiero
ahora no es que se mantenga encendido mientras presiono y se apague cuando suelte sino que en cuanto
toque el pulsador una vez haga un tic si está apagado o se encienda y si está encendido se apague.
Cómo vamos a hacer eso.
Bueno de la siguiente manera.
En primer lugar eso me está molestando algo que quiero que arreglemos juntos y es vamos a aclarar este
tema de INTT LED y declares a una variable LED con números y ya me empiezo a confundir vieron que hace
falta leer el LED lo tenemos en el PIN 5 perfecto Hint un botón igual a 3 están el PIN 3 entonces ya
tranquilamente puedo poner acá botón acá pongo el LED.
No me voy a confundir más acá ya estoy leyendo el valor del botón en vez de el número 3 borro acá borro
acá.
Entonces vamos a hacer lo que dijimos es muy sencillo voy a decir lo siguiente Si estado de pulsador
previamente en la línea anterior miren yo leí el estado del pulsador y lo guardé acá en una variable
es igual a fouls.
Recuerden que si es igual a Fool's quiero decir que está presionado.
Si es igual a Fool's por qué si es igual a Fool's quiere decir que presionado porque el Fool's es un
cero.
Si lo presioné en esos 5 voltios Agron y estoy mandando un cero a la entrada.
Entonces si estaba pulsadores y a Fool's voy a volver a preguntar algo.
Quiero saber cómo está el LED porque si está encendido lo quiero pagar y si está apagado lo quiero prender
bien para preguntar cómo está el LED.
Voy a usar una manera similar a como leía el estado del botón Perojo como el LED es un pin que está
declarado como salida en realidad no estoy haciendo leyendo la señal que tengo ahí estoy leyendo el
Estado que está grabado en ese puerto es algo parecido pero la final no sirve porque voy a saber si
me devuelve esta pregunta.
Un Tru quiere decir que el led va a estar prendido y un Fool's que va a estar apagado.
Entonces digo si al leer el estado del LED
es igual a toro.
O sea si el LED está encendido
lo quiero apagar es decir a poner cuando lo vaya a prender.
Voy a aprovechar para decirles algo porque muy pronto van a leer código de otras personas y van a confundirse
rápidamente cuando vean que esto que acabo de escribir acá por lo general se escribe así cuando yo quiero
preguntar cuando algo sea Fool's lo puedo preguntar así o la versión corta sería esta con la negación
adelante.
Son indistintos la que ustedes quieran para mí es correcta pero muchos usan la versión corta y acá pasa
lo mismo.
Yo puedo preguntar si el LED está encendido o simplemente hacerlo así.
Digo if Diz digital Ried LED eso si quiere decir lo mismo que igual Atrus.
Yo le voy a dejar completo por ahora pero es probable que más adelante usemos las versiones cortas.
Ahora bien dijimos si está encendido lo quiero pagar entonces vamos.
Digital Right Lev Koma Low porque lo quiero.
Si estaba encendido lo quiero pagar y si estaba apagado no quiero prender.
Vamos a encender acá pongo perfect.
Vamos a ver como anda esto lo grabo
yo presiono y si a veces se prende a veces se apaga queda como medio extremo.
No sé.
Uno de cada 5 funciona como quiero y lo demás no pasa nada.
Qué puede estar pasando.
Vamos al código 0.
Qué sucede acá estamos chequeando si pulsamos el botón cuando lo pulsamos.
Preguntamos si el LED está prendido para pagarlo.
El problema está en que supongamos que está prendido listo.
Ahí nomás lo apago.
Pero como yo sí o sí mantengo unos milisegundos más apretado el botón.
Por qué.
A comparación del microcontrolador mi respuesta presionando el botón es lenta lo que va a pasar es si
lo apago.
Pero ahí nomás vuelve a preguntar y me lo va a encender no me da tiempo.
Entonces vamos a usar algo que se llama La técnica es anti rebote pero es nada más y nada menos que
luego de que lo apague generará un Dilthey para que el microcontrolador no haga nada y me dé tiempo
a soltar el botón.
Voy a poner uno ahí y ahí vamos a poner otro Dilthey acá quizás sea demasiado grande con menos Bandar
mejor.
Estos Dilthey tan grande pueden hacer que no tenga una buena respuesta pero miren como verán ahora si
presiono presiono presiono pero eso anda bien.
Pero como el dilema es demasiado grande si se presionan muchas veces seguidas es como que demora en
reaccionar vamos a achicar un poco.
Con esto creo que estamos vamos a poner 100 milisegundos quizá sea demasiado poco.
Vamos a ver pero vamos.
Bueno ustedes van a encontrar también el valor ideal.
Estas son cosas que se ensayan no hay ninguna receta no es más corta.
De hecho si lo dejo apretado bien o no vamos a ponerle 500 con 500 creo que estamos bien gravó.
Por supuesto si lo dejo presionado va a parpadear.
La verdad que para mí ya está justo ahí.
No podemos pedirle más.
Bueno en el próximo capítulo vamos a ver una capacidad muy interesante que tiene el ADN mega 3:28 en
su interior que bien nos viene justo para lo que estamos haciendo y se van a sorprender se van a sorprender.
Gracias por acompañarme en este capítulo.
Nos vemos en el siguiente chocho.