1
00:00:00,720 --> 00:00:07,380
En clases anteriores hemos revisado el modelamiento también hemos visto la simulación en esta clase.

2
00:00:07,380 --> 00:00:10,680
Vamos a ver ya la parte de experimentación.

3
00:00:10,890 --> 00:00:18,650
En primer lugar vamos a ver cómo podemos comunicarnos con un Jaguar en este caso vamos a utilizar Arduino

4
00:00:18,660 --> 00:00:24,810
para realizar las pruebas experimentales y comparar con las pruebas simuladas.

5
00:00:24,810 --> 00:00:33,120
Entonces vamos a ver cómo recibir múltiples datos y enviar múltiples datos desde Arduino.

6
00:00:33,120 --> 00:00:39,060
En primer lugar vamos a hacer una prueba en el cual solamente vamos a enviar un solo dato entonces vamos

7
00:00:39,060 --> 00:00:43,760
a ver cómo es la estructura de programación en la parte de Arduino.

8
00:00:43,830 --> 00:00:51,560
En primer lugar vamos a declarar las variables que vamos a necesitar para recibir y enviar los datos.

9
00:00:51,660 --> 00:00:58,260
Acá podemos ver una variable Data Stream el cual va a almacenar en forma de string todos los valores

10
00:00:58,260 --> 00:01:00,030
que vienen desde MATLAB.

11
00:01:00,390 --> 00:01:08,940
Acá tenemos un dato booleano este dato booleano va a ser una bandera indicándome que el dato o la trama

12
00:01:08,940 --> 00:01:12,840
que se ha enviado desde MATLAB ha sido correcta.

13
00:01:12,870 --> 00:01:15,640
Inicialmente lo vamos a declarar como falso.

14
00:01:15,780 --> 00:01:23,580
Una vez que llegue los datos de manera correcta alzarán esta bandera y la pondrá en verdadero.

15
00:01:23,580 --> 00:01:30,900
A continuación acá tenemos un separador este separador es necesario debido a que vamos a enviar múltiples

16
00:01:30,900 --> 00:01:31,950
datos.

17
00:01:31,950 --> 00:01:40,110
Entonces debemos tener un separador para poder separar cada uno de estos datos que vamos a enviar desde

18
00:01:40,110 --> 00:01:40,830
MATLAB.

19
00:01:40,920 --> 00:01:46,290
Entonces lo vamos a poner con un separador de Comas aquí podría ir cualquier otro valor por ejemplo

20
00:01:46,290 --> 00:01:54,570
una letra digamos una mayúscula u otro tipo de carácter que me permita distinguir entre un dato y otro

21
00:01:54,570 --> 00:01:55,460
dato.

22
00:01:55,560 --> 00:01:57,510
Aquí tenemos el tamaño del dato.

23
00:01:57,510 --> 00:02:02,400
En este caso les había mencionado que sólo vamos a enviar un dato en las siguientes pruebas vamos a

24
00:02:02,400 --> 00:02:08,460
enviar dos y hasta tres datos y vamos a ver que simplemente cambiando algunas cosas podemos enviar una

25
00:02:08,460 --> 00:02:12,330
cantidad de datos que necesitemos.

26
00:02:12,330 --> 00:02:18,710
Acá declaramos un vector en el cual se va a ir almacenando los datos un dato de tipo entero que va a

27
00:02:18,740 --> 00:02:24,650
ir almacenando en cada posición cada uno de los datos que va a enviar MATLAB.

28
00:02:24,750 --> 00:02:31,650
Acá tenemos las variables medidas en este caso nosotros al trabajar con robots móviles vamos a medir

29
00:02:31,860 --> 00:02:32,960
los RPM.

30
00:02:33,510 --> 00:02:42,870
Entonces acá declaramos una variable float que me permite almacenar aquí las rpm que vamos a leer mediante

31
00:02:42,960 --> 00:02:43,800
un Encode.

32
00:02:43,800 --> 00:02:52,170
Eso lo vamos a ir viendo en las siguientes clases de MATLAB vamos a recibir un valor de r.p.m de referencia

33
00:02:52,170 --> 00:02:54,340
para que nuestro robot se mueva.

34
00:02:54,360 --> 00:03:00,480
A continuación vamos al Setup y acabamos a realizar la configuración en primer lugar vamos a configurar

35
00:03:00,540 --> 00:03:03,390
el puerto serial a 9600 baudios.

