Felix Maocho

Para quien le interese lo que a nosotros nos interesa

Curso de Arduino – Uso de los pines digitales como entrada (INPUT).

 

 

pines digitales

Por Félix Maocho
17/5/2016

=========================================

Este post se ha desarrollado en dos partes:

La primera destinada a explicar los interruptores en general y los pulsadores en particular que encontrará  aqui   

La segunda centrada en el manejo de pins digitales como INPUT que encontrarás aqui 

=========================================
..

Objetivo de este capítulo

Aprender a utilizar los pines digitales como detectores del paso de corriente por otros circuitos.

Material necesario

  • Tarjeta Arduino y cable de conexiones
  • Tarjeta de prototipado o “protoboard”
  • Cables de conexiones
  • Resistencia de 220 Homios
  • Dos Led
  • Un pulsador

Conocimientos previos necesarios

  • Saber utilizar los pines digitales de Arduino como salida OUPUT
  • Uso de las funciones del sistema “pinMode”, “digitalWrite” y “delay”

Todos estos conocimientos se explican en detalle en los capítulos anteriores del Curso de Arduino

Sensores y actuadores

En el capítulo anterior practicamos el uso de los pin digitales como puntos de control de la salida de corrientes de 5V y manejamos el más sencillo de los actuadores el led, que luce cuando se permite el paso de la corriente y permanece apagado cuando no pasa corriente. En este capitulo, vamos a aprender a manejar sensores, que son los aparatos que “avisan” a Arduino, de los cambios ocurrido en su entorno, para que en función de esos cambios, “decida· que acción ha de ejecutar y en función de ello, ponga en marcha los “actuadores” necesarios para llevarla a cabo. Es algo semejante a como actuan los cuerpos vivos, hay una serie de sentidos,  (sensores), que informan al verebro, (contolsdor), qué ocurre en su alrededor, para que el cerebro, mande a los músculos y otrs órganos capaces de actuar, como por ejemplo la voz, (actuadores) que ejecuten aquello que sea adecuado de acuerdo con los cambios del entorno.

Con ello entramos en un nuevo mundo, el de la automática y la robótica, donde los objetos que creemos, dejen de ser meros autómatas que repiten incansablemente aquello que les hayamos programado, como ocurría en los ejemplos del faro y el semáforo que hocinos en el capítulo anterior. para entrar en la confección de objetos que “reaccionan” a los cambios de su entorno, actuando de forma diferente, de acuerdo a lo que “deducen“ de los cambios observados.

El más sencillo de los “sensores”, el equivalente al led en los actuadores, es el pulsador, botón, o “push button”, que por todos estos nombres se conoce, habitualmente lo llamaré pulsador, pero si hay que buscar en Internet. utilice la palabra “push button” pues es como localizará mas fácilmente toda la información que hay (generalmente en inglés), sobre el tema. El pulador es un equivalente mecánico y muy burdo de nuestro sentido del tacto. ot la presión que e ejerce sobre él.

Pulsador

El ejemplo más común d pulsador es el timbre de la puerta de la calle, un botón que mientras se oprime, (o pulsa), deja pasar la corriente y hace que el timbre suene y cuando deja de oprimirse, corta el paso de corriente y deja de sonar el timbre.

pulsadoresPese a su sencillez, permite variedad de controles diferentes. En el mismo descansillo de la escalera, encontraremos además del pulsador del timbre, el pulsador que enciende la luz del descansillo y mantiene encendida por un cierto tiempo la luz del descansillo de la escalera mediante un sistema mecánico o digital, y aunque no hay pensado en ello. también es un simple pulsador el botón que llama al ascensor y el botón que hace ir al ascensor a la planta que deseemos. Todos los botones que pulsamos suelen ser o pulsadores, si sólo actún mientras pulsamos el botón o interruptores que son pulsadfores que tiene dos fases permanentes o dejan pasar la corriente o la cortan y al pulsarlos pasan de una a otra.

Como observarán, el uso de un pulsador es muchísimo mas amplio que el simple abrir y cerrar un circuito, es en general el sistema más sencillo que tenemos los humanos de comunicar nuestros deseos a un aparato controlador, que maneja el funcionamiento algún aparato, en este caso. algo tan sencillo como el encendido de una bombilla durante un determinado periodo de tiempo, o tan complicado como el llegar un asesor a una determinada planta y abrir la puerta del mismo. El pisador pone el mundo al alcance de la punta de nuestro dedo.

Generalmente los pulsadores que se utilizan en los circuitos electrcos y digitales tiene el aspecto de un botón situado en lo mas alto de su cabeza que invita a ser pulsado y dos terminales en el extremo más interior que habitualmente no queda a la vista de la personas donde se conectan los cables de un circuito eléctrico o electrónico

Cuando pulsas el botón se cierra un circuito que entra por una de las “patas” del pulsador y sale por la otra “pata”- Se suele presentar con varios esquemas, que simulan su trabajo, dar paso a la corriente cuando se pulsa, (los mas normales, como el esquema de la izquierda), o mas raros. pero existir existen, que cortan la corriente cuando se pulsan pero la dejan pasar habitualmente, (como indica el esquema de la derecha,

Estos son los pulsadores que normalmente encontraras en cualquier aparato eléctrico y electrónico, de la “minipimer”, a los taladros eléctricos, y en general siempre que un aparato deba entrar en funcionamiento mientras aprietas el botón y en aquellos que funcionan de forma diferente en función del botón que pulsas, o las veces que repites la pulsación. Como primer ejemplo pongo el ascensor, como segundo el termostato de la vitrocerámica que aumenta la temperatura según mantengas pulsado más tiempo el pulsador.

pulsador arduinoSin embargo, los pulsadores que habitualmente utilizarán en sus montajes de prototipado, (y los que yo aconsejo que se utilice), no tiene este aspecto, son como una “cucaracha” negra de cuatro pata que tiene un botón en el lomo. que se caracteriza porque en vez de dos patas tiene cuatro, como el de la imagen que pongo a continuación.

Hay dos preguntas que por obvias, nadie tiene a bien ni siquiera plantar, pues todos dan por supuesto cualquiera sabe algo tan sencillo, pero que al menos a mi, me costó llegar a entender. Estas preguntas son ¿Cómo es que tiene cuatro patas si evidentemente tiene bastante con dos’ y puesto que tiene cuatro patas ¿Se puede conectar los circuitos a cualquiera par de ellas?.

¿Porque tiene cuatro patas?

La primera pregunta ¿Por qué tiene cuatro patas, si solo necesita dos? – Realmente la ignoro , pero sospecho que la respuesta es que es una solución realmente práctico. .El pulsador en un prototipado no va a ir soldado ni sujeto de ninguna forma, si tuviera solo dos patas, tendría poca base en proporción de su altura y al presionarlo, podría doblarse de lado y romperse con facilidad, mientras que si tiene cuatro batas, su base es más amplia y al presionarlo, lo único que haremos es apretar todavía más contra la tarjeta “protoboard”, cada una de sus patas. Son por ello mucho más estable,

¿Qué patas hay que conectar?

Descubierto que ello es solo un problema de mejorar la estática del aparato, la duda es ¿en cual de todas las patas tengo que unir a la entrada y de que pata tengo que unir la salida?.

Para aclarar esta duda lo mejor es que comprendamos el funcionamiento del pulsador. Para ello vamos a hacer un circuito y probar para que valen las cuatro patas que tiene el pulsador:

En el experimento que propongo a continuación, la placa Arduino solo nos va vale como suministradores de energía a 5 voltios, es decir que lo mismo conseguiríamos conectando directamente a la placa protoboard, una pila eléctrica de sV. o el cargador de un móvil que tuviera 5 voltios de salida, el procesador de la placa no va a hacer absolutamente nada y únicamente la utilizo como fuente de energía por comodidad.

Ya hemos visto alguna vez que los pines situados en el lado contrario a los pines digitales o pines marcados del 0 al 13 se dividen en dos grupos, Un grupo de seis pines son los pines analógicos marcados como A0 a A5 y otros que se agrupan bajo la palabra POWER es decir energía. Si estudias este último grupo, veras dos pines marcados como “GND ”, que hemos utilizado en experimentos anteriores como “polo negativo”, “tierra”, o “cátodo” de la placa. Deduciremos que estos dos pines son exactamente igual que el del otro lado y en efecto son pines de “tierra”.

Justo al lado de esa salida “GND” se encuentran dos pines marcados como 3V y “5V” . Eso nos indica que suministra de forma continua y sin necesidad de programar nada 3 y 5 voltios respectivamente. En consecuencia, si montamos un circuito que empiece en la salida marcada como “5V” y que acabe en cualquiera de las dos salidas marcadas como “GND”, circulará por él, electricidad a 5 voltios.

Como primera medida para comprobarlo, vamos hacer ese circuito poniendo en él, lo único que hasta el momento conocemos bien, la resistencia de 220 homios y en serie un led, pues si circula electricidad por el circuito, el led tiene que lucir de forma fija sin necesidad de hacer funcionar ningún programa. Os pongo el esquema para mayor claridad, (como siempre pintado con el programa gratuito Frizting).

6_1_pulsador_1_circuito_5V_bb

Si montas este circuito, observarás que en efecto el led luce de forma continua, con solo enchufar la placa al puerto USB, sin necesidad de haber escrito, complicado y cargado un programa. Las salidas “5v” y “GND” permiten hacer un circuito exactamente igual que como lo harías poniendo los cables que enchufas ahí directamente a los polos “+” y “ –“ de una pila de 3V.

6_1_pulsador_2_circuito_5V_bb

 

Comprobado esto pasemos al siguiente punto, sustituir el cable amarilla por el pulsador. ¿Cómo? Pues si vemos las patas del pulsador veremos que salen por dos lados opuestos del cuadrado negro, estos lados son los que colocamos a caballo entre las dos áreas centrales de la placa “protoboard”, de modo que cada pata esta situada en un cable interno vertical de cada uno de los lados como indica el esquema.

6_1_pulsador_3_circuito_5V_bb

El pulsador esta ahora conectado al circuito por la pata inferior izquierda y la pata superior izquierda. Puede ocurrir que pese a no apretar el pulsador pasa corriente como lo demuestra que el led esté encendido. Por tanto estas dos patas están conectadas internamente, igual pasa, (compruébenlo porque experimentando es como aprende), si los cables azules acaban en las las inferior derecha y superior derecha.

En cambio si los cables entran por las patas de un lado y salen por la del otro el pulsador funciona correctamente como indica el esquema, Igual pasaría, (compruébalo porque experimentando es como aprende), si los cables azules acabaran en las dos patas inferiores o en las dos superiores.

De ello se deduce que el pulsador es simplemente y en esquema, dos cables paralelos y el botón que conecta uno con otro según se apriete o no tal como indica este esquema.. donde claramente se ve, que sea el la esquina que sea que unes a un cable del circuito, para que el interruptor funcione ha de conectar el otro cable en cualquiera de los extremos de la otra barra.

planos del pulsadorSi abrimos un pulsador nos encontramos con dos cables en un que forman las cuatro patas del pulsador y sobre ellos un circulo de metal pegado a una esponja de goma, que es el muelle que separa el circulo de metal de los dos cables cuando dejamos de oprimir.

Por ello el esquema mas claro par este tipo de pulsadores es el que sigue:

pulsador-esuema1Conociendo ya como es un pulsador pasamos a estudiar como le podemos utilizar. Indudablemente como ocurre en este ejemplo que hemos montado, un uso del pulsador es poder abrir y cerrar un circuito con un led un zumbador o un motor, a voluntad, de forma que el aparato funcione o no según apretemos el botón.

Posiblemente en algún montaje queramos tener controlado un aparato por un botón, no obstante, este uso será minoritario y raro, pues teniendo una placa especializada en abrir y cerrar circuitos, resulta claramente innecesario el uso de un pulsador manual, que por otra parte, nos obliga a estar oprimiendo el botón durante todo el tiempo que deseemos tener el circuito cerrado.

esquema pulsadorSin embargo en otros pulsadores no ocurre esto. Pese a tener cuatro patas, cada pata es independiente de las demás y todas resultan conectadas a la vez al apretar el pulsador, por tanto, sea cual sea el par de patas que conectes, en estos pulsadores, estarán desconectadas si el pulsador no se oprime y quedarán conectadas, si se oprime. Este es el caso del pulsador que yo utilizo como pueden verlo en el video que se acompaña.

Lo primero será mmontar un circuito como he dicho y probar qué tipo de pulsadores tenemos en nustro caso concreto y actuar de acuerdo con su funcionamiento.

Para ese trabajo es más eficaz el interruptor, como las llaves de la luz que un pulsador. De hecho en la vida real se utilizan de esa forma muy poco los pulsadores, que y recuerde , en los timbres, las minipimer y los taladros, en la inmensa mayoría de los aparatos se instala un interruptor del tipo I-O que en una posición permite de forma continuada el paso de la electricidad y en ella otra posición impide el paso.

Aunque no lo parezca, el pulsador se utiliza mucho más, como la forma de indicar a un aparato que realice una tarea que ya tiene programada, pesemos por ejemplo las botoneras de un ascensor 0 los cien botones de un telemando. Un pulsador se utiliza habitualmente como elemento comunicador con las máquinas de lo que deseamos hacer, por ello es un sencillo sensor de la maquina, mediante el pulsador la máquina siente la presión que se ejecuta.

Un uso lógico del interruptor es utilizarlo para indicar a la tarjeta, cuando queremos iniciar o finalizar una acción determinada. Por ejemplo, cuando queremos encender una luz y cuando la queremos apagar. Si conseguimos que la tarjeta detecte cuando hemos oprimido el pulsador, podemos hacer que si el led esté apagado, se encienda, y si esta encendido, se apague, sin necesidad que durante todo el rato que esté encendido estemos apretando el botón del pulsador. En resumen podemos utilizar el/los, pulsador/es para indicar a la máquina cuando deber modificar su forma de funcionamiento.

 

En este uso, el interruptor como hardware tiene que venir acompañado en el software de un mandato condicional del tipo “Si oprimió el botón, haz tal cosa”: Entonces lo primero que tenemos que saber es como se entera la tarjeta que hemos oprimido el botón

Pins utilizados como entrada (INPUT)

Hasta ahora e hemos utilizado los pin en modo salida. (OUPUT). es decir indicando con la función “pinMode” y el parámetro “OUTPUT”, que permitiera la salida de una corriente de 5V cundo se lo indicábamos con una función “digitalWrite” y el parámetro “HIGH” o que lo impidiera si poníamos el mandato “LOW”, pero también posmos utilizar la función “pinMode” con el mandato “INPUT” ¿Que hace esa función?

Esa función hace que el pin actúe como un voltímetro, cuando se lo indique el programa lee el voltaje del cable que se introduce en el pin y si el voltaje es superior a 3,5 voltios avisa que hay “voltaje alto” (>3,5 V) y devuelve el valor “1”, si el voltaje es “bajo” (>3,5V) informa “0”, pues como es un pin digital solo tiene capacidad de decir si o no, en forna de 1 y 0

Ejemplo  de utilizacion del pin como entrada

Vemos un ejemplo, Hemos modificado un poco el último esquema sacando un cable verde que conecta también con la salida del pulsador y termina en el PIN4 que abriremos como “INPUT” y un led que parte del PIN3 que abriremos como OUPUT.

6_1_pulsador_4_circuito_5V_bb

 

El objeto es el siguiente. Si no oprimimos el pulsador, el cable verde que muere en el PIN4 estará a 0V porque a través de la “protoboard” conecta con tierra (GRD) situada en la parte superior. Pero cuando apretemos el pulsador, commectamos el pin V5 que está en la parte inferior, el voltaje aumentará, el led lucirá pues recibirá  los 5V  y el cable quwe sale del pulsador tambiéén, (excepto el voltaje que reduzca la resistencia del led que es mínima), por lo que el segmento que está anterior a la resistencia debe estar entonces a casi 5V.

Cuando Arduino detecte que el voltaje es bajo (0) nantemos apagado el led, pero si es alto (1), lo encenderá. Por tanto, si apretamos el pulsador se encenderán los dos led, uno por haber cerrdo el circuito que parte del pin V5 y el otro porque selo manda el programa al poer en HIGH el pin 3. El programa será como el que sigue;

/* Sketch 3 Detectar cundo oprimen en pulsador
* Montaje Pull Down
* 1º Leer el pin4
* 2º Si la lectura es “1” encender el led que sale del pin 3
* 3º Si la lecturas es “0” apagar el led que sale del pin 3
* Repetir el ciclo
*/
// Área de definición de variables y parámetros
int pinout = 3;
int pininp = 4;
int valor = 0; // variable para guardar el valor de la lectura 0 = LOW 1 = HIGH
// Función setup
void setup() {
pinMode(pinout, OUTPUT); // Pin abierto como OUTPUT enciende led
pinMode(pininp, INPUT); // Pin abierto como INPUT, lee pulsador
}
// Función loop
void loop() {
// 1º Leer el pin4 y deposita el resultado en “valor”
valor = digitalRead(pinint)
// 2º Si la lectura es “1” encender el led que sale del pin 3
if (valor == 1) {
digitalWrite(pinout, HIGH); // enciende el led
}
// 3º Si la lectura es “0” apaga el led que sale del pin 3
if (valor == 0) {
digitalWrite(pinout, LOW); // apaga el led
}
// Repetir el ciclo
}

Creo que ya debe ser sencillo entender este sketch pues gran parte de las cosas ya las conocen a parte que por si mismo es muy sencillo. Obvio explicar nada del encabezamiento pues a estas alturas deben saber todo sobre los comentarios, Unicamente que l segunda linea donde dice  ” Montaje Pull Down” no entiendes que quiere decir, no te preocupes un poco más abajo lo explico.

Paso al “Área de definición de variables y parámetros”, que como única novedad iiene que por primera vez definimos una variable “valor” que se diferencia de los parámetros en que dentro del programa tomará el valor de la lectura del voltaje que haga el pin 4. Sólo puede tomar dos posibles valores que son las respuestas  a la lectura del voltaje, “1” si es alto y “0” si es bajo por lo que podemos definirla como entero “int”, y además es así como espera encontrarse la variable la función de lectura de la tensión.

Pasamos a la función “setup” que ha configurado el pin 3 como “INPUT” y el pin 4 como “OUPUT”. Podíamos no haber configurado el PIN3 como “INPUT” porque de fabrica todos los pines están cnfigurados como INPUT por lo que realmente solo hace falta configurar los OUPUT. (aconsejo que lo compruebe, sólo así se aprende), sin embargo aconsejo escribir esta función es solamente una linea más por Pin que haya que configurar como INPUT y añade mucha claridad al programa, pues resalta la función de cada pin algo que no queda claro en los esquemas.

La función que se utiliza para configurar un pin como INPUT es “pinMode”, exactamente la misma que se utiliza para abrirlos como OUPUT, ero claro esta cambiando el parámetro de salida

pinMode(numpin, INPUT)

Entramos en la función “loop” que platea un poco mas de novedades en primer lugar esta la forma de hacer la lectura de la tensión del cable que penetra en el pin la función “digitalRead” que cuando el sketch se la encuentre leerá el voltaje de cable que penetra en el pin indicado, que previamente ha de ser configurado como “INPUT” y si encuentra que la tensión es menor que 3,5V devuelve un “0” y si es mayor devuelve un “1”, Su sintaxis es como sigue

val = DigitalRead(PinInput)

“val” es una variable que recibe la lectura del voltaje, puede tener cualquier nombre, (en nuestro caso se llama “valor”), que previamente debe haber sido definida como variable numérica y entera y que solo puede recibir de la función “DigitalRead” los valores “0” y “1” unguis la tensión de cable que entra en el pin sea menor o mayor que 3,5V.

“DigitalRead” es una función del sistema que lee el voltaje de un pin. Se escribe exactamente así con las mayúsculas que se indica

“PinInput” es el numero o una variable con un valor correspondiente al pin digital que se quiere leer el voltaje que soporta que previamente se ha configurado como “OUPUT”

Utilizamos también una nueva función, la función “if” (si), que pertenece al grupo de la funciones condicionales, lo que quiere decir que las funciones situadas entre los dos corchetes *{….}” que vienen a continuación, sólo se ejecutan si se cumple una condición especificada La función se llama “if” (si) y su sintaxis es como sigue ;

if (var comp val) {…. }

“if” es una función del sistema del tipo condicional, es decir que solo se ejecuta si se cumple la condición especificada entre los paréntesis (….) que vienen a continuación

“(var comp val)” La condición consta de tres elementos ;

“var” una variable definida previamente que tiene un cierto valor, (en nuestro caso ha adquirido el valor que devuelva la función “DigitalRead”

“comp” es la comparación que hay que cumplir las condiciones aceptadas son

  • == igualdad             (x== y)        (x es igual a y)
  • != no igual                (x != y)        (x no es igual a y)
  • > mayor                     (x > y)         (x es mayor que y)
  • < menor                    (x > y)          (x es menor que y)
  • >= Mayor o igual    (x>= y)         (x es mayor o igual y)
  • <= Menor o igual    (x<= y)         (x es menor o igual y)

“val” el otro elemento de comparacion, puede ser un nñumero  un texto o una variabe

En nuestro caso utilizamos la igualdad (==). Observe que son dos signos igual (==) seguidos

¿Por qué son dos “igual” y no uno ?

Recuerda que estás en “clase de informática” y no de “clase de matemáticas”. aquí el signo igual  “=” no es el “signo de equivalencias”, sino mas bien el “signo” de transferencia de valero, (Lo que en otros campos se epresa con una flecha ←)

¿Que quiere decir eso? – Que el valor de la expresión que está a la derecha si sustituye el valor que tuviera hasta ese momento ala variable que está a la derecha

Por ejemplo

total = 3 ;

Indica que la variable “total”, (que habremos definido y posiblemente dado un valor inicial antes de utilizarla aquí), adquiere el valor 3, desde el momento que el programa ejecute esta línea. si posteriormente encontramos una expresión que dice

total = total +1;

la variable “total” pasa de valer 3 como valía hasta aquí, a valer 4 a partir de este momento, porque se ha transferido a “total” la operación matemática “total  = (3 + 1)” o sea 4

Observe que esta última expresión, es una “expresión informática”. pero no “expresión matemática”. donde esta linea seria un claro error, o en caso de aparecer en una hipótesis, la demostración al absurdo, porque “valor = valor +1” “matemática” se simplificaría quedando solo “0 = 1”, lo cual es imposible.

Por eso una linea del tipo “variable1 = variable2 + variable3” tiene sentido en un ·expresión informática, independientemente del valor que para entonces tenga “variable1”, en cambio la linea inversa “variable2 + variable3 = variable1” no tiene “sentido informático” aunque lo pueda tener “matemático” pues el programa intentara traspasar el valor de “variable1” al otro lado de el símbolo “igual” pero no sabrá como repartirlo entre las dos variables

Por eso cuando queremos utilizar en el lenguaje de programación de Arduino el concepto de “identidad”, el que tiene siempre tiene en “matemáticas”, ponemos dos igules (==) que quieren indicar que “lo de la derecha es igual a lo de la izquierda”

Cambien es diferente el signo de desigual que habitualmente en “matemáticas” se indica con el carácter “≠” y que aquí se expresa como (!=) y que quiere decir “lo de la derecha no es igual a lo de la izquierda”

Si se cumple la condición se procesan las funciones entre corchetes

Si se cumple la condición impuesta entonces se ejecutan las líneas incluidas entre los dos corchetes ({…. }), cualquiera que sea el contenido incluido entre los corchetes, pero si la condición no se cumple, entonces el programa se salta todas esas líneas de programa y continúa en la siguiente línea que venga a continuación de el último corchete de cierre “}”

Aunque aquí no se haga, ni se lo pongo para no complicar más la cosa, simplemente como información, añadiré que una función “if” puede tener en las lineas que controla cualquier cosa, como indicamos, incluso otra función “if”, esto se llama tener “anidada” otra función condicional que se ejecutarán o no las funciones comprendidas entre los correspondientes corchetes ({…}) según se cumple la condición que contiene la segunda función “if”. Por esta razón los corchetes siempre vienen por parejas y de estar anidados, los más interiores son los que forman un bloque y los mas exteriores son los que forman el bloque de funciones que contiene al “If” anidada.

Pareja de funciones “if” “else”   (!si” “en otro caso”)

También de momento, a modo de anticipo, les informo que la función “if”(si) puede asociarse a otra función llamada “else”(en otro caso). En este caso habrá por un lado un conjunto de instrucciones comprendidas entre los corchetes ({…}) del “if” y a continuación el otro conjunto situado entre lo corchetes ({…}) del “else” y o se ejecuta el primero, si se cumpla la condición exigida o se ejecuta el segundo si no se cumple, pero siempre se ejecuta sólo  uno de los dos conjuntos de instrucciones,

Como en este caso la variable “valor“ tiene que tener uno de los dos valores, “0” o “1”, podríamos haber utilizado lasa funciones asociadas “if {….} else {…}” aunque no lo hemos hecho para simplificarlo lo más posible

 

Volviendo a nuestra función “loop”,  creo que estamos en condiciones de entenderla plenamente:

void loop() {
// 1º Leer el pin4 y deposita el resultado en “valor”
valor = digitalRead(pinint)
// 2º Si la lectura es “1” encender el led que sale del pin 3
if (valor == 1) {
digitalWrite(pinout, HIGH); // enciende el led
}
// 3º Si la lectura es “0” apaga el led que sale del pin 3
if (valor == 0) {
digitalWrite(pinout, LOW); // apaga el led
}
// Repetir el ciclo
}

Observe cono los corchetes ({….}) van emparejados y como el de la función”loop” anida los de las dos funciones ·if· existentes por eso al final hay seguidos dos corchetes de cierre ·}” el primero cierra la segunda funcion “if” y el segundo todo el contenido de ls función “loop”.

