1
00:00:05,340 --> 00:00:10,440
Bienvenidos a un capítulo más y con este ya estaríamos terminando lo que es la programación básica de

2
00:00:10,440 --> 00:00:18,270
arruino y créanme que lo de básica ya quedó totalmente obsoleto porque si estás conmigo hasta esta altura

3
00:00:18,570 --> 00:00:21,180
es porque ya sabes mucho más que lo básico.

4
00:00:21,180 --> 00:00:27,870
Créeme que si has aprendido todo o medianamente ya lo has incorporado te aseguro que tenés adentro el

5
00:00:27,870 --> 00:00:33,720
70 por ciento de cualquier otro lenguaje de programación aunque en tu vida lo hayas visto así de drástico

6
00:00:33,720 --> 00:00:39,250
es esto porque todos los lenguajes se basan en una estructura muy pero muy similar.

7
00:00:39,490 --> 00:00:47,030
Y insisto es mucho más que básico en lo que has aprendido mucho más que nos atañe en este encuentro.

8
00:00:47,030 --> 00:00:53,170
Funciones vamos a vivir utilizando funciones así que son muy importantes.

9
00:00:53,240 --> 00:00:59,780
De hecho cuando creamos un proyecto Arduino esto que aparece acá y esto que aparece acá son funciones

10
00:01:00,140 --> 00:01:02,860
vamos a ver cómo funcionan.

11
00:01:03,020 --> 00:01:06,220
Valga el juego de palabras y es así.

12
00:01:06,220 --> 00:01:14,180
Bueno yo he creado dos variables enteras o mejor dicho de tipo entero y les he asignado un valor en

13
00:01:14,180 --> 00:01:16,370
el mismo instante que las creó.

14
00:01:16,370 --> 00:01:27,260
Ahora lo que voy a hacer es lo siguiente voy a decir en el ZetaP voy a iniciar el puerto serial

15
00:01:30,760 --> 00:01:33,900
ya con el puerto será el iniciado.

16
00:01:33,900 --> 00:01:40,110
Voy a crear una variable llamada el resultado y voy a decir que es igual a sumar número.

17
00:01:40,740 --> 00:01:44,380
Entonces tengo resultado igual al número más número dos.

18
00:01:44,530 --> 00:01:48,690
Yo de antemano como es fácil la cuenta sé que me va a dar 80.

19
00:01:48,690 --> 00:02:01,110
Vamos a imprimir ese resultado para confirmarlo por la terminal serial.

20
00:02:02,080 --> 00:02:03,920
Pero no voy a cargar

21
00:02:06,480 --> 00:02:10,410
y drástico error me olvidé de poner la velocidad.

22
00:02:10,530 --> 00:02:12,000
Listo solucionado.

23
00:02:12,010 --> 00:02:12,480
Vamos

24
00:02:17,150 --> 00:02:18,120
bien 80.

25
00:02:18,510 --> 00:02:27,920
Ahora supongamos el caso qué sucede si yo necesito realizar 100 sumas de distintos números si a cada

26
00:02:27,920 --> 00:02:34,910
rato mi programa requiere que siempre necesite cada dos por tres hacer distintas sumas de dos números

27
00:02:34,910 --> 00:02:35,540
distintos.

28
00:02:36,090 --> 00:02:43,760
Bueno tendría que ir repitiendo esto ir guardando sumando y eso que estamos hablando de una tarea fácil.

29
00:02:43,800 --> 00:02:49,230
Y si la tarea se tratara de sumar dos números más dividirlo por dos multiplicarlo por cuatro y hacerle

30
00:02:49,410 --> 00:02:55,780
20 operaciones más que sucede sucede más de lo que ustedes piensan obviamente hacerlo.

31
00:02:55,950 --> 00:02:59,010
Digamos a mano escribiendo línea a línea.

32
00:02:59,010 --> 00:03:04,680
Va a ser complicadísimo nos va a quedar en lo que conocemos a veces lo van a escuchar en diferentes

33
00:03:05,010 --> 00:03:11,800
partes como código espagueti ese código interminable que parece un fideo infinito.

34
00:03:11,820 --> 00:03:16,870
Bueno para eso vienen las funciones para hacernos la vida un poco más fácil.

