Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Practicas Comunicación Serial Arduino y Visual Studio, Ejercicios de Programación Genética

Compilación de pequeñas practicas de comunicación serial con arduino

Tipo: Ejercicios

2019/2020

Subido el 09/08/2021

usuario desconocido
usuario desconocido 🇲🇽

3 documentos

1 / 41

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
ContentsUNIDAD3PRACTICASDECOMUNICACIÓNCONARDUINO............................................2ConexiónalpuertoSerial............................................................................................................................3PRACTICA1ENVIODEBYTESPORPUERTOSERIAL........................................................7ElcódigodeVisualBasiceselsiguiente:........................................................................................................8Dentrodelardunio.........................................................................................................................................9Demostración...............................................................................................................................................10PRACTICA2ENVIODENUMEROSENELPUERTOSERIAL...........................................10DentrodelaprogramacióndeVisualBasic..................................................................................................12Dentrodelscrollbar.................................................................................................................................13AhoraCodigodearduino.............................................................................................................................141.‐Simplificaciónyseparacióndevoidsenotrapaginadearduno:.......................................................142.‐EjecuciónylecturasdelpuertoserialconArduno.............................................................................19Demostración...............................................................................................................................................24PRACTICA3ENVIODENUMEROSPARAMATRIZDELEDS..........................................25ElcódigodeArduino....................................................................................................................................26Pagina1:Métodos...................................................................................................................................26Pagina2Procesos..................................................................................................................................28CódigodeVisualStudio:...............................................................................................................................31Dentrodeleventocellclic.......................................................................................................................34ParaelbotóndesSelect:..........................................................................................................................34DentrodelbotónSeleccionartodo.........................................................................................................35BotónSeleccionarvarias.........................................................................................................................35Botón“Mandarmatriz”...........................................................................................................................37Demostración...............................................................................................................................................39
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29

Vista previa parcial del texto

¡Descarga Practicas Comunicación Serial Arduino y Visual Studio y más Ejercicios en PDF de Programación Genética solo en Docsity!

Contents

  • UNIDAD 3 PRACTICAS DE COMUNICACIÓN CON ARDUINO............................................
  • Conexión al puerto Serial............................................................................................................................
  • PRACTICA 1 ENVIO DE BYTES POR PUERTO SERIAL........................................................
    • El código de Visual Basic es el siguiente:........................................................................................................
    • Dentro del ardunio.........................................................................................................................................
    • Demostración...............................................................................................................................................
  • PRACTICA 2 ENVIO DE NUMEROS EN EL PUERTO SERIAL...........................................
    • Dentro de la programación de Visual Basic..................................................................................................
      • Dentro del scrollbar.................................................................................................................................
    • Ahora Codigo de arduino.............................................................................................................................
      • 1.‐ Simplificación y separación de voids en otra pagina de arduno:.......................................................
      • 2.‐ Ejecución y lecturas del puerto serial con Arduno.............................................................................
    • Demostración...............................................................................................................................................
  • PRACTICA 3 ENVIO DE NUMEROS PARA MATRIZ DE LEDS..........................................
    • El código de Arduino....................................................................................................................................
      • Pagina 1: Métodos...................................................................................................................................
      • Pagina 2 Procesos..................................................................................................................................
    • Código de Visual Studio:...............................................................................................................................
      • Dentro del evento cell clic.......................................................................................................................
      • Para el botón desSelect:..........................................................................................................................
      • Dentro del botón Seleccionar todo.........................................................................................................
      • Botón Seleccionar varias.........................................................................................................................
      • Botón “Mandar matriz”...........................................................................................................................
    • Demostración...............................................................................................................................................

Unidad 3 practicas de comunicación con arduino.

Antes de comenzar me gustaría remarcar la importancia de los comandos que se

utilizan en este Proyecto: (Salteándose la inicialización del puerto serial)

Arduino van a ser

Serial.read(); // Lee la información de entrada al Puerto serial y regresa el primer

byte del puerto serial disponible o sino regresa un 1 si no está disponible y regresa

el tipo de dato entero algo así como:

int incomingbyte = Serial.read ();

Serial.print(“I received”);

Serial.println(incomingbyte, DEC);

bitRead (); // Este lee el bit de un numero algo así como si estuviera leyendo

posiciones especificas de un arreglo con posición (0, n):

bitRead(x ,n ) donde x es el numero(o byte) de donde leer y n es el bit a leer,