36
00:03:03,450 --> 00:03:08,610
Estos baudios de aquí deben coincidir con los que vamos a programar y MATLAB.

37
00:03:08,610 --> 00:03:14,200
Aquí vamos a inicializar las variables que habíamos declarado acá arriba con cero.

38
00:03:14,280 --> 00:03:21,160
Luego tenemos nuestra función bailout donde se va a ejecutar nuestro programa repetidamente.

39
00:03:21,360 --> 00:03:28,040
Aquí vamos a verificar si la bandera que habíamos declarado acá arriba se encuentra como verdadera.

40
00:03:28,110 --> 00:03:31,110
Es decir que los datos han llegado de una manera correcta.

41
00:03:31,110 --> 00:03:35,210
Para ello vamos a irnos a esta función.

42
00:03:35,340 --> 00:03:42,170
Esta función serial Eben es propia de Arduino y se ejecuta cada vez que existen datos en el buffer.

43
00:03:42,180 --> 00:03:48,900
Entonces al existir datos en el buffer nosotros vamos a entrar en un bucle guey en el cual vamos a estar

44
00:03:48,900 --> 00:03:53,120
repitiendo de manera consecutiva toda esta programación.

45
00:03:53,130 --> 00:03:59,850
Entonces lo que va a hacer aquí es almacenar cada uno de los caracteres que vienen de MATLAB y como

46
00:03:59,970 --> 00:04:08,640
acá vamos a tener un carácter Char hinchar el cual lo vamos a leer con el serial RIT y luego lo vamos

47
00:04:08,640 --> 00:04:15,630
a ir concatenando en el Data string que habíamos mencionado para recibir la trama completa y luego verificamos

48
00:04:15,630 --> 00:04:19,970
si el carácter leído es igual a un salto de línea.

49
00:04:19,980 --> 00:04:25,900
Si es así nuestra trama ha llegado completa y se levanta la bandera como pueden ver acá.

50
00:04:26,010 --> 00:04:32,740
Entonces acá entraría ya este gif entonces de aquí data completo ya es verdadero entonces centralice

51
00:04:33,240 --> 00:04:37,960
y luego aquí lo que va a hacer en este fork es separar cada uno de los datos.

52
00:04:37,980 --> 00:04:46,320
En este caso como sólo tenemos un dato simplemente almacenará en la posición cero en data Zero almacenará

53
00:04:46,350 --> 00:04:47,240
el primer dato.

54
00:04:47,250 --> 00:04:55,380
Esto lo vamos a ver más a fondo cuando tengamos más de dos datos listo entonces eso lo vamos a dejar

55
00:04:55,380 --> 00:05:02,280
ahí por el momento y luego lo que vamos a hacer es asignar el data a cero los r.p.m de referencia que

56
00:05:02,280 --> 00:05:09,150
envía MATLAB y nosotros lo que vamos a hacer es de enviarlos r.p.m medidos en este caso aún no he leído

57
00:05:09,150 --> 00:05:10,760
ningún tipo de r.p.m.

58
00:05:10,830 --> 00:05:16,740
Entonces lo que voy a hacer es simplemente recibir el dato de MATLAB y voy a enviar el mismo dato y

59
00:05:16,740 --> 00:05:24,390
vamos a ver qué sucede en nuestro caso sólo vamos a trabajar con datos enteros por lo tanto es necesario

60
00:05:24,390 --> 00:05:29,300
convertir el dato de los r.p.m medidos a un tipo entero.

61
00:05:29,310 --> 00:05:36,960
Esto lo hacemos con el caset y entonces lo que vamos a hacer es encerrar el Data string y además vamos

62
00:05:36,960 --> 00:05:39,660
a bajar la bandera a Fool's.

63
00:05:39,720 --> 00:05:45,260
A continuación vamos a ver la parte de MATLAB nos vamos a MATLAB y vamos a crear un nuevo escrit.

64
00:05:45,300 --> 00:05:50,370
En primer lugar vamos a ubicar estos comandos que ya lo habíamos analizado en la parte de simulación

65
00:05:50,910 --> 00:05:57,420
Clear Clow celeste y warning luego acá tenemos el tiempo de simulación lo vamos a ejecutar durante unos

66
00:05:57,420 --> 00:06:04,260
20 segundos nuestro tiempo de muestreo de 0.1 y vamos a crear nuestro vector de tiempo acá vamos a crear

67
00:06:04,260 --> 00:06:11,310
una variable con el tamaño del vector de tiempo acá tenemos el COM aquí debemos escoger el com en el