35
00:03:16,950 --> 00:03:23,520
Entonces una función yo ahora le voy a declarar de la siguiente manera voy ya voy a explicar qué quiere

36
00:03:23,520 --> 00:03:33,230
decir esto de Beit Lahiya llamar suma números abre y cierra paréntesis vamos a ver para qué son.

37
00:03:33,720 --> 00:03:35,400
Abro y cierro llaves.

38
00:03:35,400 --> 00:03:38,970
Bueno si se ven me queda la misma estructura que una de estas funciones.

39
00:03:38,970 --> 00:03:46,200
En definitiva lo que ponga acá adentro o llaves van a ser las sentencias pertenecientes a esta función.

40
00:03:46,380 --> 00:03:48,340
Bien hemos declarado una función.

41
00:03:48,480 --> 00:03:50,430
Ahora vamos a llenarla con instrucciones.

42
00:03:50,430 --> 00:03:57,680
Quiero que sume dos números pues bien voy a agarrar voy a copiar estas dos líneas y las voy a poner

43
00:03:57,770 --> 00:03:59,900
acá adentro.

44
00:03:59,900 --> 00:04:10,130
Entonces si se fijan yo ahora lo que voy a hacer en el ZetaP es llamar Azuma números.

45
00:04:10,570 --> 00:04:12,400
Abro y cierro paréntesis.

46
00:04:12,490 --> 00:04:15,880
Punto y Coma grabo

47
00:04:20,540 --> 00:04:26,310
y como ven tenemos el mismo resultado porque con solo llamar Azuma números y que el código saltara.

48
00:04:26,310 --> 00:04:33,330
Esta función se ejecuta en dos líneas y después vuelve al lugar donde había dejado va a seguir ejecutando

49
00:04:33,420 --> 00:04:34,230
esta línea.

50
00:04:34,230 --> 00:04:35,930
Si vuelvo a llamar suma números.

51
00:04:35,930 --> 00:04:37,660
Miren qué pasa si lo hago dos veces.

52
00:04:37,770 --> 00:04:40,730
Vamos por más sumando números tres veces.

53
00:04:40,950 --> 00:04:41,940
Qué va a suceder.

54
00:04:41,940 --> 00:04:42,450
Grabó

55
00:04:44,910 --> 00:04:51,100
espero y tenemos tres veces el 80 porque por qué se ejecutó tres veces esto.

56
00:04:51,320 --> 00:04:52,660
Entonces miren cómo.

57
00:04:52,790 --> 00:05:00,340
Con tres líneas ahorré lo que tendría que haber sido seis líneas vamos un poco más allá.

58
00:05:01,660 --> 00:05:11,780
Las variables son perdón las funciones son mucho más nobles y mucho más útiles que esto todavía.

59
00:05:12,070 --> 00:05:18,270
Ni que hablar que como les dije Acá yo podría haber hecho con resultados e incluso puedo hacer ahora

60
00:05:18,270 --> 00:05:26,140
que el resultado es igual al resultado dividido dos.

61
00:05:26,230 --> 00:05:31,890
Puedo decir que el resultado es igual al resultado

62
00:05:36,080 --> 00:05:36,920
más ocho.

63
00:05:38,150 --> 00:05:43,460
Entonces miren cómo complico la cosa y ya no me estoy ahorrando dos sino que me estoy ahorrando cuatro

64
00:05:43,460 --> 00:05:49,560
líneas cada vez que yo escribo suma números apruebo

65
00:05:52,280 --> 00:05:58,830
bien el resultado era 48 lo tengo tres veces pero les decía son mucho más nobles.

66
00:05:58,830 --> 00:06:03,720
La primera nobleza que le vamos a detectar a las funciones es que yo le puedo pasar a estas.

67
00:06:03,990 --> 00:06:10,270
Valores si se dan cuenta el bien que tenemos acá no deja de ser una función aunque yo no la pueda ver.

68
00:06:10,320 --> 00:06:15,960
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

69
00:06:15,960 --> 00:06:17,010
están ahorrando.

70
00:06:17,010 --> 00:06:23,910
Con esta sentencia porque en realidad para poder hacer arrancar que se inicie el puerto serial requiere

71
00:06:23,910 --> 00:06:25,600
varias líneas de código.

72
00:06:25,680 --> 00:06:33,720
Entonces Arduino para nosotros no nos facilita la vida trayéndonos este tipo de funciones preestablecidas

73
00:06:34,080 --> 00:06:40,290
pero éstas no son más que funciones que nosotros vamos a crear a nuestro gusto para solucionar situaciones

74
00:06:40,290 --> 00:06:41,210
particulares.

75
00:06:41,370 --> 00:06:47,030
Como les decía Ven acá le estoy pasando a la función Binh el valor de la velocidad.

76
00:06:47,310 --> 00:06:52,560
Esto no deja de ser una función es una función preestablecida llamada Dilthey a la que le estoy pasando

77
00:06:52,560 --> 00:06:59,520
un valor bueno se encargará de la función con un montón de con un montón o no lo desconozco a ciencia

78
00:06:59,520 --> 00:07:04,860
cierta pero con varias líneas para generar este deleite y obviamente necesita que yo le pase un valor

79
00:07:04,860 --> 00:07:07,760
para saber cuánto tienen que demorar.

80
00:07:08,070 --> 00:07:14,210
Con esto pasa lo mismo yo puedo declarar entre estos dos paréntesis los valores que tiene que esperar.

81
00:07:14,340 --> 00:07:20,130
Entonces voy a declarar un nuevo una nueva variable y le voy a poner de nombre y a ver para que ustedes

82
00:07:20,130 --> 00:07:20,720
se den cuenta.

83
00:07:20,720 --> 00:07:25,100
Le voy a poner valor recibido.

84
00:07:25,460 --> 00:07:34,080
Bueno y acá vamos a borrar estos dos vamos a llamar a suma número y lo vamos a poner.

85
00:07:34,280 --> 00:07:36,350
Vamos a borrar esto de acá.

86
00:07:36,460 --> 00:07:36,970
Además

87
00:07:39,990 --> 00:07:47,610
entonces vamos a decir suma números y lo vamos a pasar el número 10.

88
00:07:47,820 --> 00:07:52,330
Momentáneamente nos vamos a olvidar de estas dos de hecho las voy a borrar para que vean que no tiene

89
00:07:52,420 --> 00:08:00,470
nada que ver ya borré esas dos variables no existen más así que voy a decir que el resultado va a ser

90
00:08:00,470 --> 00:08:05,810
igual al valor recibido más valor recibido.

91
00:08:05,810 --> 00:08:07,950
Un ejemplo qué sucede.

92
00:08:08,000 --> 00:08:16,130
Este número 10 cuando yo llamo Azuma números este número 10 va a ocupar el lugar de valor recibido o

93
00:08:16,130 --> 00:08:24,920
sea el valor recibido a partir de ahora dentro de la función va a tener el valor de 10 entonces el resultado

94
00:08:24,920 --> 00:08:28,500
va a ser igual a sumar valor recibido más valor recibido.

95
00:08:28,580 --> 00:08:31,260
O sea lo que es lo mismo a sumar diez más 10.

96
00:08:31,270 --> 00:08:32,110
Digamos si funciona

97
00:08:38,840 --> 00:08:40,470
20 funciona.

98
00:08:40,560 --> 00:08:48,140
O sea el valor que yo le pase llegó acá y luego se reemplazó en cada lugar donde yo usé dicho dicha

99
00:08:48,140 --> 00:08:51,300
variable podría usarla más veces más líneas.

100
00:08:51,310 --> 00:08:53,270
Estoy haciendo un ejemplo sencillo.

101
00:08:53,510 --> 00:08:59,420
Esta nobleza de las funciones no termina acá yo le puedo pasar varios valores separados por cómo puedo

102
00:08:59,450 --> 00:09:02,420
pasar un 10 no sé qué quieren un 15.

103
00:09:02,780 --> 00:09:08,900
Bueno entonces de este lado voy a tener que llamar a esta le vamos a tener que poner por ejemplo Valor

104
00:09:08,900 --> 00:09:15,800
recibió uno coma y declaró otra Hind valor recibido 2.

105
00:09:15,950 --> 00:09:23,150
Entonces estoy recibiendo dos valores el 10 va a entrar por valor recibido y el 15 va a entrar de defunción

106
00:09:23,450 --> 00:09:25,170
por valor recibido 2.

