En esta publicación controlaremos 4 relays utilizando un programa creado en Visual Basic 2010, mediante la comunicación del puerto USB nos conectaremos al Arduino UNO, y este a subes activara o desactivara los relay.
Lo prepare por una petición en los comentarios y aquí esta la respuesta.
Primero el ejemplo será con 4 Relays y en la próxima publicación será con 8 relays para que puedan ver los cambios realizados y sirva de ejemplo para todos. Espero les guste.
El circuito utilizado será el mismo de la publicación anterior:
Conecciones electricas:
Pin 13 – canal 1
pin 12 – canal 2
pin 11 – canal 3
pin 10 – canal 4
A continuación el Sketch de Arduino UNO
//apcexpert.blogspot.com
//Con este programa controlaras 4 relays con pulsar un botón para activar y
//al pulsarlo nuevamente se desactiva.
char inData[20]; // Allocate some space for the string
char inChar=-1; // Where to store the character read
byte index = 0; // Index into array; where to store the character
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
}
char PinOut(char* This) {
while (Serial.available() > 0) // Don't read unless
// there you know there is data
{
if(index < 19) // One less than the size of the array
{
inChar = Serial.read(); // Read a character
inData[index] = inChar; // Store it
index++; // Increment where to write next
inData[index] = '\0'; // Null terminate the string
}
}
if (strcmp(inData,This) == 0) {
for (int i=0;i<19;i++) {
inData[i]=0;
}
index=0;
return(0);
}
else {
return(1);
}
}
void loop()
{
if (PinOut("13 on")==0) { digitalWrite(13, HIGH);}
if (PinOut("13 off")==0) {digitalWrite(13, LOW);}
if (PinOut("12 on")==0) { digitalWrite(12, HIGH);}
if (PinOut("12 off")==0) {digitalWrite(12, LOW);}
if (PinOut("11 on")==0) { digitalWrite(11, HIGH);}
if (PinOut("11 off")==0) {digitalWrite(11, LOW);}
if (PinOut("10 on")==0) { digitalWrite(10, HIGH);}
if (PinOut("10 off")==0) {digitalWrite(10, LOW);}
}
Continuamos con el codigo fuente de Visual Basic 2010
Imports System.IO
Imports System.IO.Ports
Imports System.Threading
Public Class Form1
' Shared _continue As Boolean
' Shared _serialPort As SerialPort
Dim pinout13 As Boolean = True
Dim pinout12 As Boolean = True
Dim pin11 As Boolean = True
Dim pinout10 As Boolean = True
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1.Close()
SerialPort1.PortName = "com4" 'Cambiar el numero de Puerto "COM"
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 Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SerialPort1.Open()
If pinout13 = True Then
SerialPort1.Write("13 on")
RectangleShape1.BackColor = Color.Red
Else
SerialPort1.Write("13 off")
RectangleShape1.BackColor = Color.Lime
End If
pinout13 = Not (pinout13)
SerialPort1.Close()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SerialPort1.Open()
If pinout12 = True Then
SerialPort1.Write("12 on")
RectangleShape2.BackColor = Color.Red
Else
SerialPort1.Write("12 off")
RectangleShape2.BackColor = Color.Lime
End If
pinout12 = Not (pinout12)
SerialPort1.Close()
End Sub
Private Sub RectangleShape1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RectangleShape1.Click
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
SerialPort1.Open()
If pin11 = True Then
SerialPort1.Write("11 on")
RectangleShape3.BackColor = Color.Red
Else
SerialPort1.Write("11 off")
RectangleShape3.BackColor = Color.Lime
End If
pin11 = Not (pin11)
SerialPort1.Close()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
SerialPort1.Open()
If pinout10 = True Then
SerialPort1.Write("10 on")
RectangleShape4.BackColor = Color.Red
Else
SerialPort1.Write("10 off")
RectangleShape4.BackColor = Color.Lime
End If
pinout10 = Not (pinout10)
SerialPort1.Close()
End Sub
Private Sub RectangleShape3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RectangleShape3.Click
End Sub
Private Sub RectangleShape4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RectangleShape4.Click
End Sub
Private Sub RectangleShape2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RectangleShape2.Click
End Sub
End Class
Suerte con el proyecto. Gracias
18 comentarios:
Porfa me puedes enviar los archivos?
Estoy un poco escaso en programacion.
Enhorabuena por este pedazo de blog, eres una maquina :)
Mi e-mail: juanfran__jabal@hotmail.com
Gracias compañ
Perdon los de 8 relés , Gracias
Hola Juan ya te embie el archivo a tu e-mail.
muy interesante el tema si no es mucho pedir ami tambien envia me los archivos de 4 reles y de 8 reles mi correo es:
federico.vizzari@gmail.com
muchas gracias
disculpa, el circuito se alimenta del usb o de la fuente externa? si es de la fuente externa, sigue teniendo comunicasion con el puerto serial?
Hola Luis Enrique, de la forma en que este circuito esta alambradoen, la fuente de alimentacion es de USB.
Pero si deseas una fuente alterna, debes utilizar la tierra
en comun (Comun Ground)entre el USB y la fuente alterna.
Espero que alla aclarado tu pregunta.
ola podrias enviarme los archivos mi correo es juan_222_111@hotmail.com muy buena pagina
muy buenas me gustaria si no es molestia me pudieses mandar los archivos de VB y arduino a cardenalblue@hotmail.com, del trabajo de los 8 relay .enhorabuena por tus proyectos ,muchas gracias
Hola:
Aquí les dejjo tutoriales de com hacer una interfaz con Visual Basic .net y C++.
http://electronica-pic.blogspot.com.es/2009/03/manual-interfaz-vc-y-visual-basic.html
Este otro manual es en Visual C# y más completo.
http://electronica-pic.blogspot.com.es/2008/11/electrnica-pic.html
Si le dan por el puerto paralelo, aquí hay un manual.
http://electronica-pic.blogspot.com.es/2010/07/interfaz-puerto-paralelo-lpt.html
Ahora que me metí con Arduino, estoy dispuesto hacer este mismo manual con Visual Studio 2013 y los tres lenguajes de programación C#, C++ y Visula Basic. Los diseños de estos manuales o tutoriales lo haré como PDF de calidad igual que arriba.
Saludos a todos.
Hola me pasarias los archivos del de 4 y 8 relés y el archivo del VB si no es mucha molestias. Desde ya muchisimas gracias
Mi correo es ferrcaf@gmail.con
Hola buenas noches te hago una consulta, en esta parte del código del visual basic
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1.Close()
SerialPort1.PortName = "com4" 'Cambiar el numero de Puerto "COM"
Significa que tengo que ponerle el puerto serial COM4 al Arduino? Muchas gracias
hola me gusta tu trabajo y me gustaría saber si me puedes pasar tu programación mi correo es jchp-juank@hotmail.com
Me interesa el codigo si puede ser, mi email es astrix@zodiacwin.com
Gracias de antemano, y no se bien porque no pones un link a ellos, ayudaria mucho, perdona por el comentario...
Un saludo sincero...
He hecho un Archivo rar con los codigos fuente, por si alguien le viene bien:
ArduinoUNOR3_VB2010_Controlar_4_Reles_CodeForInternet:
http://dfiles.eu/files/xe3mhbgyi
ArduinoUNOR3_VB2010_Controlar_4_Reles_CodeForInternet:
http://www.astrology7.com/downloads/ArduinoUNOR3_VB2010_Controlar_4_Reles_CodeForInternet.rar
Saludos sinceros!!!
Un error en el archivo de depositfiles, es este:
http://depositfiles.com/files/si0jhqmt8
Saludos...
Unas mejoras, para una placa con 8 reles y con reset del arduino:
http://depositfiles.com/files/ndip135pb
o
www.astrology7.com/downloads/ArduinoUNOR3_VB2010_Controlar_8_Reles_CodeForInternet.rar
Saludos...
Hola ami tambien me.podrias enviar el archivo de los 8 relay, te lo agradeceria muchísimo, tomy1941@hotmail
Com
Publicar un comentario