68
00:06:11,310 --> 00:06:13,310
cual se encuentra conectado el Arduino.

69
00:06:13,350 --> 00:06:18,990
Eso lo podemos ver en el Administrador de dispositivos para observar dónde se encuentra conectado nuestro

70
00:06:18,990 --> 00:06:19,470
Arduino.

71
00:06:19,920 --> 00:06:23,420
Entonces ustedes deberían cambiar esta parte de aquí.

72
00:06:23,520 --> 00:06:29,010
Luego esta parte de aquí me permite cerrar este puerto en el caso de que esté abierto porque lo que

73
00:06:29,010 --> 00:06:35,670
tenemos que hacer en una comunicación es abrir el puerto enviar y recibir los datos y cerrar el puerto

74
00:06:35,670 --> 00:06:39,310
una vez que hayamos terminado de leer o escribir los datos.

75
00:06:39,340 --> 00:06:45,870
Luego vamos a declarar un objeto de tipo serial y lo vamos a nombrar que sería puerto serial.

76
00:06:45,990 --> 00:06:51,750
Luego vamos a enviar algunos parámetros tenemos aquí los baudios como los ya había mencionado debe coincidir

77
00:06:52,020 --> 00:06:57,410
los baudios de la configuración de MATLAB con las de Arduino en este caso 9600 baudios.

78
00:06:57,420 --> 00:07:01,950
Luego vamos a enviar la configuración del bit de parada que sería 1.

79
00:07:02,010 --> 00:07:06,240
Tenemos también el tamaño del dato en bits que sería de 8.

80
00:07:06,240 --> 00:07:11,880
Luego vamos a enviar la paridad en este caso no tiene paridad y también vamos a enviar un carácter que

81
00:07:11,970 --> 00:07:17,490
finaliza el envío esto es muy importante esta configuración para poder enviar y recibir los datos de

82
00:07:17,490 --> 00:07:18,970
una manera correcta.

83
00:07:19,050 --> 00:07:26,710
Acabamos aceptar el tamaño del buffer de entrada y de salida en este caso se da en bits.

84
00:07:26,850 --> 00:07:33,180
Nosotros podemos poner un valor más grande más pequeño siempre y cuando no sea menor al número de partes

85
00:07:33,210 --> 00:07:34,440
que vamos a recibir.

86
00:07:34,440 --> 00:07:38,370
Luego acá tenemos un tiempo de espera de dos segundos hasta que los datos lleguen.

87
00:07:39,330 --> 00:07:43,740
Listo entonces lo que vamos a enviar nosotros son las rpm de referencia.

88
00:07:43,750 --> 00:07:51,480
La vamos a enviar Arduino y luego vamos a recibir las rpm medidas para esto vamos a crear un vector

89
00:07:51,480 --> 00:07:58,200
de ceros del tamaño del vector tiempo para almacenar las rpm que vamos a medir.

90
00:07:58,200 --> 00:08:06,150
En Arduino esto lo hacemos para almacenar memoria y que nuestro programa corra mucho más rápido entre

91
00:08:06,150 --> 00:08:08,610
menos tiempo se demora es mucho mejor.

92
00:08:08,730 --> 00:08:15,360
Esto debido a que nosotros debemos hacer todo esto en menos del tiempo de muestreo es decir en menos

93
00:08:15,360 --> 00:08:17,300
de 100 milisegundos.

94
00:08:17,340 --> 00:08:23,370
Listo entonces todas las variables que vayamos a utilizar dentro de este foro que vemos acá ya lo vamos

95
00:08:23,370 --> 00:08:24,780
a revisar.

96
00:08:24,780 --> 00:08:31,070
Deben declararse como ceros como un vector de ceros del tamaño de el vector tiempo.

97
00:08:31,080 --> 00:08:37,550
Por ejemplo acabamos almacenar también el tiempo en el que se demora en realizar este procedimiento

98
00:08:37,560 --> 00:08:40,890
entonces también vamos a declararlo con un vector de ceros.

99
00:08:41,400 --> 00:08:48,510
Luego vamos a abrir el puerto vamos a abrir el puerto y vamos a poner un retardo de tres segundos esperando

100
00:08:48,540 --> 00:08:53,520
hasta que el dispositivo en este caso el Arduino se comunique con MATLAB.

101
00:08:53,700 --> 00:08:59,790
Luego que haya transcurrido este tiempo vamos a imprimir un indicador en el cual me va a mostrar que

102
00:08:59,880 --> 00:09:02,520
ya estoy recibiendo los datos en el bucle for.

103
00:09:02,550 --> 00:09:08,190
Vamos a inicializar como ya lo habíamos visto con k igual a uno hasta el tamaño del vector en este caso

104
00:09:08,190 --> 00:09:15,810
no es necesario poner estos signos directamente porque ya habíamos declarado esta variable acá dentro

105
00:09:15,810 --> 00:09:23,190
del foro vamos a utilizar unos nuevos comandos que son el tic y el TOC lo que me permite estos dos comandos

106
00:09:23,280 --> 00:09:30,750
es obtener cuánto se demora en ejecutar este código de aquí y este tiempo lo vamos a almacenar en este

107
00:09:30,750 --> 00:09:32,980
vector que habíamos declarado acá arriba.

108
00:09:33,210 --> 00:09:39,660
Entonces acá vamos a ver la trama vamos a realizar la trama como les había dicho en este caso simplemente

109
00:09:40,050 --> 00:09:46,170
vamos a enviar un solo dato para enviar este dato en primer lugar debemos considerar el tipo de dato

110
00:09:46,170 --> 00:09:46,670
MATLAB.

111
00:09:46,680 --> 00:09:52,860
Acá no considera el tipo de dato simplemente lo declara de manera automática en este caso es un tipo

112
00:09:52,860 --> 00:09:59,490
float pero si recordamos nosotros habíamos mencionado que sólo vamos a trabajar con datos de tipo entero

113
00:10:00,150 --> 00:10:06,960
para ello vamos a utilizar esta función Rouget que me permite redondear este valor y convertirlo a un

114
00:10:06,960 --> 00:10:14,100
valor de tipo entero luego acá vamos a convertir este valor a un string.

115
00:10:14,160 --> 00:10:18,120
Entonces esto lo hacemos con este comando juntos etcétera.

116
00:10:18,120 --> 00:10:21,270
Con esto convertimos este valor redondeado a string.

117
00:10:21,570 --> 00:10:27,810
Entonces tendríamos lista nuestra trama de un solo valor luego lo que vamos a hacer es escribir estos

118
00:10:27,810 --> 00:10:30,300
datos en el buffer de salida.

119
00:10:30,300 --> 00:10:36,720
Acá tenemos nuestro objeto del puerto serial el tipo de dato en este caso de string y también vamos

120
00:10:36,720 --> 00:10:42,960
a agregar el final de trama como un salto de línea ya que es necesario para levantar la bandera que

121
00:10:42,960 --> 00:10:44,860
habíamos colocado en Arduino.

122
00:10:45,120 --> 00:10:52,710
Enviamos la trama y todo esto lo va a hacer de manera sincrónica luego vamos a recibir el dato.

123
00:10:52,710 --> 00:10:58,110
Para ello lo vamos a almacenar en el vector que habíamos declarado anteriormente y para esto vamos a

124
00:10:58,110 --> 00:11:03,510
utilizar la función f scam entonces esta me permite leer este dato.

125
00:11:03,510 --> 00:11:11,310
En este caso de tipo entero como vemos aquí y también que venga con salto de línea ahora este tiempo

126
00:11:11,310 --> 00:11:17,760
puede ser variable por ejemplo puede ser de 10 20 30 15 milisegundos.

127
00:11:17,850 --> 00:11:24,540
Nosotros necesitamos un tiempo estable un tiempo que sea constante de 0.1 segundos.

128
00:11:24,570 --> 00:11:30,990
Entonces nosotros para asegurar este tiempo de muestreo de 100 milisegundos vamos a utilizar esta parte

129
00:11:30,990 --> 00:11:36,510
de aquí el cual me permite tener el tiempo de muestreo de una manera constante.

130
00:11:36,570 --> 00:11:43,710
Le decimos que mientras Tok es decir va a estar constantemente leyendo el tiempo sea menor al tiempo

131
00:11:43,710 --> 00:11:52,380
de muestreo es decir 0.1 segundos entonces no hace nada sigue en el bucle hasta que se complete y cumpla

132
00:11:52,380 --> 00:11:57,950
su tiempo de muestreo sale y continúa para la siguiente iteración.

133
00:11:58,050 --> 00:12:05,400
Luego vamos a imprimir acá fin en la ventana de comandos vamos a imprimir lo pin para saber que ya ha

134
00:12:05,400 --> 00:12:07,490
terminado de recolectar los datos.