107
00:09:25,250 --> 00:09:33,250
Entonces ya se queda adentro de la función en mi código vamos a probar sumar esta Magestad proveemos

108
00:09:33,480 --> 00:09:40,100
lo recibido 1 a valores recibidos la suma de estos dos valores las voy a guardar en el resultado y luego

109
00:09:40,160 --> 00:09:42,090
imprimo resultaba funcionarã.

110
00:09:42,440 --> 00:09:42,920
Veamos

111
00:09:48,310 --> 00:09:52,230
25 cuando teníamos 10 más 15 25.

112
00:09:52,240 --> 00:09:55,180
La nobleza no termina acá sigue y sigue por un buen rato.

113
00:09:56,560 --> 00:10:01,530
No solamente le puedo pasar números le puede pasar cualquier tipo de variables e incluso le puede pasar

114
00:10:01,540 --> 00:10:03,360
a una string una cadena de texto.

115
00:10:03,430 --> 00:10:10,060
Entonces le puedo decir a esta función que tenemos que ser una suma de números luego pasar a una especie

116
00:10:10,060 --> 00:10:14,770
de encabezado que diga el resultado es Koma.

117
00:10:14,800 --> 00:10:19,000
Entonces le estoy pasando ahora ya tres variables una string y dos números.

118
00:10:19,000 --> 00:10:22,390
Por ende en el mismo orden las voy a tener que recibir.

119
00:10:22,480 --> 00:10:31,970
Voy a declarar una string lo voy a llamar mensaje y coma bien.

120
00:10:31,980 --> 00:10:37,660
Por qué pongo comas porque todas tienen que ir separados por comas entonces de ahora en más estaba este

121
00:10:38,050 --> 00:10:47,010
mensaje que estoy pasando en una string se va a lo que sería la variable mensaje o sea de ahora en más.

122
00:10:47,010 --> 00:10:53,530
Dentro de la función mensaje es el resultado es dejar un espacio acá para que quede más lindo cuando

123
00:10:53,530 --> 00:10:54,550
lo imprimimos.

124
00:10:54,550 --> 00:11:02,470
Entonces tranquilamente yo tomo valor recibido 1 y recibió 2 y sumo lo guardo en resultado y después

125
00:11:02,470 --> 00:11:05,920
agarro y puedo poner acá

126
00:11:09,280 --> 00:11:19,770
mensaje más y el resultado gravó qué estoy haciendo acá.

127
00:11:19,850 --> 00:11:24,340
Perdonen que vuelva a esto para explicarlo mejor por las dudas mensaje.

128
00:11:24,530 --> 00:11:30,880
Es una variable que acaba de recibir el estreno que le mandé desde acá entonces mensaje.

129
00:11:30,880 --> 00:11:37,690
Al ser una estrella lo puedo concatenar tranquilamente con él sino más a otro estreno que viene de convertir

130
00:11:37,960 --> 00:11:43,090
a estrechen la variable resultado ahora sí ha aclarado Bravo subo en la placa

131
00:11:47,120 --> 00:11:52,240
como ven ahora con solo poner esto con solo poner esto ya me parece.

132
00:11:52,250 --> 00:12:01,070
El resultado es 25 entonces si se dan cuenta tenemos una hermosa función que nos va a poder mostrar

133
00:12:01,400 --> 00:12:06,610
la suma de dōjō de dos valores sin escribir tanto código si lo tenemos que usar a cada rato.

134
00:12:06,610 --> 00:12:17,000
Yo ahora puedo poner suma números pero suma números y entre comillas voy a pasar el valor es para que

135
00:12:17,000 --> 00:12:20,870
vean que versátil me puede servir para muchas cosas.

136
00:12:20,870 --> 00:12:29,390
El valor es pasarle ahora que le tengo que pasar qué espera esta función que le pase una Extrem ya se

137
00:12:29,390 --> 00:12:29,810
lo pase.

138
00:12:29,810 --> 00:12:41,270
Ahora me pide que le pase dos números 50 50 hago otra suma números abro paréntesis el resultado el valor

139
00:12:41,300 --> 00:12:49,020
puedo poner ahora el número es y voy a pasar otra vez dos valores 11 y 11.

140
00:12:49,600 --> 00:12:53,620
Bravo caminamos acá tres grabo pruebo

