Bienvenidos a un capítulo más y con este ya estaríamos terminando lo que es la programación básica de
arruino y créanme que lo de básica ya quedó totalmente obsoleto porque si estás conmigo hasta esta altura
es porque ya sabes mucho más que lo básico.
Créeme que si has aprendido todo o medianamente ya lo has incorporado te aseguro que tenés adentro el
70 por ciento de cualquier otro lenguaje de programación aunque en tu vida lo hayas visto así de drástico
es esto porque todos los lenguajes se basan en una estructura muy pero muy similar.
Y insisto es mucho más que básico en lo que has aprendido mucho más que nos atañe en este encuentro.
Funciones vamos a vivir utilizando funciones así que son muy importantes.
De hecho cuando creamos un proyecto Arduino esto que aparece acá y esto que aparece acá son funciones
vamos a ver cómo funcionan.
Valga el juego de palabras y es así.
Bueno yo he creado dos variables enteras o mejor dicho de tipo entero y les he asignado un valor en
el mismo instante que las creó.
Ahora lo que voy a hacer es lo siguiente voy a decir en el ZetaP voy a iniciar el puerto serial
ya con el puerto será el iniciado.
Voy a crear una variable llamada el resultado y voy a decir que es igual a sumar número.
Entonces tengo resultado igual al número más número dos.
Yo de antemano como es fácil la cuenta sé que me va a dar 80.
Vamos a imprimir ese resultado para confirmarlo por la terminal serial.
Pero no voy a cargar
y drástico error me olvidé de poner la velocidad.
Listo solucionado.
Vamos
bien 80.
Ahora supongamos el caso qué sucede si yo necesito realizar 100 sumas de distintos números si a cada
rato mi programa requiere que siempre necesite cada dos por tres hacer distintas sumas de dos números
distintos.
Bueno tendría que ir repitiendo esto ir guardando sumando y eso que estamos hablando de una tarea fácil.
Y si la tarea se tratara de sumar dos números más dividirlo por dos multiplicarlo por cuatro y hacerle
20 operaciones más que sucede sucede más de lo que ustedes piensan obviamente hacerlo.
Digamos a mano escribiendo línea a línea.
Va a ser complicadísimo nos va a quedar en lo que conocemos a veces lo van a escuchar en diferentes
partes como código espagueti ese código interminable que parece un fideo infinito.
Bueno para eso vienen las funciones para hacernos la vida un poco más fácil.
Entonces una función yo ahora le voy a declarar de la siguiente manera voy ya voy a explicar qué quiere
decir esto de Beit Lahiya llamar suma números abre y cierra paréntesis vamos a ver para qué son.
Abro y cierro llaves.
Bueno si se ven me queda la misma estructura que una de estas funciones.
En definitiva lo que ponga acá adentro o llaves van a ser las sentencias pertenecientes a esta función.
Bien hemos declarado una función.
Ahora vamos a llenarla con instrucciones.
Quiero que sume dos números pues bien voy a agarrar voy a copiar estas dos líneas y las voy a poner
acá adentro.
Entonces si se fijan yo ahora lo que voy a hacer en el ZetaP es llamar Azuma números.
Abro y cierro paréntesis.
Punto y Coma grabo
y como ven tenemos el mismo resultado porque con solo llamar Azuma números y que el código saltara.
Esta función se ejecuta en dos líneas y después vuelve al lugar donde había dejado va a seguir ejecutando
esta línea.
Si vuelvo a llamar suma números.
Miren qué pasa si lo hago dos veces.
Vamos por más sumando números tres veces.
Qué va a suceder.
Grabó
espero y tenemos tres veces el 80 porque por qué se ejecutó tres veces esto.
Entonces miren cómo.
Con tres líneas ahorré lo que tendría que haber sido seis líneas vamos un poco más allá.
Las variables son perdón las funciones son mucho más nobles y mucho más útiles que esto todavía.
Ni que hablar que como les dije Acá yo podría haber hecho con resultados e incluso puedo hacer ahora
que el resultado es igual al resultado dividido dos.
Puedo decir que el resultado es igual al resultado
más ocho.
Entonces miren cómo complico la cosa y ya no me estoy ahorrando dos sino que me estoy ahorrando cuatro
líneas cada vez que yo escribo suma números apruebo
bien el resultado era 48 lo tengo tres veces pero les decía son mucho más nobles.
La primera nobleza que le vamos a detectar a las funciones es que yo le puedo pasar a estas.
Valores si se dan cuenta el bien que tenemos acá no deja de ser una función aunque yo no la pueda ver.
Es una función a la que le estoy pasando un valor y qué va a hacer un montón de tareas y a mí me las
están ahorrando.
Con esta sentencia porque en realidad para poder hacer arrancar que se inicie el puerto serial requiere
varias líneas de código.
Entonces Arduino para nosotros no nos facilita la vida trayéndonos este tipo de funciones preestablecidas
pero éstas no son más que funciones que nosotros vamos a crear a nuestro gusto para solucionar situaciones
particulares.
Como les decía Ven acá le estoy pasando a la función Binh el valor de la velocidad.
Esto no deja de ser una función es una función preestablecida llamada Dilthey a la que le estoy pasando
un valor bueno se encargará de la función con un montón de con un montón o no lo desconozco a ciencia
cierta pero con varias líneas para generar este deleite y obviamente necesita que yo le pase un valor
para saber cuánto tienen que demorar.
Con esto pasa lo mismo yo puedo declarar entre estos dos paréntesis los valores que tiene que esperar.
Entonces voy a declarar un nuevo una nueva variable y le voy a poner de nombre y a ver para que ustedes
se den cuenta.
Le voy a poner valor recibido.
Bueno y acá vamos a borrar estos dos vamos a llamar a suma número y lo vamos a poner.
Vamos a borrar esto de acá.
Además
entonces vamos a decir suma números y lo vamos a pasar el número 10.
Momentáneamente nos vamos a olvidar de estas dos de hecho las voy a borrar para que vean que no tiene
nada que ver ya borré esas dos variables no existen más así que voy a decir que el resultado va a ser
igual al valor recibido más valor recibido.
Un ejemplo qué sucede.
Este número 10 cuando yo llamo Azuma números este número 10 va a ocupar el lugar de valor recibido o
sea el valor recibido a partir de ahora dentro de la función va a tener el valor de 10 entonces el resultado
va a ser igual a sumar valor recibido más valor recibido.
O sea lo que es lo mismo a sumar diez más 10.
Digamos si funciona
20 funciona.
O sea el valor que yo le pase llegó acá y luego se reemplazó en cada lugar donde yo usé dicho dicha
variable podría usarla más veces más líneas.
Estoy haciendo un ejemplo sencillo.
Esta nobleza de las funciones no termina acá yo le puedo pasar varios valores separados por cómo puedo
pasar un 10 no sé qué quieren un 15.
Bueno entonces de este lado voy a tener que llamar a esta le vamos a tener que poner por ejemplo Valor
recibió uno coma y declaró otra Hind valor recibido 2.
Entonces estoy recibiendo dos valores el 10 va a entrar por valor recibido y el 15 va a entrar de defunción
por valor recibido 2.
Entonces ya se queda adentro de la función en mi código vamos a probar sumar esta Magestad proveemos
lo recibido 1 a valores recibidos la suma de estos dos valores las voy a guardar en el resultado y luego
imprimo resultaba funcionarã.
Veamos
25 cuando teníamos 10 más 15 25.
La nobleza no termina acá sigue y sigue por un buen rato.
No solamente le puedo pasar números le puede pasar cualquier tipo de variables e incluso le puede pasar
a una string una cadena de texto.
Entonces le puedo decir a esta función que tenemos que ser una suma de números luego pasar a una especie
de encabezado que diga el resultado es Koma.
Entonces le estoy pasando ahora ya tres variables una string y dos números.
Por ende en el mismo orden las voy a tener que recibir.
Voy a declarar una string lo voy a llamar mensaje y coma bien.
Por qué pongo comas porque todas tienen que ir separados por comas entonces de ahora en más estaba este
mensaje que estoy pasando en una string se va a lo que sería la variable mensaje o sea de ahora en más.
Dentro de la función mensaje es el resultado es dejar un espacio acá para que quede más lindo cuando
lo imprimimos.
Entonces tranquilamente yo tomo valor recibido 1 y recibió 2 y sumo lo guardo en resultado y después
agarro y puedo poner acá
mensaje más y el resultado gravó qué estoy haciendo acá.
Perdonen que vuelva a esto para explicarlo mejor por las dudas mensaje.
Es una variable que acaba de recibir el estreno que le mandé desde acá entonces mensaje.
Al ser una estrella lo puedo concatenar tranquilamente con él sino más a otro estreno que viene de convertir
a estrechen la variable resultado ahora sí ha aclarado Bravo subo en la placa
como ven ahora con solo poner esto con solo poner esto ya me parece.
El resultado es 25 entonces si se dan cuenta tenemos una hermosa función que nos va a poder mostrar
la suma de dōjō de dos valores sin escribir tanto código si lo tenemos que usar a cada rato.
Yo ahora puedo poner suma números pero suma números y entre comillas voy a pasar el valor es para que
vean que versátil me puede servir para muchas cosas.
El valor es pasarle ahora que le tengo que pasar qué espera esta función que le pase una Extrem ya se
lo pase.
Ahora me pide que le pase dos números 50 50 hago otra suma números abro paréntesis el resultado el valor
puedo poner ahora el número es y voy a pasar otra vez dos valores 11 y 11.
Bravo caminamos acá tres grabo pruebo
y como ven acá vamos a crear una función sahumadoras de números.
Encima recibe un encabezado para que a la hora de imprimir salga mejor.
Bueno eso es un ejemplo que a mí se me ocurrió para que ustedes puedan aprender pero que versátiles.
Bueno yo les dije la nobleza es grande así que ya vemos otra de ellas.
Y qué más tienen para darnos las funciones.
Mucho más.
Miren yo les voy a pedir algo
voy a hacer algo no muy bien visto pero es para que el efecto visual sea más importante.
Borro esto.
Bueno imaginen por un momento entonces que cuando yo llamo a una función es que en realidad es lo que
pasa desde acá yo estoy mandando datos imaginen una flecha que entra acá los datos se procesan y yo
tengo la posibilidad de devolver datos al lugar donde llamé a la función.
Por este lado imaginen ahora otra flecha que sale de acá y regresa los datos.
Entonces cuando llama a una función le puedo dar valores o datos para que sean procesados y por acá
los devuelve.
Por qué digo por acá.
Porque en realidad este BOIB que quiere decir vacío está diciendo vacío porque yo no estoy devolviendo
nada en esta.
En este ejemplo que hemos hecho pero eso tranquilamente podría devolver algo y que estaría bueno devolverle
a donde llamé y estaría bueno devolverle el valor que obtuve.
Entonces para poder devolver valores yo tengo que decir acá qué tipo de valor voy a devolver.
No hace falta que declare nada simplemente pongo qué tipo de variable voy a devolver al lugar a donde
fue llamada la función.
Vean yo acá voy a poner un entero porque porque sé que yo quiero devolver resultados.
Por ahora esto lo voy a subir acá para usarlo después voy a comentar para que no tenga efecto sobre
el código.
Entonces cómo hago para devolver resultado el lugar donde fue llamado.
Es simple se usa la palabra reservado Return Return es devolver retornar y luego tengo que decirle que
quiero retornar y en este caso quiero devolver resultado simple listo.
Bueno entonces ahora lo que quiero que vean es lo siguiente Cuando yo llamo Azuma números y le paso
los valores que me pide todo se procesa.
En este caso solamente estoy devolviendo el resultado así que ya se van a dar cuenta que va a dar lo
mismo si mando o no el mensaje por qué va a dar lo mismo y porque en realidad el resultado se conforma
con valor 1 más valor 2 así que es más lo del mensaje y lo dejemos de lado para no complicarnos que
se podría hacer algo seguro.
Pero vamos a remitirnos a dos valores para hacerlo más simple
y bueno Retomemos.
Llamo suma números le paso los dos se suman y el valor va a volver a reemplazar esto que yo escribí
acá.
Sé que por ahora puede sonar confuso.
Mira grabo en la placa y vamos a ver qué pasa.
Si lo hago si no pasa nada porque no lo estoy imprimiendo en ningún momento entonces yo que tengo varias
opciones y al hacerlas se van a dar cuenta de qué se trata esto.
Ahora puedo poner Hint resultado igual a que asuma números y luego imprimir el resultado.
Estoy diciendo que lo que me devuelva la ejecución de esta función recordemos los dos números se van
a venir acá se van a sumar y se van a devolver aquí.
O sea que en definitiva todo esto que puse acá va a ser reemplazado por lo que devuelva suma números.
No sé no me acuerdo.
Que le estábamos pasando a ver 11 y 13 24.
Bueno va a ser reemplazado por un 24.
Veamos y antes de grabar repasemos le digo suma números que sume 11 y 13 y me devuelve el resultado.
Llega el 11 llega el 13 acá.
El 11 se suma con el trece se guarda en resultados y devuelve resultado
y acá tengo un error en el resultado.
Ojo acá no es bueno que ponga el mismo porque se pueden confundir y pensar que estoy obligado a poner
el nombre de la variable con la que retorne.
No son cosas diferentes entonces yo podría poner algo así de simple lo vamos.
Nunca le recomiendo poner variables que no hagan alusión a lo que guardan pero este es un caso extremo
porque quiero mostrar que no importa el nombre que ponga.
Imprimir a listo lo grabo y si el mensaje no está declarado es claro porque eso no existe.
Los mensajes no lo usamos grabo cargo en placa
y como ven tengo el 24.
Estas son funciones que devuelven valores son muy usadas y son tan nobles que mira yo directamente me
podría ahorrar esto y puedo decirle directamente imprimible y acá pongo suma números y entre paréntesis
le paso veinte y le pasó un 30 funcionarã grabo.
Yo diría que es hacerlo al vuelo de una listo 50.
Funciona quedó claro cualquier cosa estaría atento a las preguntas y ya nos vemos en el próximo capítulo
que se va a hacer con las manos en la masa a darle la placa electrónica lo que nos gusta el motivo que
nos trajo acá el arruino.
Nos vemos chocha.