Sei sulla pagina 1di 10

Guia de ejercicios Ing.

Tulio German
programación en C++ Mamani Mita

5MANEJO DE ARDUINO CON


VISUAL C#

5.1 CONFIGURACION DEL ARDUINO UNO

5.1.1 En el IDE de arduino seleccionamos el arduino uno para el ejercicio

5.1.2 Conectamos el Ardunio a uno de los puertos US,de manera automática en


el administrador de dispositivos Windows se indentificara el puerto COM
que usara arduino.

1
2010
Guia de ejercicios Ing. Tulio German
programación en C++ Mamani Mita

5.1.3 Configuramos el puerto elegido por Arduino en el IDE:

5.2 CODIFICACION EN EL ARDUINO UNO

5.2.1 Escribimos el siguiente código para manejar dos pines de salida y entrada
desde el visual C.

2
2010
Guia de ejercicios Ing. Tulio German
programación en C++ Mamani Mita

/*Definimos los pines 12 y 13 paea salida del Arduino y PIN 11


para lectura
*/

#define Led13 13
#define Led12 12
int Led11=11;

void setup() {
// Definimos un´puerto serial y configuramos los pines
Serial.begin(9600);
pinMode(Led13,OUTPUT);
pinMode(Led12,OUTPUT);
pinMode(Led11,INPUT);

void loop() {

//definimos la variable valor del tipo int o char para


//leer los datos del pin 11, si valor es 1, el Ardunio eviara
//un caracter 'a' a la PC por el puerto USB serial, si valor
//es cero se enviara un caracter 'b'

int valor = digitalRead(Led11) ;


if (valor==1)
Serial.println('a');
if (valor==0)
Serial.println('b');

//SI e puerto Serial esta disponible se lee en la variable 'c'


//de tipo char lo que la PC envie por el puerto USB
//segun el valor enviado se escribe un uno o cero en los pines
//12 o 13
if (Serial.available())
{
char c=Serial.read();
if (c=='1') digitalWrite(Led13,HIGH);
if (c=='0') digitalWrite(Led13,LOW);
if (c=='2') digitalWrite(Led12,HIGH);
if (c=='3') digitalWrite(Led12,LOW);

}
}

3
2010
Guia de ejercicios Ing. Tulio German
programación en C++ Mamani Mita

5.2.2 Cargamos el programa desde el IDE hacia el arduino para ello hacemos
click en el boton subir del IDE y esperamos que nos de una respuesta
afirmativa de la carga:

4
2010
Guia de ejercicios Ing. Tulio German
programación en C++ Mamani Mita

5.2.3 A patir de este momento el programa esta corriendo en el Arduino y ahora


podemos probar como funciona monitoreando el puerto USB , para ello
vamos a Herramientas->Monitor Serie:

5.2.4 Abierto el monitor serie podemos escribir los valores de1,0,2,3 para
controlar los valores alto y bajo de lospines 12 y 13, también podemos
observar como los datos de lectura el pin once se ven como caracteres a y
b según cambiemos este pin de entrda a alto o bajo.

5.3 CODIFICACION ESCRITURA DE DATOS VISUAL C#

5.3.1 Sobre una ventana Visual C# adicionemos los siguientes componentes


 Dos botones para encendido y apagado de los leds y u panel para idnicar que el
led se encuentra encendido o apagado (Esto replicar para los leds 12 y 13).

5
2010
Guia de ejercicios Ing. Tulio German
programación en C++ Mamani Mita

 Un panel para el led de lectura led 11 y un TExtbox para ver los datos
capturados..
 Todos estos componentes agrupados.
 Un combobox para cargar los puertos existentes.
 Una opción de Menu “Puerto” con submenús Abrir y Cerrar , esto para abrir y
cerrar el puerto serial.
 Un componente SerialPort para la comunicación hacia el Arduino.

5.3.2 Incluyamos las librerías para manejo de puertos incluyendo


System.IO.Ports:

using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;

5.3.3 Para cargar el combobox con los puertos disponibles editamos el codigode
la ventana creando la función getPuertos, esta se ejecutara al inciar el
programa

public partial class Form1 : Form


{
public Form1()

6
2010
Guia de ejercicios Ing. Tulio German
programación en C++ Mamani Mita

{
InitializeComponent();
getPuertos();
}

//creando el metodo para acceder a los puertos disponibles

void getPuertos()
{
String[] puertos = SerialPort.GetPortNames();
comboBox1.Items.AddRange(puertos);
}

5.3.4 En la opción Abrir del Menu Puertos editamos el siguiente codigo para
configurar el componente SerialPort y abrirlo.

private void AbrirToolStripMenuItem_Click(object sender, EventArgs e)


{
serialPort1.PortName = comboBox1.Text;
serialPort1.BaudRate = Convert.ToInt32("9600");
serialPort1.DataBits = 8;
serialPort1.StopBits = StopBits.One;
serialPort1.Parity = Parity.None;
serialPort1.Handshake = Handshake.None;
serialPort1.RtsEnable = true;
serialPort1.Open();

5.3.5 Tambien para la Opcion Cerrar editamos el siguiente código que nos
permitirá cerrar el puerto

private void cerrarToolStripMenuItem_Click(object sender, EventArgs e)


{
serialPort1.Close();
}

7
2010
Guia de ejercicios Ing. Tulio German
programación en C++ Mamani Mita

5.3.6 Hecho todo esto ejecutamos el programa y antes de abrir seleccionemos el


puerto asociado al arduino, en este ejemplo es el COM9.

5.4 ENVIAR DATOS AL ARDUINO

5.4.1 Editemos los botones de Asociados a cada led para que se envíen datos de
encendido y apagado a la placa Arduino.

5.4.2 Para el caso del botón ON introduzcamos el siguiente código (este enviara
un carácter “1” por el puerto serie hacia el arduino y cambiara los colores
del Panel asi también bloquera el botón ON y desbloquera el botón OFF):

private void button1_Click(object sender, EventArgs e)


{
panel1.BackColor = Color.Lime;
serialPort1.DiscardInBuffer();
serialPort1.Write("1");
button1.Enabled = false;
button2.Enabled = true;

5.4.3 De manera similar para el botón OFF el código será En este casos e envía
un “0” al arduino y se cambia el panel de color Rojo:

private void button2_Click(object sender, EventArgs e)


{
panel1.BackColor = Color.Red;
serialPort1.DiscardInBuffer();
serialPort1.Write("0");
button2.Enabled = false;
button1.Enabled = true;
}

8
2010
Guia de ejercicios Ing. Tulio German
programación en C++ Mamani Mita

5.1.1 Ejecutamos lo mismo para le otro led tomando en cuenta de que se envía
un valor de “2” para led encendido y “3” para led apagado. Ejecutamos el
programa y los leds conectados al arduino deberían encenderse.

5.5 LECTURA DE DATOS DESDE EL ARDUINO

5.5.1 Para leer datos desde el arduinos recordemos que lo haremos conmutando
el valor del pin 11, para ello se debe tener el sgte circuito con este pin:

5.5.2 Haciendo click en el componente serialport vayamos al botón de eventos y


hagamos doble click al evento Datareceived (haciendo esto se creara el
método que se ejecutara cada vez que el arduino envie un dato por el puerto
serial):

9
2010
Guia de ejercicios Ing. Tulio German
programación en C++ Mamani Mita

5.5.3 Codificamos de la siguiente forma en este método:

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)


{

string datosleidos= serialPort1.ReadExisting();


MostrarDatosLeidos(datosleidos);

5.5.4 Creamos también el método MostrarDatosLeidos de la siguiente manera:

private void MostrarDatosLeidos(string datosleidos)


{
BeginInvoke(new EventHandler(delegate {textBox1.Text = datosleidos; }));
if (datosleidos.Contains("a")) panel3.BackColor = Color.Lime;
if (datosleidos.Contains("b")) panel3.BackColor = Color.Red;
}

5.5.5 El anterior código permitirá capturar los caracteres leidos desde el puerto
serial y según el valor obtenido cambiara de color al Panel asociado al led
11 : si conmutamos el pin 11 de 0 a 5 voltios veremos como cambia de color
el panel

10
2010

Potrebbero piacerti anche