iniciando desde 0 hacia la derecha del bit menos significativo ( 0b,00001 →)

Serial.parseInt(); //Lee el siguiente intergal valido de una cadena de información del

puerto serial, con valida me refiero a que solo lee numero y no valores

alfanuméricos como son A Z, solo lee 0 9. Caracteres inciiales que no son dígitos o

números negativos son omitidos, el parsing se detien cuando no se ha logrado leer

después de un cierto tiempo (timeout). Si ningún digito fue leído cuando el se

termina el tiempo de espera regresará un 0.

Algo asi como:

//Digamos que dentro de Arduino escribimos en el puerto serial AFKG

int numero_de_puerto_serial = Serial.parseInt();

Serial.print(numero_de_puerto_serial);

Recuerda que en el puerto serial arduino puede escribir y recibir números de n base

como son BIN, DEC, OCT, HEX; de la siguiente manera:

BIN: B1001(Comienzas con B o también 0b), OCT: 0173(Comienzas con 0 y tienes

valores máximos de 7 de 4 bits), HEX: 0x123 (Comienzas con 0X).

OJO: La placa arduino debe de estar conectada

Selecciona el puerto y dar click a botón “Conectarse al puerto”

El codigo de este botón es:

foreach (string p in SerialPort.GetPortNames()) { comboBox1.Items.Add(p); } //Botón de conectarse al puerto seleccionado: try { puerto1.PortName = comboBox1.SelectedItem.ToString(); puerto1.BaudRate = 9600; puerto1.DataBits = 8; puerto1.Open(); lb_ESTADO.Text = "Conectado"; P1_SerieLeds.Enabled = true; P2_SerieDisp.Enabled = true; P3_Matrices.Enabled = true; MessageBox.Show("Se ha conectado al Puerto Serial: " + comboBox1.SelectedItem.ToString()); } catch (Exception) { lb_ESTADO.Text = "Error de conexión"; }

Con esto se nos abre la interfaz de proyectos que se verán a continuación:

Practica 1 envio de bytes por puerto serial

Realizar el siguiente programa que realice lo siguiente

 Conectarse al puerto serial usando clases

 Mostrar los puertos seriales que están disponibles

 Agregar un slider entre 0 y 255 para enviar los datos al arduino

 En arduino tomar el byte y convertirlo en binario para mostrarlo con 8 leds.

Aqui Se utiliza el bitRead()

Lo que hace el bit read es leer el bit d eun numero su sintax es bitRead(x,n) donde x es

el numero a leer, n es el bit a leer iniciando desde 0 para el bit menos significativo,

Este codigo es como si fuera una indexación de un arreglo de bytes de dimensiones: 1

filas, n columnas, y nos retorna 1 o 0 dependiendo del contenido del arreglo:

byte[] datos = new byte[1]; es la declaración del byte a leer, para indexar este dato escribimos bitRead(datos,0); //Aquí se indexa del arreglo datos, la columna 0.

El código de Visual Basic es el siguiente:

(Dentro del scrollbar) //Agregar los valores del scrollbar int Sb_val = hScrollBar1.Value; //Convertir los valores scrollbar a string e imprimirlos en un label lb_ValScrl.Text = Sb_val.ToString(); //Pasar a binario el valor para la impresión de valores en un label //Ojo esto no funciona para variables, solo para crear strings con finalidad //de escribir en forma de texto lb_valBinHscrl.Text = Convert.ToString(Sb_val, 2); //Crear una base de datos de tipo byte que contendrá el valor de la scrollbar byte[] datos = new byte[1]; //Pasar a binario el valor de la scrollbat datos[0] = (byte)(Sb_val);

Demostración

Practica 2 envio de numeros en el puerto serial

Realizar el siguiente programa con los siguientes puntos

 Conectarse al puerto serial usando clases

 Mostrar los puertos seriales que están disponibles

 Agregar un slider entre 0 y 9999 para enviar los datos al arduino

 En arduino tomar los números en char y presentarlos en un display de 7

segmentos con 8 dı́gitos

El diseño es

Dentro de la programación de Visual Basic

Dentro del scrollbar