135
00:12:07,620 --> 00:12:13,550
Luego acá vamos a enviar un nuevo valor en este caso vamos a enviar un valor de cero.

136
00:12:13,560 --> 00:12:21,450
Esto debido a que por ejemplo cuando estemos haciendo el control de los motores vamos a necesitar que

137
00:12:21,510 --> 00:12:25,780
el robot se pare entonces nosotros vamos a enviar unas DPM de cero.

138
00:12:25,790 --> 00:12:32,760
Entonces por esto también es necesario al finalizar el bucle for luego acá simplemente es realizar las

139
00:12:32,760 --> 00:12:33,390
gráficas.

140
00:12:33,390 --> 00:12:41,580
Vamos a comparar tanto las rpm medidas como las rpm de referencia luego que hemos hecho todo esto lo

141
00:12:41,580 --> 00:12:43,660
que vamos a hacer es cerrar el puerto.

142
00:12:43,710 --> 00:12:50,640
Entonces esto debería ir antes eso lo vamos a colocar después de que realiza esto vamos a cerrar el

143
00:12:50,640 --> 00:12:58,290
puerto cerramos el puerto borramos el objeto y luego vamos a realizar la gráfica de tiempo para observar

144
00:12:58,290 --> 00:13:02,070
cuánto tiempo se demoró en ejecutar este código de aquí.

145
00:13:02,190 --> 00:13:08,190
Esto es muy importante tener en cuenta que al momento de correr MATLAB debemos tener cerrado todos los

146
00:13:08,190 --> 00:13:13,140
otros programas porque van a afectar en este tiempo de medición.

147
00:13:13,350 --> 00:13:18,840
Entonces hay que tener en cuenta eso en mi caso yo estoy utilizando algunos programas que están abierto

148
00:13:18,840 --> 00:13:26,280
entonces el tiempo va a ser un poco más de lo esperado digámoslo así entonces vamos a correr el programa

149
00:13:26,920 --> 00:13:32,820
como podemos observar y aparece el mensaje en el cual me dice que está recibiendo los datos ahora debemos

150
00:13:32,820 --> 00:13:38,540
esperar el mensaje que me dice que ha finalizado la recepción de los datos.

151
00:13:38,550 --> 00:13:46,500
Entonces vamos a esperar y podemos observar que ha finalizado en esta gráfica podemos observar el tiempo

152
00:13:46,500 --> 00:13:53,310
de muestreo que en promedio se ha demorado unos 55 milisegundos en realizar todo este procedimiento

153
00:13:53,320 --> 00:13:59,940
entonces es bastante bueno porque aún tenemos tiempo para realizar otras operaciones como el control.

154
00:13:59,940 --> 00:14:06,510
Acá podemos observar la gráfica de las señales tenemos la señal medida de color azul y la señal de referencia

155
00:14:06,510 --> 00:14:12,810
de color rojo bueno en este caso deberían coincidir las señales verdad es decir la que estamos enviando

156
00:14:12,810 --> 00:14:20,640
desde MATLAB luego la estamos pasando por Arduino y de nuevo estamos regresando hacia MATLAB pero recordemos

157
00:14:20,640 --> 00:14:27,060
que en Arduino estamos trabajando con variables sólo de tipo entero entonces las de rojo como habíamos

158
00:14:27,060 --> 00:14:34,680
visto acá es de tipo float como vemos acá y la que retorna es de tipo entero por lo tanto se va a redondear

159
00:14:34,680 --> 00:14:35,980
ciertas partes.

160
00:14:36,000 --> 00:14:44,100
Es por ello que podemos notar que estos pequeños escalones que vemos aquí podemos observar ahí esa es

161
00:14:44,090 --> 00:14:47,180
la parte de redondeo de la señal.

162
00:14:47,310 --> 00:14:54,300
Entonces como vemos acá esta es de tipo entero y la variable de acá es de tipo float es decir tiene

163
00:14:54,300 --> 00:15:01,980
mucha más precisión listo entonces lo siguiente que vamos a hacer ya las pruebas con más variables por

164
00:15:01,980 --> 00:15:09,210
ejemplo cuando trabajamos con el robot mi ciclo necesitamos dos r.p.m es decir de la llanta izquierda

165
00:15:09,240 --> 00:15:10,740
y de la llanta derecha.

166
00:15:10,740 --> 00:15:17,360
Por ejemplo cuando trabajemos con robots donde ya tengan más motores necesitaremos agregar nuevas variables