141
00:12:57,980 --> 00:13:02,830
y como ven acá vamos a crear una función sahumadoras de números.

142
00:13:02,930 --> 00:13:08,220
Encima recibe un encabezado para que a la hora de imprimir salga mejor.

143
00:13:08,670 --> 00:13:14,230
Bueno eso es un ejemplo que a mí se me ocurrió para que ustedes puedan aprender pero que versátiles.

144
00:13:14,250 --> 00:13:19,340
Bueno yo les dije la nobleza es grande así que ya vemos otra de ellas.

145
00:13:20,000 --> 00:13:23,000
Y qué más tienen para darnos las funciones.

146
00:13:23,000 --> 00:13:23,470
Mucho más.

147
00:13:23,470 --> 00:13:25,820
Miren yo les voy a pedir algo

148
00:13:29,590 --> 00:13:37,270
voy a hacer algo no muy bien visto pero es para que el efecto visual sea más importante.

149
00:13:38,670 --> 00:13:40,080
Borro esto.

150
00:13:40,090 --> 00:13:47,550
Bueno imaginen por un momento entonces que cuando yo llamo a una función es que en realidad es lo que

151
00:13:47,970 --> 00:13:57,020
pasa desde acá yo estoy mandando datos imaginen una flecha que entra acá los datos se procesan y yo

152
00:13:57,020 --> 00:14:01,720
tengo la posibilidad de devolver datos al lugar donde llamé a la función.

153
00:14:01,850 --> 00:14:07,250
Por este lado imaginen ahora otra flecha que sale de acá y regresa los datos.

154
00:14:07,250 --> 00:14:14,000
Entonces cuando llama a una función le puedo dar valores o datos para que sean procesados y por acá

155
00:14:14,090 --> 00:14:15,050
los devuelve.

156
00:14:15,050 --> 00:14:16,180
Por qué digo por acá.

157
00:14:16,250 --> 00:14:25,240
Porque en realidad este BOIB que quiere decir vacío está diciendo vacío porque yo no estoy devolviendo

158
00:14:25,240 --> 00:14:26,660
nada en esta.

159
00:14:26,770 --> 00:14:32,860
En este ejemplo que hemos hecho pero eso tranquilamente podría devolver algo y que estaría bueno devolverle

160
00:14:32,950 --> 00:14:37,390
a donde llamé y estaría bueno devolverle el valor que obtuve.

161
00:14:37,480 --> 00:14:45,210
Entonces para poder devolver valores yo tengo que decir acá qué tipo de valor voy a devolver.

162
00:14:45,240 --> 00:14:53,250
No hace falta que declare nada simplemente pongo qué tipo de variable voy a devolver al lugar a donde

163
00:14:53,250 --> 00:14:55,330
fue llamada la función.

164
00:14:55,330 --> 00:15:00,180
Vean yo acá voy a poner un entero porque porque sé que yo quiero devolver resultados.

165
00:15:00,390 --> 00:15:07,830
Por ahora esto lo voy a subir acá para usarlo después voy a comentar para que no tenga efecto sobre

166
00:15:07,830 --> 00:15:09,140
el código.

167
00:15:09,210 --> 00:15:13,240
Entonces cómo hago para devolver resultado el lugar donde fue llamado.

168
00:15:13,470 --> 00:15:23,320
Es simple se usa la palabra reservado Return Return es devolver retornar y luego tengo que decirle que

169
00:15:23,320 --> 00:15:30,130
quiero retornar y en este caso quiero devolver resultado simple listo.

170
00:15:30,240 --> 00:15:37,380
Bueno entonces ahora lo que quiero que vean es lo siguiente Cuando yo llamo Azuma números y le paso

171
00:15:37,380 --> 00:15:40,750
los valores que me pide todo se procesa.

172
00:15:40,780 --> 00:15:46,060
En este caso solamente estoy devolviendo el resultado así que ya se van a dar cuenta que va a dar lo

173
00:15:46,060 --> 00:15:52,540
mismo si mando o no el mensaje por qué va a dar lo mismo y porque en realidad el resultado se conforma

174
00:15:52,540 --> 00:15:59,440
con valor 1 más valor 2 así que es más lo del mensaje y lo dejemos de lado para no complicarnos que

175
00:15:59,450 --> 00:16:00,710
se podría hacer algo seguro.

