Bienvenidos a un capítulo más de este curso y en este caso ya arrancamos con programación básica en
C++.
Empezaremos viendo variables
como primera medida ya abri la idea de Arduino como Ben pero teniendo miedo a que estemos en situaciones
diferentes y a ustedes les haya arrancado con otro archivo para emparejar y que vayamos al unísono.
Vamos archivo nuevo y van a ver que se abre otra ventana y seguramente va a estar vacía o va a estar
como está entonces la anterior o la voy a cerrar.
No voy a guardar los cambios y vamos a trabajar con esto variables tan útiles tan usadas.
Las variables son un pedacito de memoria RAM que vamos a reservar de nuestro microcontrolador para guardar
valores de diferente tipo.
Se acuerdan no.
La memoria RAM es aquella que cuando se apaga el Arduino cuando le corto la energía se borra la memoria
RAM que vamos a reservar nos va a servir para llevar por ejemplo cuentas como les di el ejemplo voy
a ir contando por qué no una serie de eventos.
Supongamos que estamos contando personas que pasan por un sensor en la cuenta de personas la UIR llevando
en una memoria RAM cada vez que el sensor detecta el paso de alguien a esa variable la voy a incrementar
en uno.
Entonces voy a ir contando uno dos tres y me voy a permitir en todo caso llegado determinado valor tomar
una acción.
Supongamos quiero cerrar una barrera cuando pasen 10 personas uno o dos tres y cuando llegue a 10 efectuó
la acción de cerrar la barrera pero tengo que tener presente que esa cuenta que voy a ir llevando cuando
se apague el Arduino se va a borrar cuando lo vuelvo a enchufar o arrancar en cero como les dije.
Hay distintos tipos de variables según el dato que van a almacenar.
Entonces vamos a ver cómo se declaran las variables de acuerdo al tipo de datos que almacenan.
La más básica es el número entero.
Cuando subí a guardar un número entero en esta variable para declarar variables enteras vi utilizar
la palabra reservada Int.
Qué quiere decir palabras reservadas.
Quiero decir que son denominadores propios del lenguaje C que sólo se van a poder usar para declarar
una variable entera.
Yo no voy a poder usar la palabra INT para otra cosa que no sea esto.
De hecho si lo hago el sistema no me lo va a permitir.
Luego yo le voy a dar un nombre a esa variable ese nombre puede ser cualquier cosa puede ser una letra
puede ser una palabra la palabra número desde luego que yo les voy a recomendar que siempre elijamos
nombres de variable acordes a lo que van a guardar es cierto.
Como regla general la mayoría de los programadores utilizamos variables en inglés pero cuando estamos
aprendiendo se da un fenómeno que a veces no es tenido en cuenta.
Si yo al nombre de la variable le pongo nombre en inglés vamos a poner nombre
nosotros que somos hispanoparlantes tendemos a confundir que porque esté en inglés es una palabra reservada
entonces vamos a tratar ahora.
Y les aclaro no es lo que se suele usar de utilizar nombres de variables en español cuando ya tengamos
práctica lo mejor va a ser que utilicemos nombres de variables en inglés.
Supongamos como les dije recién si yo utilizo como nombre de Variable
Counter People voy a tender a que ustedes se confundan de qué está mal escrito.
Esto es una palabra reservada es un comando de C++ o es el nombre de la variable y yo me quiero asegurar
que ustedes entiendan de qué nombre lo decido yo como quiera entonces yo puedo poner personas contadas
listo ahí se declare una variable ya reservé un pedacito de memoria para guardar la cantidad de personas
contadas y es un entero.
Qué tamaño tiene el pedacito de memoria que reserve vamos a verlo.
Déjenme recordarles que acá nos estamos preparando para ser todo terreno.
No va a servir de mucho que venga y les muestre acá en la página de Arduino están todas las definiciones
y como ven qué sentido tiene que les diga lo correcto es cierto una variable de tipo entero puede almacenar
datos tanto negativos como positivos que van desde al menos 32 mil 768 hasta el 32 mil 767 lo que quiero
decirles es que tienen a mano la posibilidad de buscar cuanta duda tengan no siempre nos vamos a acordar
de todo entonces.
De hecho yo para contarles a ustedes con exactitud cuántos son los valores máximos de cada tipo de variable.
Lo que hice fue buscarlo simple Miren puse Arduino int y tengo la respuesta.
Otra característica de cuando declaramos la variable es que al mismo tiempo que la declaró también le
puedo asignar un valor ya de entrada puede valer cero ya de entrada puede valer 10 o simplemente la
declaró y todavía no tiene un valor volviendo de la referencia de Arduino podemos ver que el número
máximo está limitado por el tipo de arquitectura del microcontrolador que en este caso es de 16 bits
conformados por dos bits es por esto que podemos tener este margen cuando declaramos enteros.
Pero fíjense algo yo puedo utilizar dentro de las variables enteros un subtipo vamos a decirles que
son las
sin signo.
De esta manera sólo voy a tener valores positivos cuando utilizo variables sin signo se duplica el valor
máximo.
Vamos a poder tener más de 65000 valores posibles en una Balet en una variable entero sin signo.
Bueno repasando tipos de variables para almacenar números.
Podemos ir a los de tipo float en este caso son variables de tipo decimal o punto flotante.
Igual vamos a poner un ejemplo peso alumno
en este caso le puedo asignar un valor en el momento en el que le declaró por ejemplo 56.
Punto 8
qué cantidad de valores puedo guardar acá.
Cuál es el número máximo nosotros somos todoterreno entonces vamos a Arduino luego me tengo que acostumbrar
a buscar información
en línea y como verán en los float tenemos hasta seis o siete decimales.
En cuanto a precisión otro tipo de variable que vamos a poder declarar para almacenar números son los
de tipo Longa a esta le voy a llamar número largo o mejor número grande va a ser igual.
Cuál es el tamaño máximo.
Ya busqué dos mil 147 millones 483 1647 positivos o si no lo mismo en negativos.
Por supuesto que si utilizo la versión sin signo voy a duplicar el tamaño máximo de la variable
entonces me gustaría hacerles una pregunta podría utilizar yo una valla una variable Longa llamada vamos
a poner un nombre a ver años.
alumno y la voy a usar para almacenar la edad de alguno de mis alumnos.
Igual tengo un alumno suponemos de 30 años funcionaría esta variable guardaría estos 30 en una variable
de tipo long.
Claro que sí sería eficiente.
Claro que no porque estoy reservando un espacio de memoria capaz de alojar semejante número para guardar
un número que jamás superará los 80 90 100 años entonces esto es una ventaja de este lenguaje que es
un lenguaje fuertemente tipado.
Este es una manera técnica de describir esto y es que una vez que yo declaro un tipo de variable no
la voy a poder pasar a otro tipo o sea en un en un long no voy a poder guardar nunca un float me va
a dar error no me va a dejar.
Asimismo si puedo utilizar un long para guardar un número entero pero estoy desperdiciando memoria lo
correcto o lo óptimo o lo eficiente sería utilizar un Hind años igual a 30 porque ya sabemos que los
Hint no guardan números tan grandes.
No estoy malgastando memoria en definitiva.
Pero sigamos porque hay muchos tipos de variables entre ellas tenemos el del tipo Jar Jar Char es simplemente
un bait o lo que puede entenderse de otra manera un carácter es para guardar se vamos a probar y a crear
un carácter que se va a llamar primera letra ahí lo estoy declarando o puedo declararlo y al mismo tiempo
le voy a asignar un valor por lo general C el valor va a ir entre comillas simples y la letra de la
primera letra del nombre es la P.
Aquí puedo poner cualquier letra o número pero aunque ponga un número este número que estoy poniendo
acá por ejemplo un 4 no va a ser interpretado matemáticamente sino como un carácter.
O sea que a este años a futuro le voy a poder sumar otro número pero a este carácter jamás le voy a
poder sumar otro número porque es interpretado como una letra como un carácter no como un número.
Recuerden los Char sólo pueden almacenar una sola letra más adelante vamos a ver que hay un tipo de
variable que son los Arráiz que pueden ser combinados con cualquiera de estas variables y a grandes
rasgos una Ray es una pila o una una cantidad determinada de variables es una variable de variables
entonces cuando quiero grabar o almacenar en una variable una oración lo que se hace es una raíz de
charts o sea son muchos charts unos al lado del otro por así entenderlo pero de momento vamos a dejar
los Arráiz para más adelante y ahora vamos a ver una clase clase es el término pero lo vamos a usar
como si fueran variables si o si necesitamos avanzar un poco más para entrar en detalle.
Así que por ahora le vamos a decir variables pero a ciencia cierta es una clase que son los strings
empieza con mayúscula string vamos a decir por ejemplo oración hoy tengo una string cómo se llama esta
variable oración y quiero almacenar oraciones como todas variables le voy a poder dar un valor al momento
de definir la escala estoy creando y ya no más le puedo pasar entre comillas dobles
bienvenidos
puedo crear otro otro string saludo
Hola tía
y por último vamos a ver el tipo de variable.
Juliana se declara de la siguiente manera con la palabra reservada vull le vamos a poner un nombre y
de nombre le vamos a poner por ejemplo activado activado por qué lo hago.
Pregunta porque de ahí viene yo también puedo darle un valor en el momento de declarar la variable y
puede ser tú o puedes ser fouls.
Esto qué quiere decir.
Las variables Pulianas sólo pueden contener dos valores o verdadero o falso o uno o cero o alto o bajo
en definitiva este tipo de variables las vamos a usar cuando necesitemos realizar acciones que sólo
tienen dos posibilidades o cuando tengamos que registrar datos que solo tienen dos caminos.
Por ejemplo yo necesito saber el estado de un LED activado sí o no.
Entonces consultando la variable activado puedo saber si se está encendido o apagado pero como esta
es una variable que para explicarla o para que la entiendan necesitamos avanzar un poquito más.
Me remito a decir que existe ahí está y muy pronto vamos a avanzar en ello y qué mejor que redondear
este capítulo de variables con algún ejercicio y con algo que sea un poco más entretenido la verdad.
Entonces vamos a hacer lo siguiente
Vamos a declarar una variable y vamos a llamarla número
mejor cuenta igual a cero arranca valiendo cero y acabemos vemos que tenemos dos pedazos de código bien
definidos más adelante vamos a ver que en realidad estas son funciones pero por ahora vamos a decir
que tenemos una parte de código llamada ZetaP y el ZetaP es lo que vamos a encontrar dentro de estas
dos llaves.
Fíjense que si me paro en esta llave el Ideame es como que me marca la de abajo diciéndome que lo que
está acá adentro va a ser el ZetaP y tenemos otra que se llama Luv van a ser las líneas de código que
yo ponga en esta parte
si bien vamos a profundizar a grandes rasgos les puedo decir que todas las líneas de código que yo escriba
en el ZetaP se ejecutarán una sola vez o sea apenas arranque en nuestra placa y las que pongan en el
lugar se van a repetir continuamente sé que ahora puede parecer algo confuso pero más adelante vamos
a hacer.
Vamos a ir aclarando estos temas no se preocupen como les dije lo que pongamos en el club se va a repetir
indefinidamente.
Entonces vamos a agarrar y poner que cuenta es igual la cuenta +1 en definitiva cada vez que se ejecuta
esta línea de código que como les advertí se va a ejecutar para siempre indefinidamente una y otra vez
lo que hace es tomar el valor que tiene cuenta con cuanto arranca con cero.
Digo que es igual a cero más uno en este paso cuenta ya vale uno y en el próximo al sumarle otra vez
uno va a valer 2 y 3 y 4 y 5 con controles de archivo grabar voy a grabar este programa aunque no lo
crean en nuestro primer programa y a diferencia de muchos no es el prender y apagar un LED porque necesitamos
aprender a programar primero.
Entonces quería arrancar con las variables
vamos a darle un nombre le vamos a ver variables
y se nos va a guardar en la carpeta Arduino
le doy grabar y como ven ya nuestro programa tiene nombre y esto hace que automáticamente se nos cree
dentro de la carpeta Arduino una carpeta llamada variables y en su interior.
El programa en cuestión denominado variables punto y no
llegó el momento de grabarlo.
Para esto vamos a enchufar mediante el cable o BSB nuestra placa Arduino al puerto USB de la computadora.
Por lo general no necesitamos instalar drivers especiales pero si no es reconocido por tu ordenador
vamos a dejar los links para que puedas bajar los diferentes drivers
vamos herramientas
en Puerto vamos a ver que nos aparezca Arduino barras genuino uno o algo similar y lo vamos a seleccionar.
Luego vamos otra vez herramientas Plaka y elegimos cuál es la placa que tenemos en este caso genuino.
1 entonces ya estaríamos para compilar y cargar nuestro primer programa.
Para esto tenemos dos opciones este botón que está aquí lo que va a hacer es compilar el programa Esto
quiere decir que lo voy a empaquetar para Lick y dejarlo listo para cargar en la placa pero no lo va
a cargar.
Simplemente nos va a decir si hubo algún error o no.
Vamos a probar de compilar.
Miren dice compilando programa compilado.
Esto quiere decir que no tuvimos ningún error y acá nos da algo de estadísticas de cuánta memoria EPROM
usamos cuánta memoria RAM usamos desde luego con un programa tan chico es muy poco pero miren si yo
me equivoco en algo ya me da error y me dice que no es un nombre o un tipo de variable claro.
Otra opción que tenemos cuando queremos cargarla en la placa es presionar este botón.
Este botón va a hacer las dos cosas primero con pila y después lo cargue en la placa vamos antes les
digo cuando carguen vean que las luces TX y RX van a parpadear porque van a estar ingresando los datos
del programa hacia el microcontrolador a través del puerto serie vamos subiendo y ya subió es bastante
rápido
no sólo subió sino que está funcionando el programa en el interior de la placa está contando y sumando.
Pero como me entero no puedo verlo que sucede créanme que sucede pero no tengo cómo saber y por eso
es que vamos a utilizar una manera para poder ver cómo aumentan esos datos entonces lo que vamos a hacer
es sacar el valor de cuenta por el puerto serial lo vamos a sacar en definitiva por el puerto BSB y
lo vamos a ver en lo que se llama monitor serial.
Para hacer esto lo que vamos a hacer es en el ZetaP o sea esto va a ser código que se va a ejecutar
una sola vez.
Esto es muy útil lo vamos a usar siempre porque en todo momento vamos a necesitar ver qué pasa adentro
del microcontrolador entonces vamos a declarar el puerto serial y se hace de la siguiente manera seria
serial punto Beguin y vamos a poner la velocidad en la que vamos a trabajar este puerto.
Vamos a elegir una baja velocidad aunque a ciencia cierta.
El Arduino Uno es tan noble que puede andar a uno a lo que se considera una alta velocidad que son 115
1200 baudios pero vamos a poner una velocidad muy lenta que a nosotras nos recontra sobra.
Sería bien seria el Beguin 9600 punto y coma.
Este es un buen detalle que no les dije todas las líneas en C++ van a terminar siempre en Punto y Coma
todas las instrucciones
paso seguido vamos a imprimir por pantalla un mensaje para hacer esto vamos a usar serial punto print
Ln Ln.
Lo voy a usar cuando quiero que me deje un salto de línea que me genera un nuevo renglón para imprimir
esto si no tuviera el LNE escribe Vega o va a ir imprimiendo en la pantalla.
Oraciones al lado de la otra hacia diferentes caracteres uno al lado del otro.
En cambio con print LNE lo que haces imprime la oración que yo quiero.
Deja un renglón imprimió otra deja un renglón bueno pero igual se lo vamos a practicar no se preocupen.
Print LN entre comillas por qué entre comillas porque como habíamos visto antes todas o todos mejor
dicho los strings o cadenas de texto u oraciones van entre comillas dobles práctica con Robbiano luego
de los paréntesis vengo com punto y coma.
Bien CTO lavelocidad una buena práctica que podamos Tomares de hacer que el Arduino espere un ratito
antes de empezar a imprimir por serial.
Luego de hacerlo arrancar recuerden con esta línea yo lo que hago es pongo en marcha o arranco la interface
serial de la placa Arduino pero es bueno dejarle un pequeño lapso para darle tiempo a que esto suceda
antes de empezar a usarla.
Entonces para qué.
Para generar este Dili o este tiempo de espera.
Utilizamos una función llamada Dealey y entre paréntesis tengo que pasarle un entero es entero a representar
la cantidad de milisegundos de entendamos que con 1000 milisegundos hago un segundo que quiero que espere
sin hacer nada el largo y nos vamos a darle tiempo.
La verdad es que con 100 milisegundos alcanza y sobra para que arranque el puerto serial voy a imprimir
esta oración
y luego el programa va a entrar en el club recuerdan.
Esto se va a ejecutar una sola vez y luego empieza a repetirse esto.
Entonces lo que quiero hacer ahora es ir viendo el valor que tiene cuenta mientras se va ejecutando
nuestro programa.
Para esto vamos a hacer lo siguiente serial punto print ln y entre paréntesis voy a pasar
el valor en string o sea en caracteres o en cadena de caracteres de la variable cuenta un momento sé
que acá ustedes esperaban que yo pusiera directamente cuenta si si bien puede andar pero nos tenemos
que acostumbrar a que cuenta es un entero pero esta función para imprimir.
Espera que le pasemos caracteres entonces lo correcto es convertir primero el número entero en un carácter
o si son así es un número largo o grande que sea una cadena de caracteres para convertir una entero
a caracteres.
Es muy fácil con la función string y entre paréntesis voy a pasar la variable cuenta por qué tengo dos
paréntesis al final no vamos a aclarar este paréntesis este paréntesis de acá está cerrando éste y acá
está cerrando con este bueno como en realizar un supuesto
listo.
Grave error.
Tengo todo bien y procedemos a cargarlo listo.
Se está cargando y ya lo tenemos corriendo en el árbol y cómo hacemos para ver lo que está saliendo
por el puerto serial.
Vamos a herramientas y vamos a monitor serie
de inmediato se ha abierto y como ven están corriendo números pero a una velocidad increíble.
Yo voy a presionar el botón Reset voy a presionar el botón Reset.
Miren
pasó algo tan rápido que no lo pude ver qué está pasando acá.
Bueno vamos a analizar un poco.
En primer lugar después de imprimir este string a mí me gustaría generar otro delay como para tener
tiempo de verlo porque en cuanto se ejecuta esto empieza el loop y no me deja verlo.
Entonces vamos a generar un diploide dos segundos y lo que está sucediendo ya se darán cuenta es que
este club se ejecuta tan rápido de que prácticamente no me deja ver los números.
Entonces yo puedo generar entre impresión e impresión un Willey vamos a hacer de un segundo perfecto
grabo de nuevo ya puedo ir preparando el monitor serie fijense que arrancó sin problemas y ahora a una
velocidad mucho más acorde y legible.
Voy a borrar con este botón borrar la salida pero en borrar y reseteo.
Presiona el botón de reset mi primera práctica con Arduino.
Dos segundos y empiezo a ver el valor de cuenta cada vez que pasa por el club.
Ven claro es
vamos a mejorar un poquito esto vamos a querer una variable de tipo string que va a ser igual.
Perdón que le voy a llamar saludo y va a ser igual.
Hola alumnos perfecto entonces yo entonces yo acá lo que voy a hacer es reemplazar esta oración por
saludo
ahora voy a presionar este botón para que vean que compila y graba todo al unísono salvo que salvo que
sea un error por supuesto vamos
fíjense que imprimió Hola alumnos cuando se ejecutó esta línea por qué imprimió la alumnos y porque
le estoy pidiendo que imprima una variable no la tengo que convertir a string porque porque ya es una
Extrem y yo había grabado el valor.
Hola alumnos
las variables también pueden ser modificadas a lo largo del programa después de los dos segundos de
espera.
Yo voy a decir que el saludo es igual ahora a varios alumnos punto y coma.
Ahora voy a decir que nuevamente imprima saludo que estoy haciendo copiando y pegando es una excelente
una excelente práctica de todo programador reciclamos código no escribimos todo debemos saber copiar
y pegar porque necesitamos avanzar y hacerlo rápido
bueno vamos a grabar
y ya lo tenemos.
Fijense dijo Hola alumnos porque imprimí el saludo que ya tenía el valor del alumnos y en segundo lugar
dijo adios alumnos por qué.
Porque después de esperar dos segundos yo dije que ahora saludo va a ser iguala a Dios alumnos y luego
imprimir la variable para poder conocer su nuevo valor.
Desde luego después caemos en el blog y se empieza a repetir la impresión de la variable cuenta y ya
como final para esta edición vamos a hacer lo siguiente y es contarles que yo puedo mejorar esta parte
poniendo una string por ejemplo diciendo el valor de cuenta es ponerle una rayita y un signo de mayor
para que quede un poco más lindo.
Y esto se llama concatenar strings como a cuenta yo lo transforma en string con esta función lo que
yo tengo acá es una string o cadena de texto una oración lo que tengo de este lado también es una cadena
de texto con el signo más yo lo que estoy haciendo es unir estas dos cadenas de texto y es totalmente
válido y lícito en esta plataforma.
Vamos a agravarlo por última vez
alumnos cambio del valor a alumnos y miren que ahora sale bastante mejor.
No
vamos a hacerle un espacio para completarlo aún más grabamos
y vemos que ya sale de manera correcta.
Bueno muchísimas gracias por este intenso capítulo que hemos tenido vamos a seguir avanzando no se preocupen.
Y bueno nos vemos la próxima.