167
00:15:17,370 --> 00:15:25,410
entonces vamos a trabajar con dos y vamos a llegar hasta tres y vamos a ver que es muy fácil acoplar

168
00:15:25,470 --> 00:15:30,130
este código tanto de Arduino como además para adquirir más señales.

169
00:15:30,150 --> 00:15:36,090
Entonces vamos a cambiar primero un Arduino vamos a ir a un arduino entonces vamos a declarar otras

170
00:15:36,090 --> 00:15:43,950
nuevas variables vamos a copiar esto de hacking y vamos a pegar la sacábamos a cambiarla de nombre simplemente

171
00:15:43,950 --> 00:15:48,780
vamos a poner uno uno y aquí ya el tamaño de los datos va a ser de dos.

172
00:15:48,780 --> 00:15:56,550
Vamos a recibir todos datos y también vamos en ciertos datos entonces vamos a ver acá también vamos

173
00:15:56,610 --> 00:15:58,750
a declarar estas variables.

174
00:15:58,980 --> 00:16:05,870
Como ven simplemente es copiar e ir cambiando los nombres vamos a cambiar aquí los nombres.

175
00:16:05,910 --> 00:16:12,830
Esto como les había mencionado es automático acá me va a detectar la cantidad de datos en este caso

176
00:16:12,840 --> 00:16:14,040
ya va a ser dos.

177
00:16:14,070 --> 00:16:20,880
Luego acá mediante esta función me permite separar cada uno de los datos mediante este separador que

178
00:16:20,880 --> 00:16:23,280
habíamos visto acá que es la coma.

179
00:16:23,430 --> 00:16:28,860
Listo entonces se va a ir almacenando se va a ir almacenando estos datos en cada una de las posiciones

180
00:16:28,860 --> 00:16:30,990
del vector data.

181
00:16:31,080 --> 00:16:37,460
Listo entonces acá lo que vamos a hacer también es acá recibir este dato.

182
00:16:37,920 --> 00:16:40,620
Vamos a recibir este dato.

183
00:16:41,430 --> 00:16:47,970
Ahora vamos a tener también otra r.p.m de referencia pero va a ser la posición 1 y acá también sería

184
00:16:47,970 --> 00:16:54,010
1 y acá de igual manera sería 1 listo y también vamos a imprimir.

185
00:16:54,010 --> 00:17:00,540
Entonces como les había mencionado también vamos a enviar estos datos hacia MATLAB.

186
00:17:00,600 --> 00:17:01,350
Listo.

187
00:17:01,440 --> 00:17:06,840
Lo que debemos considerar para enviar de manera correcta los datos desde arruino MATLAB es que sea de

188
00:17:06,840 --> 00:17:11,010
tipo entero y también tenga el salto de línea listo.

189
00:17:11,010 --> 00:17:19,380
Entonces acá ya no hay nada más que realizar simplemente vamos a guardar y lo vamos a cargar en el Arduino

190
00:17:20,760 --> 00:17:26,730
listo una vez que hemos cargado en el Arduino vamos a hacer lo siguiente Vamos irnos a MATLAB y vamos

191
00:17:26,730 --> 00:17:34,160
a cambiar algunas cosas acá lo que vamos a hacer es vamos a enviar otra referencia diferente a esta.

192
00:17:34,170 --> 00:17:41,940
Entonces vamos a crear otra variable que se va a llamar RPM rev 1 y vamos a enviar una función tipo

193
00:17:41,940 --> 00:17:43,470
C listo.

194
00:17:43,470 --> 00:17:48,800
De igual manera vamos a crear este vector para almacenar memoria.

195
00:17:48,840 --> 00:17:50,130
Listo.

196
00:17:50,220 --> 00:17:52,500
Luego vamos a QAM y acá en la trama.

197
00:17:52,530 --> 00:17:58,980
Acá es importante la trama debemos armar la trama de tal manera que reciba de manera correcta en Arduino

198
00:17:59,010 --> 00:18:03,900
para ello vamos a concatenar y esto lo vamos a hacer creando un vector.

199
00:18:03,900 --> 00:18:09,630
Entonces vamos a hacer lo siguiente vamos a encerrar entre corchetes vamos a dar un espacio vamos a

200
00:18:09,630 --> 00:18:17,740
poner el separador Koma vamos a dar un espacio y vamos a ubicar el otro valor.

201
00:18:17,850 --> 00:18:24,630
En este caso vamos a copiar esto de acá y lo vamos a pegar y vamos a poner aquí el valor 1.

202
00:18:24,660 --> 00:18:25,160
Listo.

203
00:18:25,290 --> 00:18:27,500
Entonces aquí ya hemos hecho nuestra trama.

204
00:18:27,600 --> 00:18:34,980
Acá se mantiene lo mismo y acá lo que deberíamos hacer es leer el otro dato entonces acá aumentaría

205
00:18:35,160 --> 00:18:42,510
de igual manera 1 y esto lo mantendríamos listo entonces acá también deberíamos aumentar en la figura

206
00:18:42,850 --> 00:18:45,170
ya vamos a tener dos variables.

207
00:18:45,180 --> 00:18:47,720
Por lo tanto hay que poner su plot.

208
00:18:47,790 --> 00:18:55,110
Vamos a ponerle dos filas una columna y vamos a activar la primera fila entonces podemos ver ACAM y

209
00:18:55,110 --> 00:19:00,690
vamos a copiar esto de hacking y vamos a dar enter y vamos a pegar.

210
00:19:00,690 --> 00:19:07,260
Vamos a activar la segunda fila y aquí vamos a pilotear la otra señal.

211
00:19:07,410 --> 00:19:10,260
Vamos a plantear la otra señal y listo.

212
00:19:11,160 --> 00:19:19,140
Vamos a correr el programa y vamos a observar el resultado listo a terminado pero hay un pequeño problema

213
00:19:19,600 --> 00:19:28,550
no hemos colocado bien el nombre vamos ACAM y aquí es su vlogs.

214
00:19:28,920 --> 00:19:35,190
Este es el nombre correcto no lo hemos ubicado bien ahora simplemente vamos a correr esta parte del

215
00:19:35,190 --> 00:19:39,320
código para ello simplemente debemos dar control Enter.

216
00:19:39,390 --> 00:19:44,300
Recuerden que podemos correr esta sección de código siempre y cuando tenemos acá.

217
00:19:44,310 --> 00:19:52,560
Como ven estos dos símbolos de porcentaje damos controlé enter y podemos observar las gráficas en este

218
00:19:52,560 --> 00:20:00,080
caso podemos ver que incluso aumentó más variables y el tiempo bajó en que debería hacerlo como les

219
00:20:00,080 --> 00:20:05,030
había mencionado este tiempo va a variar dependiendo de las aplicaciones que estén abiertas y otros

220
00:20:05,030 --> 00:20:08,690
factores entonces podemos ver qué hizo en menor tiempo.

221
00:20:08,720 --> 00:20:11,370
Sin embargo hubo más código.

222
00:20:11,570 --> 00:20:21,190
Entonces podemos observar a Kage hemos enviado la señal de referencia coseno y acá la variable C.

223
00:20:21,250 --> 00:20:23,330
Entonces como ven se cumple.

224
00:20:23,330 --> 00:20:26,600
Estamos recibiendo y enviando correctamente los datos.

225
00:20:27,020 --> 00:20:33,530
Entonces como ven es sumamente sencillo acoplar este código que les voy a proporcionar de manera muy

226
00:20:33,530 --> 00:20:36,530
fácil ir aumentando las variables que ustedes deseen.

227
00:20:36,530 --> 00:20:43,700
Vamos a intentar en este caso con tres vamos a intentar con tres vamos irnos acá y acá vamos a crear

228
00:20:44,120 --> 00:20:51,560
un pronombre y ya no vamos a enviar esto simplemente vamos enviarlo de esta manera.

229
00:20:51,560 --> 00:20:58,920
Listo vamos a cambiar vamos a crear simplemente una pendiente cambiemos de este valor dejémosle en 9.

230
00:20:59,060 --> 00:21:00,350
Listo.

231
00:21:00,350 --> 00:21:08,940
Luego acá también vamos a crear este valor que vamos a leer vamos a crear igual otra variable.

232
00:21:09,410 --> 00:21:12,210
Listo y acabamos de aumentar la trama.

233
00:21:12,230 --> 00:21:14,160
Vamos a copiar esta parte de ACAM.

234
00:21:14,210 --> 00:21:19,030
Como ven solamente hay que copiar y pegar e ir cambiando los nombres.

235
00:21:19,040 --> 00:21:23,330
Esto sí hay que tener mucho cuidado al momento de copiar hay que tener en cuenta que debemos cambiar

236
00:21:23,330 --> 00:21:24,330
los nombres.

237
00:21:24,470 --> 00:21:27,530
Listo y acabamos de poner una variable más.

238
00:21:27,530 --> 00:21:33,200
Podemos recibir sólo dos no hay ningún problema pero voy a recibir tres variables eso no hay ningún

239
00:21:33,200 --> 00:21:34,640
inconveniente.

240
00:21:34,640 --> 00:21:41,930
Podemos recibir por ejemplo enviar dos recibir tres o cuatro y así no debe ser exactamente el mismo

241
00:21:41,930 --> 00:21:46,060
número de variables que se envían que las que se reciben.

242
00:21:46,310 --> 00:21:52,520
Pero en nuestro caso sí debemos hacerlo entonces vamos a crear otra variable listo ya estamos leyendo

243
00:21:52,640 --> 00:21:59,650
y también vamos a pilotear esta variable de aquí entonces vamos a crear otra tercera fila y listo y

244
00:21:59,660 --> 00:22:08,910
vamos a copiar esta parte de aquí vamos a pegar y vamos a activar la tercera fila listo y vamos a cambiar.

245
00:22:09,060 --> 00:22:17,390
Acá falta cambiar el nombre vamos a cambiar el nombre acá cambiamos aquí y creo que ya está todo listo

246
00:22:17,450 --> 00:22:25,340
en la parte de MATLAB listo vamos a disminuir un poco el tiempo vamos a dejarlo solamente en 10 segundos

247
00:22:26,100 --> 00:22:27,050
listo.

248
00:22:27,650 --> 00:22:29,270
Ahora vamos a irnos Arduino.

249
00:22:29,270 --> 00:22:35,660
Nos vamos a Arduino y nuevamente vamos acá importante primero cambiar el tamaño de los datos que van

250
00:22:35,660 --> 00:22:43,100
a ser tres en este caso vamos a recibir tres datos entonces vamos a copiar estas variables vamos a pegar

251
00:22:43,550 --> 00:22:52,550
vamos a poner dos vamos a poner dos listo y luego acá también vamos a inicializar las vamos a ponerlas

252
00:22:52,610 --> 00:23:03,740
con el valor de cero entonces vamos a ubicar aquí el valor todos todos listo y acá copiamos este código

253
00:23:05,450 --> 00:23:14,340
vamos a pegarlo y acá vamos a ponerlo dos acá recuerden también que vamos a recibir ya en el 2.

254
00:23:14,570 --> 00:23:21,500
También tenemos dos y también dos y también vamos a enviar como les había mencionado podemos enviar

255
00:23:21,500 --> 00:23:28,040
solamente esos dos datos pero hay que tener en cuenta que MATLAB también debemos poner solamente dos

256
00:23:28,130 --> 00:23:33,590
es decir aquí también tendríamos que poner sólo dos es decir borrar esta parte de aquí pero también

257
00:23:33,590 --> 00:23:41,840
vamos a recibir los datos todos los datos completos entonces vamos a copiar y vamos a pegar listo entonces

258
00:23:41,840 --> 00:23:49,670
vamos a poner el valor número dos listo entonces ya hemos terminado la programación en Arduino.

259
00:23:49,670 --> 00:23:59,420
Vamos a cargar vamos a cargar el código y vamos a observar cuál es el resultado en Matlab entonces ya

260
00:23:59,420 --> 00:24:08,390
se cargó el código y vamos a ejecutar acá listo ejecutamos el código y vamos a observar cuál es el resultado

261
00:24:08,810 --> 00:24:15,800
ha finalizado y vamos a ver en este caso como ven está dentro de los 50 milisegundos el tiempo en el

262
00:24:15,800 --> 00:24:18,970
que se ha demorado la recepción de datos.

263
00:24:18,980 --> 00:24:26,050
Vamos a cerrar y podemos observar que efectivamente se han recibido los datos de manera muy correcta.

264
00:24:26,060 --> 00:24:32,560
Tenemos aquí la función seno la función coseno y aquí la pendiente que habíamos realizado.

265
00:24:32,570 --> 00:24:38,370
Entonces como ven es muy sencillo leer múltiples datos en Matlab con Arduino.

266
00:24:38,390 --> 00:24:45,670
Entonces esto nos va a servir para comunicarnos con Arduino y realizar los controladores aquí en MATLAB.

267
00:24:45,710 --> 00:24:51,060
Vamos a realizar tanto la parte de simulación y la parte real aquí en MATLAB.

268
00:24:51,170 --> 00:24:52,850
Esto sería todo en esta clase.