//Variables int Sb_P2 = ScrollBar2.Value; string LongitudValor = Sb_P2.ToString(); lb_ValScrlB2.Text = LongitudValor; //Según la longitud será el valor de cada Unidad if (LongitudValor.Length == 1) { //Escribir en un label el valor unitario del scorllbar lb_Uni.Text = LongitudValor[0].ToString(); lb_Dec.Text = "0"; lb_Cen.Text = "0"; lb_Mil.Text = "0"; //Este es importante //Manda al puerto serial cadena de valor con inicial u //Esta u le indicará al arduino que son unidades puerto1.Write("u" + LongitudValor[0].ToString()); puerto1.Write("d" + 0); puerto1.Write("c" + 0); puerto1.Write("m" + 0);

else if (LongitudValor.Length == 2) { //Mostrar valores reposicionados en labels lb_Uni.Text = LongitudValor[1].ToString(); lb_Dec.Text = LongitudValor[0].ToString(); //Pasar a 0 si es que no existe lb_Cen.Text = "0"; lb_Mil.Text = "0"; //Ahora envia u y d, esto muestra que son //unidades, decenas, arduino las tomará por separado puerto1.Write("u" + LongitudValor[1].ToString()); puerto1.Write("d" + LongitudValor[0].ToString()); puerto1.Write("c" + 0); puerto1.Write("m" + 0); } else if (LongitudValor.Length == 3) { lb_Uni.Text = LongitudValor[2].ToString(); lb_Dec.Text = LongitudValor[1].ToString(); lb_Cen.Text = LongitudValor[0].ToString(); lb_Mil.Text = "0"; puerto1.Write("u" + LongitudValor[2].ToString()); puerto1.Write("d" + LongitudValor[1].ToString()); puerto1.Write("c" + LongitudValor[0].ToString()); puerto1.Write("m" + 0); } else if (LongitudValor.Length == 4) { lb_Uni.Text = LongitudValor[3].ToString(); lb_Dec.Text = LongitudValor[2].ToString(); lb_Cen.Text = LongitudValor[1].ToString(); lb_Mil.Text = LongitudValor[0].ToString(); puerto1.Write("u" + LongitudValor[3].ToString()); puerto1.Write("d" + LongitudValor[2].ToString()); puerto1.Write("c" + LongitudValor[1].ToString()); puerto1.Write("m" + LongitudValor[0].ToString()); }

for (int c = 0; c < 7; c++) { digitalWrite(disp7[c], tabla[x][c]); } } actDisp3(); delay(5); desacDisp(); } else if (a == "c") { if (x >= 0 && x <= 9) { for (int c = 0; c < 7; c++) { digitalWrite(disp7[c], tabla[x][c]); } } actDisp2(); delay(5); desacDisp(); } else if (a == "m") { if (x >= 0 && x <= 9) {

for (int c = 0; c < 7; c++) { digitalWrite(disp7[c], tabla[x][c]); } } actDisp1(); delay(5); desacDisp(); } }

La serie actDispX()

Esta serie de voids habilitan los displays deacuerdo con lo que le ordene el metodo

MostrarDisplay

void actDisp1() { digitalWrite(dsp1, LOW); digitalWrite(dsp2, HIGH); digitalWrite(dsp3, HIGH); digitalWrite(dsp4, HIGH); } void actDisp2() { digitalWrite(dsp1, HIGH); digitalWrite(dsp2, LOW);

digitalWrite(dsp4, HIGH); }

2.‑ Ejecución y lecturas del puerto serial con Arduno

En esta separación hice las lecturas y operaciones usando los voids

char lectura; int NumUni = 0; int NumDec = 0; int NumCen = 0; int NumMil = 0; int disp7[] = { 13, 12, 11, 10, 9, 8, 7}; //declaración de los pines int tabla[10][7] = {

{1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 0, 0, 0, 0}, {1, 1, 0, 1, 1, 0, 1}, {1, 1, 1, 1, 0, 0, 1}, {0, 1, 1, 0, 0, 1, 1}, {1, 0, 1, 1, 0, 1, 1}, {0, 0, 1, 1, 1, 1, 1}, {1, 1, 1, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 0, 0, 1, 1} }; int dsp1 = 5; int dsp2 = 4; int dsp3 = 3; int dsp4 = 2; void setup() { pinMode(dsp1, OUTPUT); pinMode(dsp2, OUTPUT); pinMode(dsp3, OUTPUT); pinMode(dsp4, OUTPUT); for (int x = 0; x < 7; x++) { pinMode(disp7[x], OUTPUT); } Serial.begin(9600);