176
00:16:00,730 --> 00:16:04,880
Pero vamos a remitirnos a dos valores para hacerlo más simple

177
00:16:07,960 --> 00:16:08,940
y bueno Retomemos.

178
00:16:08,990 --> 00:16:17,650
Llamo suma números le paso los dos se suman y el valor va a volver a reemplazar esto que yo escribí

179
00:16:17,650 --> 00:16:18,580
acá.

180
00:16:18,580 --> 00:16:20,430
Sé que por ahora puede sonar confuso.

181
00:16:20,460 --> 00:16:23,430
Mira grabo en la placa y vamos a ver qué pasa.

182
00:16:28,350 --> 00:16:34,530
Si lo hago si no pasa nada porque no lo estoy imprimiendo en ningún momento entonces yo que tengo varias

183
00:16:34,530 --> 00:16:37,740
opciones y al hacerlas se van a dar cuenta de qué se trata esto.

184
00:16:37,830 --> 00:16:48,030
Ahora puedo poner Hint resultado igual a que asuma números y luego imprimir el resultado.

185
00:16:48,030 --> 00:16:53,970
Estoy diciendo que lo que me devuelva la ejecución de esta función recordemos los dos números se van

186
00:16:53,970 --> 00:16:56,930
a venir acá se van a sumar y se van a devolver aquí.

187
00:16:56,970 --> 00:17:03,700
O sea que en definitiva todo esto que puse acá va a ser reemplazado por lo que devuelva suma números.

188
00:17:03,700 --> 00:17:05,950
No sé no me acuerdo.

189
00:17:07,380 --> 00:17:11,780
Que le estábamos pasando a ver 11 y 13 24.

190
00:17:11,860 --> 00:17:13,730
Bueno va a ser reemplazado por un 24.

191
00:17:14,570 --> 00:17:23,410
Veamos y antes de grabar repasemos le digo suma números que sume 11 y 13 y me devuelve el resultado.

192
00:17:23,480 --> 00:17:25,070
Llega el 11 llega el 13 acá.

193
00:17:26,760 --> 00:17:31,650
El 11 se suma con el trece se guarda en resultados y devuelve resultado

194
00:17:34,460 --> 00:17:37,060
y acá tengo un error en el resultado.

195
00:17:37,060 --> 00:17:42,670
Ojo acá no es bueno que ponga el mismo porque se pueden confundir y pensar que estoy obligado a poner

196
00:17:42,670 --> 00:17:44,660
el nombre de la variable con la que retorne.

197
00:17:44,670 --> 00:17:51,520
No son cosas diferentes entonces yo podría poner algo así de simple lo vamos.

198
00:17:51,670 --> 00:17:56,320
Nunca le recomiendo poner variables que no hagan alusión a lo que guardan pero este es un caso extremo

199
00:17:56,320 --> 00:18:00,350
porque quiero mostrar que no importa el nombre que ponga.

200
00:18:00,640 --> 00:18:07,180
Imprimir a listo lo grabo y si el mensaje no está declarado es claro porque eso no existe.

201
00:18:07,190 --> 00:18:11,180
Los mensajes no lo usamos grabo cargo en placa

202
00:18:15,040 --> 00:18:17,610
y como ven tengo el 24.

203
00:18:17,620 --> 00:18:26,080
Estas son funciones que devuelven valores son muy usadas y son tan nobles que mira yo directamente me

204
00:18:26,080 --> 00:18:34,900
podría ahorrar esto y puedo decirle directamente imprimible y acá pongo suma números y entre paréntesis

205
00:18:34,900 --> 00:18:41,130
le paso veinte y le pasó un 30 funcionarã grabo.

206
00:18:41,760 --> 00:18:46,400
Yo diría que es hacerlo al vuelo de una listo 50.

207
00:18:46,480 --> 00:18:52,800
Funciona quedó claro cualquier cosa estaría atento a las preguntas y ya nos vemos en el próximo capítulo

208
00:18:53,070 --> 00:18:59,250
que se va a hacer con las manos en la masa a darle la placa electrónica lo que nos gusta el motivo que

209
00:18:59,250 --> 00:19:01,040
nos trajo acá el arruino.

210
00:19:01,380 --> 00:19:02,250
Nos vemos chocha.
