Pages Menu
TwitterFacebook



BANNER1_ALT

Posted by on Abr 3, 2015 in Arduino | 4 comments

Control de servo con Arduino C#

Control de servo con Arduino C#

Tutorial de Control de Servo con Arduino y C# Visual Basic

En este tutorial de Control de Servo con Arduino y C#

Se inicia Visual Basic y damos clic en new project

1

Pantalla de inicio de Visual Basic

 

Le asignamos un nombre a nuestro proyecto de Windows Forms Applications

2

Creacion del proyecto

 

Donde nuestra ventana de trabajo se visualiza así:

3

Ventana de trabajo

 

Primeramente arrastramos un botón de nuestra barra de herramientas del lado izquierdo llamado Button.

4

Boton agregado en la imagen

 

Seguidamente en la parte inferior derecha asignamos el texto que queremos que despliegue al usuario en Text.

5

Posteriormente en (Name) le colocamos el nombre que deseamos en este caso btn90L

6

Nuestra forma debe visualizarse así:

7

Pulsando doble clic en el botón que acabamos de crear nos muestra una pestaña nueva con el siguiente código por defecto:

8

Vamos a colocar las librerías correspondientes y las líneas de código que nos permiten la comunicación con Arduino.

9

 

Seguidamente colocamos el siguiente código en nuestro primer botón

El cual nos comunica con el puerto COM en el que el Arduino se encuentra

La primera línea abre el puerto COM

La segunda manda un “0” que posteriormente usaremos en el código de Arduino

Por ultimo cierra el proceso del puerto COM

Nota: el código completo viene al final del tutorial.

10

Respectivamente colocamos los siguientes botones:

11

Proseguimos con poner un nombre a nuestra ventana con la etiqueta (Label) del menú izquierdo.

12

La colocamos como titulo de nuestra ventana

13

Posteriormente vamos a agregar una imagen a nuestra ventana en el menú de la izquierda

14

De tal forma que nuestra ventana queda así:

15

En las propiedades en la parte de initialimage hacemos clic

16

Nos despliega la siguiente ventana:

17

Importamos la imagen deseada. Nótese que la imagen no se alcanza a percibir

18

 

En el menú de propiedades en sizemode se pone la opción de la imagen

19

Finalmente en el botón play corremos nuestro programa

20

 

Código completo C#:


Imports System.IO
Imports System.IO.Ports
Imports System.Threading

Public Class Form1

    Shared _continue As Boolean
    Shared _serialPort As SerialPort

    Private Sub cnt(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        SerialPort1.Close()
        SerialPort1.PortName = "com3" 'checar el puerto
        SerialPort1.BaudRate = 9600
        SerialPort1.DataBits = 8
        SerialPort1.Parity = Parity.None
        SerialPort1.StopBits = StopBits.One
        SerialPort1.Handshake = Handshake.None
        SerialPort1.Encoding = System.Text.Encoding.Default
    End Sub
    Private Sub btn90L_Click_1(sender As System.Object, e As System.EventArgs) Handles btn90L.Click
        SerialPort1.Open()
        SerialPort1.Write("0")
        SerialPort1.Close()
    End Sub

    Private Sub btn90R_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn90R.Click
        SerialPort1.Open()
        SerialPort1.Write("1")
        SerialPort1.Close()
    End Sub

    Private Sub btn180L_Click(sender As System.Object, e As System.EventArgs) Handles btn180L.Click
        SerialPort1.Open()
        SerialPort1.Write("2")
        SerialPort1.Close()
    End Sub

    Private Sub btn180R_Click(sender As System.Object, e As System.EventArgs) Handles btn180R.Click
        SerialPort1.Open()
        SerialPort1.Write("3")
        SerialPort1.Close()
    End Sub

    Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        SerialPort1.Open()
        SerialPort1.Write("4")
        SerialPort1.Close()
    End Sub

End Class

Código completo en Arduino: 


#include <Servo.h> //LIBRERIA SERVO
Servo myservo;
void setup()
{
myservo.attach(9); //servo en el pin 9
Serial.begin(9600); //comunicacion serial en el puerto 9600 baudios
}
void loop()
{
int pos;
if (Serial.available()){
delay(100);
while(Serial.available()>0){
pos=Serial.read(); //lee el valor en Visual Basic
if(pos=='0') //si el valor recibido es cero(btn90L)
myservo.write(90); //gira el servo 90 grados a la izquierda
else if(pos=='1') //si el valor recibido es uno(btn90R)
myservo.write(-90); //gira el servo 90 grados a la derecha
else if(pos=='2') //si el valor recibido es dos(btn180L)
myservo.write(180); //gira el servo 180 grados a la izquierda
else if(pos=='3') //si el valor recibido es tres(btn180R)
myservo.write(-180); //gira el servo 180 grados a la derecha

else if(pos=='4') //rutina boton girar Button2_Click
{
 for(pos = 0; pos < 180; pos += 1)
 {
 myservo.write(pos);
 delay(10);
 }
 for(pos = 180; pos>=1; pos-=1)
 {
 myservo.write(pos);
 delay(10);
 }
 for(pos = 0; pos < 180; pos += 1)
 {
 myservo.write(pos);
 delay(20);
 } 

}
}
}
}

Diagrama de conexión con el Arduino.

y7SmHUC0lDFTaL_bshiIGaTD97SqZOp9fhWTQllLOwo7cJ4-lm3h5CuM6jwXL6eDDDokSAwDieOiMkI1eiPmK2_oH9vHfW5gDke2zkFIXqGvdidurQ=w473-h270-nc

conexion con Arduino

4 Comments

  1. Si quisiera girarlo a otro valor en grados diferente solo cambio los valores?

    • Efectivamente solo se se cambia el valor de los, cada uno de los if o else if es una acción, igualmente podrías añadir o quitar acciones. Saludos

  2. Pero eso no es C#, Es visual Basic.

Post a Reply

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *