0% encontró este documento útil (0 votos)
101 vistas8 páginas

1 5-Operaciones+Matemáticas

El curso de Arduino nivel 2 aborda la necesidad de realizar operaciones matemáticas en programación, utilizando un desafío que involucra dos pulsadores y dos LEDs. Se presenta un circuito y un código que enciende los LEDs bajo ciertas condiciones, utilizando operadores lógicos como 'AND' y 'OR'. Además, se discuten comentarios en el código y una solución para simular el circuito en Tinkercad.

Cargado por

david flores
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
101 vistas8 páginas

1 5-Operaciones+Matemáticas

El curso de Arduino nivel 2 aborda la necesidad de realizar operaciones matemáticas en programación, utilizando un desafío que involucra dos pulsadores y dos LEDs. Se presenta un circuito y un código que enciende los LEDs bajo ciertas condiciones, utilizando operadores lógicos como 'AND' y 'OR'. Además, se discuten comentarios en el código y una solución para simular el circuito en Tinkercad.

Cargado por

david flores
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

CURSO DE ARDUINO 2

Operaciones Matemáticas
Curso de Arduino nivel 2

¿ NECESITA ARDUINO REALIZAR OPERACIONES


MATEMÁTICAS ?

Veremos a lo largo del curso que en la resolución de


numerosos problemas, se presenta la necesidad de
utilizar ciertos operadores matemáticos en códigos de
programación.

Para introducirnos en el tema planteamos aquí un desafío que implique


utilizar unas operaciones matemáticas que enseguida veremos y que complementan
la función condicional if( )

PLANTEO DEL DESAFÍO


Se trata de dos pulsadores que comandarán dos led, uno verde y otro rojo bajo las
siguientes condiciones:

1. Si los dos pulsadores están presionados al mismo tiempo se deberán encender


los dos led, el verde y el rojo. La condición por lo tanto es si un pulsador está
presionado y el otro también entonces se enciende el led verde y rojo.
(téngase presente el uso de la conjunción “y”)

2. Si uno cualquiera de los dos pulsadores está presionado se deberá encender


el led rojo. La condición por lo tanto será si un pulsador o el otro están
presionados se enciende el led rojo. (téngase presente el uso de la conjunción
“o”)-
PLACA ARDUINO

PROGRAMA
CODIFICACION,
OPE RADORES
MATEMÁTICOS LEDS

PULSADORES

Elementos a vincular
Curso de Arduino nivel 2

CIRCUITO PROPUESTO

Componentes utilizados:
▪ Placa Arduino.
▪ 1 Led verde y 1 Led rojo.
▪ 2 pulsadores.
▪ 2 Resistencias 220 ohm
▪ Placa protoboard.

Pulsador 1 Pulsador 2

Aprovecharemos esta oportunidad para mostrar que


también podemos utilizar como entrada digital alguna
de las entradas analógicas A0 – A5 (ANALOG IN) de la
placa Arduino.
Curso de Arduino nivel 2

SOLUCION DE LA PROGRAMACIÓN

const int led_verde=A0;


const int led_rojo=2;
const int pulsador1=3;
const int pulsador2=6;

bool estado1=0;
bool estado2=0;

void setup()
{
pinMode(led_verde, OUTPUT);
pinMode(led_rojo, OUTPUT);
pinMode(pulsador1, INPUT_PULLUP);
pinMode(pulsador2, INPUT_PULLUP);
}

void loop()
{
estado1=digitalRead(pulsador1);
estado2=digitalRead(pulsador2);

// Usamos la operación matemática para la condición Y (and)

if ((estado1==LOW) and (estado2==LOW))


{
digitalWrite(led_verde, HIGH);
digitalWrite(led_rojo, HIGH);
}

else
{
digitalWrite(led_verde,LOW);
digitalWrite(led_verde,LOW);
}

// Usamos la operación matemática para la condición O (or)

if ((estado1==LOW) or (estado2==LOW))
{
digitalWrite(led_rojo, HIGH);
}

else
{
digitalWrite(led_rojo,LOW);
}
}
Curso de Arduino nivel 2

ANÁLICEMOS EN DETALLE LAS


INSTRUCCIONES ANTERIORES

const int led_verde=A0; Declaramos las variables const con nombres


const int led_rojo=2; “led_verde”, “led_rojo”, “pulsador1” y “pulsador2 ” y
const int pulsador1=3; les asignamos los pines donde se encuentran
const int pulsador2=6; conectados a la placa (ver circuito propuesto)

Declaramos dos variables tipo bool que permite dos


estados posibles: uno o cero, les asignamos los
nombres “estado1” y “estado2” y las inicializamos
con el valor cero.
bool estado1=0;
bool estado2=0; A estas variables no las hemos definido como
constantes (const) , ya que la idea es que allí se carguen
los valores que el programa lea en los pulsadores 1 y 2
respectivamente, que serán valores que cambiarán
según se presionen o no los mismos.
void setup()
{ A las variables “led_verde” y “led_rojo”
pinMode(led_verde, OUTPUT); las definimos como salidas y a las
pinMode(led_rojo, OUTPUT); variables “pulsador1”y “pulsador2” las
pinMode(pulsador1, INPUT_PULLUP); definimos como entradas utilizando la
pinMode(pulsador2, INPUT_PULLUP); función INPUT_PULLUP para la conexión
} de los pulsadores en esa configuración.

void loop() Leemos en qué estado se encuentra el


{ “pulsador1”y el “pulsador2” y cargamos
estado1=digitalRead(pulsador1); los valores leídos en las variables
estado2=digitalRead(pulsador2); “estado1” y “estado2” respectivamente.
Esto como se verá simplificará la escritura
del código en la función condicional if ()

Escribimos un comentario que


nos indique qué es lo que viene
a continuación.
// Usamos la operación matemática del Y (and)
En un título posterior,
explicaremos sobre la
posibilidad y forma de escribir
estos comentarios en el
programa
Curso de Arduino nivel 2
Aquí es donde aparece la
OPERACIÓN MATEMÁTICA
if ((estado1==LOW) and (estado2==LOW)) “AND”.

Hagamos el análisis de esta


instrucción por partes:

Podemos ver la función condicional en la forma: if ( (...) and (...) ) que plantea si se
cumple lo que está en un paréntesis (...) y lo que está en el otro (...) al mismo
tiempo. Es una combinación de condiciones dadas por el operador matemático and
( en inglés and = y).

Luego lo que debe cumplirse en cada uno de los paréntesis es: si en el “estado1”
está cargado el valor LOW, es decir si el pulsador1 está presionado y (and) si en el
“estado2” está cargado el valor LOW, es decir si el pulsador2 también está
presionado.

Claramente entonces la función implica la condición de que estén presionados


ambos pulsadores.

Aquí es donde se aprecia además la ventaja de haber utilizado una variable “bool
estado”, ya que de otra manera tendríamos que escribir la instrucción de la
siguiente forma, lo cual también funcionaría pero sería más extenso:

if ((digitalRead(pulsador1)==LOW) and ((digitalRead(pulsador2)==LOW)).

{ Escribe (Write) en los verde y rojo un valor alto


digitalWrite(led_verde, HIGH); (high), si se cumple la condición IF anterior . Es
digitalWrite(led_rojo, HIGH); decir, encienden ambos led si ambos pulsadores
están presionados.
}
else Caso contrario, si no se cumple la condición
{
pone el led verde en LOW, apagado.
digitalWrite(led_verde,LOW);
digitalWrite(led_rojo,LOW);
}

// Usamos la operación matemática del O(or)


Aquí es donde aparece la OPERACIÓN
if ((estado1==LOW) or (estado2==LOW)) MATEMÁTICA “OR”.
Su análisis es similar al condicional AND,
sólo que aquí es verificar si el pulsador1 o
el pulsador2 están presionados.
{
digitalWrite(led_rojo, HIGH); Escribe (Write) en el led rojo un valor alto (high),
} si se cumple la condición IF anterior . Es decir,
enciende el led rojo si alguno de los dos
else pulsadores están presionados.
{
digitalWrite(led_rojo,LOW); Caso contrario, si no se cumple la condición
} pone el led rojo en LOW, apagado.
Curso de Arduino nivel 2

DOS CONSIDERACIONES ADICIONALES A TENER EN CUENTA

1. ¿ PODEMOS ESCRIBIR COMENTARIOS EN EL PROGRAMA ?

La respuesta es sí.

Para describir y dejar comentarios sobre el programa y que no afecte la


programación se utiliza una forma particular para editar el texto.

Se trata de la posibilidad de tipiar una doble barra y un texto que será nuestro
comentario de esta manera: // texto.

La doble barra debe siempre inicializar el texto, si la misma no se coloca produce


errores en el programa porque el programa lo interpreta como un código a ejecutar.

A continuación de la doble barra podemos escribir el texto con la descripción que


queramos y que nos permita mostrar qué quisimos hacer, no sólo para que cuando
otros lean la programación entiendan qué se hizo, sino también para que a
nosotros mismos en un futuro nos sea fácil recordar en que consistió nuestro trabajo.

El doble barra y texto puede insertarse en cualquier lugar del espacio donde está
nuestra codificación, arriba, abajo o al lado de los códigos. Y en caso de necesidad
de escribir bajo renglón, cada renglón debe inicializarse siempre con un doble
barra //

Veamos un ejemplo, tomando parte de los códigos anteriores


haciendo notar que podemos poner también un título general al programa:

// Ejemplo del uso de comentarios

// Definición de las variables de entrada y salida

pinMode(led_verde, OUTPUT); // Led verde se define como salida


pinMode(led_rojo, OUTPUT); // Led rojo se define como salida

// Los pulsadores se definen como entradas y utilizamos configuración pull up


pinMode(pulsador1, INPUT_PULLUP);
pinMode(pulsador2, INPUT_PULLUP);
Curso de Arduino nivel 2

2. SOLUCIÓN A UNA DIFICULTAD CON TINKERCAD

Si construimos físicamente el circuito tal como lo hemos planteado en el circuito


propuesto con la solución a la programación, nuestro proyecto funcionará
perfectamente

No obstante en Tinkercad en forma simulada nos encontramos con una dificultad


para cumplir con una de las condiciones planteadas y es que para presionar los dos
pulsadores al mismo tiempo necesitaríamos disponer de dos mouse.

Por lo tanto para salvar esta dificultad sin realizar ningún cambio en la programación
y poder hacer la simulación en Tinkercad, reemplazamos un pulsador por un
interruptor deslizante.

Con el pulsador y el interruptor deslizante podremos simular las dos condiciones que
habíamos planteado en el desafío, fundamentalmente la condición de que ambos se
encuentren al mismo tiempo presionados, es decir en LOW.

Hemos reemplazado en el
circuito el pulsador 2 por
un interruptor deslizante,
manteniendo la misma
conexión que tenía el
pulsador 2 reemplazado.

Se puede apreciar que si


desplazamos el interruptor
hacia la derecha el mismo
Nota: Elegimos reemplazar el pulsador 2 por un
equivaldrá al pulsador 2
interruptor, pero también se podría haber elegido
presionado (low).
reemplazar el pulsador 1 con las mismas
consideraciones.

También podría gustarte