Montaje Pukl Down y Pull Up

PULLUPPULLDOWN

 

El montaje que hemos hecho para averiguar el voltaje de una linea es el más habitual y se denomina montaje PULL DOWN, (tirar abajo) que como se ve en el esquema, el orden de los elementos que interviene en el circuito a investigar es el siguiente:

  1. Fuente de corriente eléctrica a 5V
  2. Pulsador
  3. Segmento de cable que acaba en el Pin que hará la lectura del voltaje
  4. Resistencia del circuito
  5. Tierra

En este caso el voltaje del segmento que se investiga estará habitualmente a 0V. pero aumenta a 5V cundo se oprima el pulsador, Sin embargo como vemos hay otro montaje posible, llamado PULL UP, (tirar arriba).  donde el orden de los componentes cabia a l siguiente.

  1. Fuente de corriente eléctrica a 5V
  2. Resistencia del circuito
  3. Segmento de cable que acaba en el Pin que hará la lectura del voltaje
  4. Pulsador
  5. Tierra

Como pueden apreciar el resultado es como si intercambiamos en un montaje PULL DOWN,  el lugar donde conectamos la corrente de 5V y la tierra  En este tipo de montajes, existe corriente a 5V en el segmento de cable donde investigamos qué voltaje hay, pero cuando pulsamos el botón el voltaje baja a 0V o sea todo es igual que antes, pero al revés.

Generalmente es preferible el montaje PULL DOWN pues someternos a la tarjeta a menos stress eléctrico, sin embargo el montaje PULL UP es imprescindible cuando el objeto del control no es tanto detectar si pasa o no electricidad por un determinado circuito, como si en ese circuito que estamos controlando ocurre una caída de tensión. Por ejemplo, imaginemos que querenos establecer alguna alarma para cuando falla la luz en un circuito, por ejemplo, queremos encender luces de emergencia, con un montaje PULL DOWN, si el origen la corriente cesa, no detectaremos el fallo, pero si lo haremos en el segundo caso, pues cuando falle la corriente detectaremos que el segmento queda a 0V.

Pongamos un ejemplo que aclare un poco la cosa. Comenzamos por modificar el circuito anterior.

Mantenemos el led que nos informa si pasa o no corriente por el circuito, también colocamos la resistencia de 220 homios y a continuación el interruptor, Sólo cambiamos el punto pot el cual alimentamos al led pordonde antes introducíamos la corriente que salía el pinV% colocamos la tierra y por donde salía la tiera colocamos el cable que parte del pin V5.

6_1_pulsador_5_circuito_5V_bb

 

Por tanto si pretendemos en este caso encender un led cuando pase corriente por ese circuito deberemos encender el led 4 cuando detectemos que el segmento que estudiamos esté en baja y viceversa por tanto el programa será.

