lunes, 28 de diciembre de 2015

Entrada digital con Arduino y Visual Studio 2015




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;
void setup()
{
  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.
        // Si el pulsador está pulsado, se enciende el Led 13 y
// 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.
    }
 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);
      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);    
      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:

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: