Hola bienvenidos a un nuevo capítulo de este curso donde vamos a habrá un poco de operadores matemáticos
de comparación condicionales y qué raro que suena lo que estoy diciendo pero no se preocupen que es
más fácil de lo que parece.
Bueno vamos a usar para trabajar la última configuración así la probamos.
Me refiero a la configuración de cómo usamos las ventanas.
Recuerden que esto mismo lo van a poder hacer solamente con la idea de Arduino pero en esta oportunidad
lo que vamos a hacer es abrir Atom.
Ya lo tengo listo por acá después de abrir Arduino y hacer clic en el icono de Arduino y si no hicieron
otra cosa se les va a abrir en el último proyecto en el que trabajaron variables como yo tengo un Arduino
conectado puedo apretar Control Shift M o comando Shift.
En mi caso porque tengo Mac y se va a abrir la consola yo por lo general cómodo hacia la derecha.
La consola tiene algún botón como limpiar la pantalla acá tengo que acá tengo un botón para un selector
un botón o un selector para elegir la velocidad con o sin ajuste de línea.
Ya vamos a ver qué quiere decir eso.
Vieron que no hay muchos datos.
Se empieza a estropear o se empieza a enrollar la pantalla.
Los datos van subiendo y se pierden por arriba.
Bueno si yo quiero leer algo y que se quede quieto aunque estén apareciendo nuevos datos destino el
auto scroll es muy útil así que yo por lo general me acomodo así no me gusta que ocupe tanto porque
por ahora no lo uso.
Fíjense que la parte del código de esta ventana yo le dejo bastante chica porque a mí lo que más me
interesa es ver esta parte a donde me muestra los posibles errores Bueno de hecho que si compile bien
me tendría que compile vamos a probar si compilation pero es el programa viejo que habíamos hecho la
vez pasada así que vamos a ir.
Recuerden que en Mac es un poco distinto en Windows los menús aparecen pegados a la ventana en la que
estoy trabajando en Mac aparecen siempre en el mismo lugar.
Entonces como yo tengo activo esta ventana el menú que veo aquí a la izquierda corresponde a Arduino.
Entonces voy a ir a archivo de Arduino.
Voy a hacer un nuevo proyecto.
Se abre una nueva ventana.
Ya puedo cerrar tranquilo de atrás la cómodo pero tiene un nombre provisorio genérico y yo le quiero
dar el nombre de lo que vamos a hacer ahora entonces yo tendría que ir al Archivo Guardar como para
agregarle con otro nombre pero aparece como Grid como desactivado aparece el guardar cómo.
Entonces lo que está sucediendo es lo siguiente Me tengo que ir a Preferencias.
Ustedes probablemente tengan preferencias en archivo acá de esta preferencia en Mac sale acá en este
menú que se llama Arduino.
Voy a preferencias me voy un momentito a usar editor externo lo destinado por un momento.
Ahora sí Art chivo guardar cómo o contra si ese es lo mismo.
Entonces ahora si me va a permitir ponerle un nombre distinto y le vamos a poner a esto operadores para
ser genéricos y simples operadores.
Listo.
Bueno entonces ahora está listo para que si quieres tomar el camino de seguir usando el IDE de Arduino
en vez de usar esta fantástica configuración no hay problema.
Seguís escribiendo código acá.
Por supuesto como esta ventana la haces un poquito más grande pero pero Acompáñame aunque sea en este
capítulo con esta modalidad que te muestra algunas cosas y después decidí tranquilo.
Bueno qué va a pasar.
Necesito volver a dejar vuelvo a preferencias usar editor externo.
Pero como yo estuve tocando acá recién para mostrarles me pide que grabe.
Bueno bueno bueno ya grabé.
Archivo.
Preferencias preferencias y vamos a poner un editor externo.
Ok.
Ben se pone gris listo ya no puedo tocar más acá y vamos a trabajar y vamos a trabajar desde Atom.
Archivo.
Pero me vengo a Tommen cambia el menú Archivo Abrir me voy me voy a Arduino y esto se llamaba operadores
abre la carpeta DoubleClick bien.
Ya se me abrió la carpeta operadores.
Esto lo puedo cerrar en cosas que tenía de antes recuerden que para trabajar más cómodo yo puedo achicar
el árbol que prácticamente nosotros no vamos a usar el árbol de archivos tenemos uno solo así que con
éste.
Con esta pestañita yo puedo cerrar directamente la columna dependiendo de la resolución de su monitor
si les queda muy chico con control más comãn más en mi caso puedo agrandar la letra o la puedo achicar
agrandar porque sé que van a querer Verdía.
No quiero ser exagerado
empecemos a ver los operadores estoy tan ansioso por mostrarles algunas ventajas de Atom de a poquito
lo vamos a ir descubriendo.
Bueno vamos a repasar habíamos dicho que estas eran funciones ya va a llegar y ya vamos a ver qué son
funciones pero básicamente se acuerdan.
Esta se ejecuta una sola vez una sola vez que quiere decir que cuando enchufamos la placa hacemos andar
nuestro programa primero se van a ejecutar todas las instrucciones que yo pongo acá adentro.
Y después cae o entra en este Luv que no es más que el famoso bucle infinito y lo que va a suceder es
que todas las instrucciones que yo vaya colocando aquí adentro se van a repetir cíclicamente Asia va
a ser un 1 2 3 4 5 1 2 3 4 5 y voy a repetir de manera infinita.
Bueno arranquemos operadores de qué nos pueden llegar a servir las variables si no podemos operarlas.
O sea sumando restando o comparando con otras para tomar decisiones y de poco entonces para eso aparecen
los operadores.
Vamos a aprobar.
Vamos a empezar con ejemplos que es la manera más divertida y fácil de aprender y declarar un entero
le vamos a llamar.
Vamos a llamar dinero en caja
igual a cero le asigna un valor en cuanto la declaró
entonces cómo vamos a trabajar por consola para ir viendo lo que sucede.
Se acuerdan seria.
Vamos a iniciar el puerto serial en velocidad nueve mil seiscientos punto y coma.
Nunca nos olvidemos de los punto y coma mire le saco el punto y coma grabo Bence fijense aparece el
código acá funciona con Pilo y me dice Se esperaba una coma o un punto y coma cuando yo tengo un error
además de marcarme lo acá me dice hasta hasta el número de fila donde está el error o sea no hay excusas.
Esto es parece complicado pero que nadie se entere.
Cuando empezamos a trabajar esto no lo contemos demasiado.
Es fácil es fácil porque tenemos muchas muchas ayudas.
Miren me dice que se esperaba un punto y coma antes de la llave y me da como número de línea 6 o sea
me dice antes de esta llave y antes de estas llaves que tranquilamente podría haber estado ahí arriba.
Miren si las hubo con Pilo me dice que en el archivo Línea 5 en la línea 5 que me fije que antes de
esa llave se esperaba un punto y coma es este punto y cómo que me está faltando.
Pablo Sánchez Mera con pelo perfecto insisto varias cosas que no se enteren por qué es fácil.
Y en segundo término si aprendiste a programar en un lenguaje aprendiste en todos es una manera de decir.
Obviamente con lo que te estoy diciendo te quiero decir que si aprendiste C++ y bueno tenés adentro
el 80 por ciento el 70 por ciento de cualquier otro lenguaje.
No estoy exagerando.
Sigo.
Acabábamos de hacer andar el puerto serial
lo hacemos esperar 100 milisegundos para darle tiempo a que arranque ese puerto serial y vamos a empezar
a modificar algo le vamos a poner unos números.
Por qué cambié lo voy a hacer más corto para que sea más fácil de escribir.
Pero bueno quería dejar en claro que es que este es el nombre de la variable.
Bueno algo importante y dentaria se llama esto que es darle niveles o categorías o entidades a las porciones
de código y ahí empezamos lo que va entre llaves sea lo que pertenece a una función yo le voy a poner
unas líneas o un espacio una tabulación en realidad dependiendo el autor serían tres espacios pero se
utiliza la tecla Tab.
Aun así yo estoy por presionar estaba ahí lo apreté y ya se acomoda tres espacios más adentro.
Si yo por X motivo yo acá tuviera algo que ya estamos por ver por ejemplo como son los condicionales
esto es un condicional se abre y se cierra una llave y yo acá adentro voy a poder escribir código o
no el código que yo escribo acá adentro va a ir también una tabulación más adentro pero bueno y sin
darme cuenta estuve revelando algunas de las ayudas de Atom y las tengo reservada para dentro de un
ratito.
Bueno sigamos ya puede empezar a sacar cosas por pantalla.
Vamos a un operador que ya lo habíamos visto en capítulo en un capítulo anterior y es número voy a decir
el número es igual.
Yo acá estoy usando sin darme cuenta un operador de asignación cuando pongo un solo signo igual le estoy
asignando a la variable número el valor que voy a escribir de este lado del igual puede ser un número
que eso lo escribo directamente de manera literal en la jerga.
Los programadores solemos decir Jarkko digamos.
Es una manera de decirlo en español es una manera de españolizar el término o o escribir a mano.
Pero bueno no es seria el término es es cuando escribimos literal literalmente un número
u otra opción es decir que es igual a otra variable.
En el capítulo anterior habíamos dicho que números y Buela número lo hacíamos con cuenta pero lo mismo
es igual al número más 1.
Qué hacía esto en definitiva sumarle 1 a la variable número número arranca valiendo cero número vale
voy a escribir a cero entonces estoy diciendo que el número va a ser igual a lo que tenía número cuando
tenía cero
más uno.
Después de esta línea cuánto va a valer.
Número 1 Esta es una manera de sumarle 1.
También le podría sumar 10 le podría sumar 100.
5 1 el número que yo quiera ahora bien hay un operador de asignación
que nos hace la vida un poco más fácil.
Y es que es muy normal sobre todo en microcontroladores.
Sumarle 1 a una variable o necesite es muy normal que necesitemos incrementar de a uno una variable.
Entonces como eso es algo que se usa mucho tenemos una manera de describirlo rápido de una manera fácil
que sería poniendole variable y dos veces el signo más.
Esto lo que hace así como está es sumarle uno a la variable número.
O sea que si yo agarro voy a hacer lo que hacemos los programadores.
Copiar pegar pegar pegar.
Acá lo que estoy haciendo es dejar a número en un valor 4 porque le sume 4 veces el número 1 primer
operador aritmético que vimos la suma la suma después de asignación.
Por supuesto que no es aritmético es un operador de asignación
sigamos
el más más que acabamos de ver número más más viene a ser un operador mixto porque está asignando y
sumando al mismo tiempo está sumando uno.
Bueno sigamos vamos no tenemos que estar muy avanzados en la matemática para darnos cuenta que si queremos
restar vamos a utilizar un número es igual al número menos 1 por ejemplo menos 10 o menos 100 y acá
lo que estamos haciendo es restarle a la variable número el número que ponemos a la derecha.
Podría decir tranquilamente tanto para suma como para resta.
Número 2 con nuestro número lo de poner que es igual a 23 y tranquilamente puedo decir qué número es
igual a número menos número dos.
Entonces estoy diciendo que la variable número va a ser igual a lo que tenga la variable número en ese
momento que es cero menos 23.
Entonces a esta altura número va a quedar igual va a ser igual.
A esta altura a menos 23.
Esto que escribo acá no es una línea de código de código por supuesto.
Entonces podríamos ir viendo pero lo vamos a hacer un ratito en un ratito sabemos cómo sale esto por
consola y bueno de la misma manera vamos a poder multiplicar con el asterisco.
O vamos a poder dividir con la barra.
Veamos.
Voy a poder decir que puedo poner o crear
resultado y no le pongo un valor.
Que vamos a poner 32 entonces a cambio puedo decir que el resultado es igual a número dividido.
Número dos estamos haciendo una división podría ser una multiplicación pero fíjense que como de antemano
ya me imaginaba que el resultado de estos dos puede que sea un número decimal.
Si yo quiero aprovechar o captar ese número decimal ya utilicé un float un número que tenga punto flotante
algo muy importante a tener en cuenta cuando empecemos a hacer operaciones.
Tenemos que contemplar el tipo de dato en primer lugar si no queremos que se pierdan los decimales tenemos
que ser un float si no supongamos si yo he vivido 5 divido 2 Cuánto me da 2,5.
Pero si ese 2,5 lo guardo en un int en un entero solo se va a guardar la porción entera me voy a quedar
como un 2.
El resultado se va a perder la parte de la parte decimal.
Entonces volviendo como yo ya puedo presumir de que el resultado me va a dar decimal ha resultado.
A esta se llama resultado donde voy a guardar el resultado valga la redundancia de operar estos números
lo creé como float.
Algo importante es el desbordamiento.
Ojo con eso.
Y qué es el desbordamiento.
Se acuerdan que había un número máximo que yo puedo guardar en un Ninth y que si ir a corto o era pequeño
ese número no me alcanzaba tenía que usar un lonko que era otro tipo de variable bueno ojo con el desbordamiento.
Yo tengo que tener en cuenta que el resultado de operar mis variables no supera ese número máximo entonces
si por un lado tengo que ser eficiente tengo que ahorrar memoria si no a números grandes usa enteros
y si tengo miedo o sospecho de que el número a lo largo del programa va a crecer y va a superar los
máx el tamaño máximo que puede almacenar un entero que era 65000 y pico de valores estos son enteros
este tamaño son enteros en microcontroladores Arduino.
A lo mejor es cuando cuando uses C++ desarrollando programas en un ordenador aplicaciones para ordenador
por ejemplo o para móviles un entero puede almacenar mucho más números pero eso es harina de otro costal.
Si vamos con lo nuestro.
Bueno vamos a probar esto ya que estamos entonces ya tenemos claro los matemáticos vamos a decir seria
el punto print N
y qué quiero imprimir.
Es decir entre comillas.
El resultado es dos puntos de un espacio el espacio para que quede lindo y que el resultado no aparezca
pegado los dos puntos.
No hay nada no hay nada místico que haga más este más es un operador no es un símbolo de concatenación.
Cuando el más es usado entre dos strings lo que hace es unir estos strings o cadenas de texto.
Entonces más quiero pasar resultado quiero pasarle resultado el valor del resultado pero transformado
en string porque la función print LN espera que le pase cadenas de texto no espera que le pasen números
entonces acabo de poner string se acuerda.
Esta era la manera de convertir
una variable de tipo entero de tipo float en una cadena de texto string es la función y entre paréntesis
entre estos dos paréntesis le debo pasar el número que quiero convertir a texto y este paréntesis donde
salió y salió de acá.
Y qué lindo que es Seaton porque en cuanto pongo un cursor en un paréntesis ya me está marcando cuál
es el que lo cierra.
Lo pongo acá me marca el cual es el que lo cierra y con las llaves pasa lo mismo.
Bueno en esto también.
El IDE de Arduino es bastante bueno.
Marco acá de marca arriba.
Bueno probemos esto.
Controlé se grabo acá yo tengo mi programa lo voy a compilar.
No tengo ningún error genial y lo carga en la placa.
Vamos a ver qué pasa.
Como subido y tengo un problema acá miren la velocidad.
A qué velocidad trabajamos 9900 9600 baudios y yo acá tengo que ponerlo en subir para que vean su o
9600.
Ahora si
quien apareció haga el resultado es 1 punto cero cero a ver qué sucede acá.
32 dividido 23 me da uno con treinta y nueve qué pasa con los decimales.
Y lo que sucede es algo curioso y es que cuando estemos trabajando en C con Arduino la división de dos
números enteros de dos variables de tipo int siempre nos va a dar otra variable de número entero entonces.
Acá tenemos dos caminos para que la división de estos dos números nos dé el resultado con decimales.
A pesar de que esto está preparado para recibir decimales necesitamos que uno o los dos sean de tipo
flotante entonces bueno vamos a aprovechar una de las capacidades de Atom cómo es esto.
Mira clickea una vez normal ahí presiono.
En mi caso es.
En tu caso si tenés Windows es control y sin soltar presión o también arriba entonces puede borrar esto
y poner acá float Bravo cargó en la placa
mejor no fijense.
No sé si notaron que acaso le agregó un dos cuando convierto un número a través de la función de string
y pongo una coma ya que pongo un entero.
Estoy diciendo la cantidad de decimales que quiero ver grabó Carmen la placa
cómo lo ven bueno ya estamos dividiendo y vamos a pasar ahora a ver un último operador si bien hay más
operadores aritméticos estamos viendo los más usados sobre todo cuando trabajamos con microcontroladores
y si hay uno que me falta que no es de lo más usado pero sí puede que haga falta lo he usado más de
una oportunidad y es el módulo o resto.
En definitiva es lo que nos sobra después de hacer una división que no da un resultado exacto.
Entonces puedo decir que se hace de la siguiente manera declara una variable llamada el resto.
Aprovecho para aclarar que la que el operador módulo sólo funciona con enteros y va a dar resultados
enteros.
Entonces yo podría decir
que el resto es igual a 7 por ciento uso el uso del símbolo por ciento pero en realidad es en la manera
en la que representamos el operador resto 5 que estoy diciendo que me guarde la variable resto El resto
de dividir 7 entre 5.
Vamos a probar
copio y pego el resultado.
Bueno vamos a hacerla completa el resto de dividir 7 en 3 sin es y acá pongo resta.
Listo grabo carbón en la placa y veamos perfecto
hay algo que vengo haciendo pero no expliqué y ya muy pronto lo voy a hacer y se refiere al alcance
de las variables pero me remito decirles que cuando declaren variables lo hagan a Carrillo acá se declaran
y cuando las declaren después van a poder acceder o modificarlas.
Tanto en el ZetaP como en el Luv como en cualquier otra función que vayamos a crear estas variables
de acá las llamamos variables globales porque abarcan a todo el código.
Yo puedo acceder a ellas y modificarlas en cualquier parte.
Pero vamos a ver que eso puedo crear variables locales o variables que solo pertenezcan a esta función
o a ésta o a cualquier otra pero no me quiero adelantar.
Sigamos.
Ya tenemos los operadores aritméticos y se vienen los operadores de bajo arresto
si vienen los operadores de comparación los operadores de comparación.
Como su nombre lo indica sirven para comparar dos variables para versiones más grande que otra para
ver si son iguales para ver si son distintas y esto nos sirve para lo mejor o lo más importante que
tiene la programación tomar caminos tomar decisiones o en otras palabras crear algoritmos.
Si pasa esto quiero hacer tal cosa y si pasa esto otro quiero hacer esta otra cosa entonces tenemos
dos dos variables creadas y de poco nos van a servir los comparadores.
Estos operacionales de comparación si no aprendemos a dominar los condicionales los condicionales son
una herramienta para poder tomar decisiones.
Uno de los más conocidos es el condicional y el condicional if tiene una estructura que es la siguiente
con la palabra reservada if entre paréntesis voy a poner la condición voy a decir si número
es igual a número dos.
Bean apareció el primer operacional de comparación es un doble signo igual.
Eso quiere decir que si el valor que contiene la variable número es igual al valor que contiene la variable
número dos.
Por eso es de comparación.
Si eso quiere decir if si número es igual a número dos.
Y acá entre llaves voy a poner el código que quiero que se ejecute.
Voy a decir serial print n si son iguales.
Primeras
bueno vamos a probarlo.
Claro.
Acaso puse una sola línea de código.
Acaso puedo poner todas las líneas que yo quiera.
Si estos dos números son iguales o lo que es lo mismo si esta condición se cumple porque en definitiva
cuando yo comparo estos dos números esto se transforma en un valor verdadero en aquel famoso truco que
habíamos visto
si estos números son desiguales se va a transformar en un folles y no se va a ejecutar lo que esté acá
adentro.
Entonces bueno para demostrarles y que me crean que se puede ejecutar todo lo que pongo yo adentro.
Debemos agregar otras líneas más en serio
grabó pero vamos a tener un poco el código para que esto sea más entendible.
Ahí listo vieron yo creo ONIF y estas líneas las metí un poquito más adentro cuando grabo por última
vez carga en la placa y veamos el resultado.
Total mando o no.
Cómo puedo asegurar esto es algo típico tengo dos opciones o esto no se está cumpliendo y esto no anda.
O qué está pasando.
Lo primero que pasa es que en ningún momento
en ningún momento inicio el puerto sedería esto es a medida que lo sabemos de memoria así todo me pasaría
lo mismo entonces es buena práctica
poner alguna oración que me dé idea de lo que está pasando entonces esta parte se va a ejecutar sí o
sí porque es cuando arranca esto sí o sí se ejecuta una vez y después viene la consulta sin número es
igual al número 2 va a hacer esto me hago cargo en la placa y espero el resultado
bueno tengo la certeza de que la placa anda iniciando programa pero qué sucede.
Obviamente son distintos los números así que vamos a ponerlos.
23 gravó
mi obra funcionó aquí adentro puedo hacer otras cosas puedo decir
ahora qué número es igual a 100 entonces por ejemplo en el código que yo pongo acá adentro puedo poner
o puedo modificar variables.
Otra cosa que puedo hacer es volver a comparar volver a comparar o sea volver a poner otro acá adentro.
Fíjense que este no va a ir a la misma altura del código que tenía pero lo que va adentro este se va
a ir otra vez y dentado.
O sea otra vez con un Taub hacia adentro.
Acabais el nuevo Código.
Bueno quieren ver algo de Atom quieren ver algo de Atom sino miren alguna ayudita.
Es la siguiente Escribo if presiona Enter y ya me prepara el esqueleto de la estructura de Elif.
Mira él me pide IHF y ya me prepara los paréntesis y Acaya.
Le escribo así sin tocar nada derecho a la condición tal número igual a tal otro y listo y me dice Pablo
que escribir el código correspondiente Elif.
Bueno más fácil no se puede.
Sigamos con otros comparadores no vamos a hacer de nuevo súper matemáticos para descubrir que con este
símbolo estoy comparando si este número es mayor que éste menor.
Tengo mayor o igual menor o igual y distinto con éste que es así.
Este signo de migración es la negación entonces es no igual o sea distinto.
Estos son los principales
comparadores que vamos a usar
entonces.
Repasemos.
Se puedo tener si condición hago esta cosa pero a su vez yo puedo poner en el código otro a la misma
altura.
Si if número
igual número dos
era un poco esto
con
vamos un poco bien acabo de preguntar si son distintos ya que voy a preguntar si son iguales grabo entonces
estoy diciendo si son iguales el programa va a venir ejecutando línea por línea.
Bien llega acá mi pregunta número es igual al número dos.
Si son iguales se va a ejecutar esto después si no son iguales esto no se ejecuta y salta a esta línea.
Esta es la próxima pregunta.
Son distintos y si son distintos se va a ejecutar esta entonces dos números.
No tenemos muchas opciones o son iguales o son distintos así que estoy seguro que o esto o esto se va
a ejecutar probemos si funciona nuestro programa es un detector de números iguales o números distintos.
Bueno alojarlo grabamos espero resultados como era de esperar entró en estas dos líneas y se ejecutaron
porque los números son iguales.
Con sólo modificar uno grabo espero el resultado
no son iguales.
Esto no se ejecutó y si se ejecutó esto.
Bueno hemos tenido un capítulo intensísimo lo saludo fuerzas falta menos y nos vemos en la próxima.