/* Sketch 3,a Detectar cundo oprimen en pulsador
* Montaje Pull Up
* 1º Leer el pin4
* 2º Si la lectura es “0” encender el led que sale del pin 4
* 3º Si la lecturas es “1” apagar el led que sale del pin 4
* Repetir el ciclo
*/
// Área de definición de variables y parámetros
int pinout = 3;
int pininp = 4;
int valor = 0; // variable para guardar el valor de la lectura 0 = LOW 1 = HIGH
// Función setup
void setup() {
pinMode(pinout, OUTPUT); // Pin abierto como OUTPUT enciende led
pinMode(pininp, INPUT); // Pin abierto como INPUT, lee pulsador
}
// Función loop
void loop() {
// 1º Leer el pin4 y deposita el resultado en “valor”
valor = digitalRead(pinint)
// 2º Si la lectura es “0” encender el led que sale del pin 4
if (valor == 0) {
digitalWrite(pinout, HIGH); // enciende el led
}
// 3º Si la lectura es “1” apaga el led que sale del pin 4
if (valor == 1) {
digitalWrite(pinout, LOW); // apaga el led
}
// Repetir el ciclo
}

Como ven este y el otro programa son exactamente iguales salvo que uno manda encender el led cuando detecta que el voltaje sube (Pull Down) y en el segundo caso enciende el led cuando detecta que el voltaje baja (Pull Up). Sin embargo no hacen exactamente lo mismo.

