Códigos
de Arduino
Ejemplo Arduino 1:
Entrada digital con Arduino y Visual Studio 2015. Muestra
los estados de las entradas digitales en componentes Panel, label y pictureBox
de Visual Studio.
int estadoBoton=0; // Guardará el estado del botón HIGH o
LOW.
int anteriorBoton=0;
char caracter;
String comando;
int flagMensaje=0;
int anteriorBoton=0;
char caracter;
String comando;
int flagMensaje=0;
void setup()
{
pinMode(13,OUTPUT); // Donde está el Led 13.
pinMode(8,INPUT); // Entrada digital donde está el pulsador.
Serial.begin(115200);
}
pinMode(13,OUTPUT); // Donde está el Led 13.
pinMode(8,INPUT); // Entrada digital donde está el pulsador.
Serial.begin(115200);
}
void loop()
{
estadoBoton=digitalRead(8); // Leer entrada digital número 8.
estadoBoton=digitalRead(8); // Leer entrada digital número 8.
// Si el pulsador está pulsado, se enciende
el Led 13 y
// envía comando HIGH por el puerto serie.
// envía comando HIGH por el puerto serie.
if(estadoBoton !=
anteriorBoton) // Comprueba si ha habido un cambio en el estado del botón.
{
flagMensaje =
0; // Resetea la bandera a 0.
anteriorBoton = estadoBoton; // Guarda el estado actual del botón.
anteriorBoton = estadoBoton; // Guarda el estado actual del botón.
}
if (estadoBoton ==
HIGH && flagMensaje == 0) // Comprueba que el botón esté pulsado y que
no se haya enviado el mensaje.
{
digitalWrite(13,HIGH);
Serial.write("ON");
delay(50);
Serial.write("ON");
delay(50);
if(flagMensaje == 0) // Si se envió el mensaje aumenta la variable
a 1 para no enviarlo la próxima vez.
flagMensaje++;
}
// De lo contrario,
Led 13 apagado y envía LOW al puerto serie.
else if(flagMensaje
== 0) // Si el botón no está presionado y aún no se envía el mensaje.
{
digitalWrite(13,LOW);
Serial.write("OFF");
delay(50);
Serial.write("OFF");
delay(50);
if(flagMensaje == 0) // Si se
envió el mensaje aumenta la variable en 1 para no enviarla la próxima vez.
flagMensaje++;
}
}
Visual C# AWF 2015
Ejemplo 1:
Este ejemplo corresponde al código del Ejemplo 1 de Arduino.
Creamos un proyecto nuevo con Visual C#.
Selecciona Entorno clásico en Visual C#, Aplicación de
Windows Forms, he puesto como nombre del proyecto en este caso
Entrada_Arduino_AWF_1_CS, luego pulsar Aceptar.
Arrastramos al formulario los componentes que indica en el
Cuadro de Herramientas.
Cambiamos las propiedades de cada componente o controles.
Panel:
Propiedad
|
Cambie a
|
BorderStyle
|
FixedSingle
|
Label:
Propiedad
|
Cambie a
|
(Name)
|
Label_Entrada
|
Text
|
Leyendo...
|
PictureBox:
Propiedad
|
Cambie a
|
(Name)
|
pictureBox_Dibujo
|
SizeMode
|
StretchImage
|
Seguimos en el componente PictureBox, pulsamos … en la
propiedad Image como indica abajo para introducir dos imágenes de dos Led,
encendido y apagado.
Se abre un cuadro llamado Seleccionar recurso en el cual
podemos añadir las imágenes que queramos.
Pulsamos el botón Importar… y elegimos las imágenes de Leds
que queramos, en este caso selecciono el rojo apagado y encendido.
Queda guardado en recursos.
Pulsa Aceptar.
Dejar claro que en la propiedad SizeMode del PicturreBox le
he puesto StretchImage par redimensionar el dibujo o imagen al cuadro.
En cuanto al formulario principal, en la propiedad
StartPosition se ha cambiado a CenterScreen para cuando lo compilemos o lo
ejecutemos salga en el centro de la pantalla.
Añade el componente SerialPort haciendo doble clic en él o
arrastrándolo al formulario.
Cambiamos las propiedades indicadas abajo.
SerialPort:
Tanto en Visual Studio como Arduino UNO y Arduino IDE tienen
que funcionar en el mismo puerto y baudios, en mi caso es:
Propiedad
|
Cambie
a
|
BuadRate
|
115200
|
PortName
|
COM4
|
StopBits
|
Two
|
En tu caso puede ser diferente, tanto el puerto y los
baudios el que desee.
Tener claro estas líneas al recibir datos desde Arduino como
ON y OFF.
Ejemplo 1:
Código fuente del Ejemplo 1 de Visual C# AWF.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports; // No olvidar.
using System.Threading;
namespace Entrada_Arduino_AWF_1_CS
{
public partial class Form1 : Form
{
// Utilizaremos un string como buffer de recepción.
string Recibidos;
public Form1()
{
InitializeComponent();
if (!serialPort1.IsOpen)
{
try
{
serialPort1.Open();
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
serialPort1.DataReceived += new SerialDataReceivedEventHandler(Recepcion);
}
}
// Al recibir datos.
private void Recepcion(object sender, SerialDataReceivedEventArgs e)
{
// Acumula los caracteres recibidos a nuestro 'buffer' (string).
Recibidos += serialPort1.ReadExisting();
// Invocar o llamar al proceso de tramas.
Invoke(new EventHandler(Actualizar));
}
// Procesar los datos recibidos en el bufer y extraer tramas completas.
private void Actualizar(object sender, EventArgs e)
{
switch (Recibidos)
{
case "ON":
panel1.BackColor = Color.Green;
label_Lectura.Text = "Activado";
pictureBox_Dibujo.Image = Properties.Resources.Led_rojo_encendido;
Recibidos = "";
break;
case "OFF":
panel1.BackColor = Color.Red;
label_Lectura.Text = "Desactivado";
pictureBox_Dibujo.Image = Properties.Resources.Led_rojo_apagado;
Recibidos = "";
break;
}
}
// Cuando cierre la aplicación.
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen) // ¿El puerto está abierto?
{
serialPort1.Close(); // Cerrar puerto.
}
}
}
}
Ver vídeo:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports; // No olvidar.
using System.Threading;
namespace Entrada_Arduino_AWF_1_CS
{
public partial class Form1 : Form
{
// Utilizaremos un string como buffer de recepción.
string Recibidos;
public Form1()
{
InitializeComponent();
if (!serialPort1.IsOpen)
{
try
{
serialPort1.Open();
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
serialPort1.DataReceived += new SerialDataReceivedEventHandler(Recepcion);
}
}
// Al recibir datos.
private void Recepcion(object sender, SerialDataReceivedEventArgs e)
{
// Acumula los caracteres recibidos a nuestro 'buffer' (string).
Recibidos += serialPort1.ReadExisting();
// Invocar o llamar al proceso de tramas.
Invoke(new EventHandler(Actualizar));
}
// Procesar los datos recibidos en el bufer y extraer tramas completas.
private void Actualizar(object sender, EventArgs e)
{
switch (Recibidos)
{
case "ON":
panel1.BackColor = Color.Green;
label_Lectura.Text = "Activado";
pictureBox_Dibujo.Image = Properties.Resources.Led_rojo_encendido;
Recibidos = "";
break;
case "OFF":
panel1.BackColor = Color.Red;
label_Lectura.Text = "Desactivado";
pictureBox_Dibujo.Image = Properties.Resources.Led_rojo_apagado;
Recibidos = "";
break;
}
}
// Cuando cierre la aplicación.
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen) // ¿El puerto está abierto?
{
serialPort1.Close(); // Cerrar puerto.
}
}
}
}
Ver vídeo:
Autor: Ángel Acaymo M. G.
Descargar:
PDF 5.72 MB.
PDF 5.72 MB.
PDF 5.72 MB.
ZIP (PDF) 5.36 MB.
XPS 7.32 MB.
XPS 7.32 MB.
ZIP (XPS) 6.66 MB.
Ejemplos 4.20 MB.
Ejemplos 4.20 MB.
No hay comentarios:
Publicar un comentario