En ambos casos si pulsamos el botón se enciende el led que hay puesto de testigo de corriente en el circuito del botón y a la vez se enciende el led alimentado por el Pin 3 lo que indica el aparato se ha “enterado” de que hemos pulsado el botón. Sin embargo en este último caso también se enciende el led  del Pin 3 cundo sacamos el cable del Pin v5, aunque lógicamente el led testigo no se enciende porque no recibe corriente. Esta es la diferencia esencial, entre el montaje PULL DOWN y el PULL UP, utilizaremos el primero cuando simplemente queramos saber a que tensión esta sometido un determinado segneento de cable, pero utilizaremos el montaje PULL UP cundo queramos detectar las caídas de tensión provocadas o fortuitas de un circuito.

Repaso

Como repaso final te diré lo que has aprendido hoy

  • Que se un sensor
  • Qué es pulsador
  • Porqué tiene cuatro patas
  • Cómo se conecta un pulsador
  • Para que se utiliza un pulsador en a mayoría de los casos
  • Definir un pin como OUTPUT
  • Uso de los pines de Arduino como sensores del voltaje de un circuito
  • Montaje Pull Down
  • Montaje Pull Up
  • La función condicional “If”
  • Las diferentes comparaciones que se admiten en la función “IF”
  • El símbolo = como asignación de un valor a una variable1
  • El símbolo == como comparación de identidad de dos variables
  • Es símbolo != como compararon de diferencia de dos variables

Ejercicios

Si ha llegado a este punto con razonable aprovechamiento deberá saber resolver estos ejercicios que le propongo

1 – Simplificar el software del Semáforo con el uso de la función “if”

Utilizar la función “if” para reducir el número de líneas del 2º Ejercicio de uso de pine ódigitales de Salida OUPUT – Semáforo

2 – Luces de emergencia

Se desea encender la luz de emergencia en el momento que ses pulse un botón. También se pretende que las luces de emergencias se enciendan tan pronto como falle la luz en el circuito principal.

3 – Temporizador luminoso

Para un descansillo de una escalera se desea que cuando se pulse el botón la luz se mantenga encendida un minuto, apagase a continuación.

4 – Luces de alarma intermitentes

Mientras se abre y se cierra una puerta queremos que permanezcan encendidas unas intermitentes luces de peligro

5 – Linterna multiuso

Queremos construir una linterna multiuso que funcione de la siguiente forma

  • La primera vez que se pulse el botón se enciende un led blanco
  • La segunda vez que se presiones se encienden a la vez tres leds blancos
  • La tercera vez que se presione se enciende un led rojo
  • La cuarta el led rojo se pone intermitente
  • La quinta apaga todas las luces de la linterna

Estos ejemplos los presentaré resueltos próximamente. Posiblemente mi solución sea diferente a la suya, porque hay muchas formas de hacer lo mismo. Si la tuya funciona de acuerdo con las especificaciones que he dado, tu respuesta es válida. No obstante, hay siempre una solución que es más elegante que las otras, y posiblemente esa sea la mía, porque tengo más experiencia, pero no es seguro, puede que haya quien encuentre una solución mejor.

¿Que hace que una solución sea elegante? – La economía de medios y la claridad, la solución más corta, que menos y mas pobres medios utiliza de la tarjeta y la que es mas clara y está mejor documentada es más elegante. Tenga en cuenta que lo que yo escriba, tu tienes que entenderlo, es fundamental ser claro, porque programar suele ser labor de equipo y el equipo, tiene que comunicarse perfectamente.

Con mucho gusto recibiré en mi buzón sus soluciones, mandame el texto completo de tu sketch (haga copia /pega en su email) y si es posible mandame una filmación del resultado de la prueba. Aquí tiene mi dirección e mail faocho@gmail.com.

Por último ¿Se da cuenta de la velocidad con que se aprende Arduino? Creería posible que con solo tres lecciones y conociendo únicamente seis funciones pudiera hacer una linterna multiuso, un temporizador y unas luces de emergencia.

Félix Maocho

indice

Anuncios

17 mayo 2016 - Posted by | Curso de Arduino | , , , ,

Aún no hay comentarios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: