Claro. El codigo de arduino es:
char dato;
void setup(){
Serial.begin(115200);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
digitalWrite(6, HIGH);
}
int e;
int l;
int r;
int lr;
void loop(){
if(Serial.available()){
dato = Serial.read();
if(dato == 'C'){
if(e == 0){
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
e = 1;
Serial.write("Conectado");
} else {
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
e = 0;
}
}
if(dato == 'L'){
if(l == 1){
digitalWrite(3, LOW);
l = 0;
} else {
l = 1;
digitalWrite(3, HIGH);
}
}
if(dato == 'R'){
if(r == 1){
digitalWrite(4, LOW);
r = 0;
} else {
digitalWrite(4, HIGH);
r = 1;
}
}
if(dato == 'LR'){
if(lr == 1){
digitalWrite(3, LOW);
digitalWrite(4, LOW);
lr = 0;
} else {
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
lr = 1;
}
}
}
}
Como dije anteriormente, el control de Arduino funciona:
if(dato == 'L'){
if(l == 1){
digitalWrite(3, LOW);
l = 0;
} else {
l = 1;
digitalWrite(3, HIGH);
}
}
Luego el Arduino envia una respuesta:
Serial.write("Conectado");
Pero el Vb no lo lee.
Y el codigo de vb es:
Public Class Form1
Dim aks As String
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
btnDesconectar.Enabled = False
ComboBox1.Items.AddRange({"LED", "RELE", "LED Y RELE"})
ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
SerialPort1.BaudRate = 115200
SerialPort1.DataBits = 8
SerialPort1.Parity = IO.Ports.Parity.None
SerialPort1.StopBits = IO.Ports.StopBits.One
SerialPort1.PortName = "COM7"
End Sub
Private Sub btnConectar_Click(sender As Object, e As EventArgs) Handles btnConectar.Click
SerialPort1.Open()
SerialPort1.Write("C")
System.Threading.Thread.Sleep(200)
TextBox1.Text = SerialPort1.ReadLine()
btnConectar.Enabled = False
btnDesconectar.Enabled = True
End Sub
Private Sub btnDesconectar_Click(sender As Object, e As EventArgs) Handles btnDesconectar.Click
btnDesconectar.Enabled = False
btnConectar.Enabled = True
SerialPort1.Write("C")
SerialPort1.Close()
End Sub
Private Sub btnEnviar_Click(sender As Object, e As EventArgs) Handles btnEnviar.Click
If aks = "LED" Then
If SerialPort1.IsOpen Then
SerialPort1.Write("L")
If rLe.Checked = True Then
rLe.Checked = False
Else
rLe.Checked = True
rRe.Checked = False
rAM.Checked = False
End If
End If
ElseIf aks = "RELE" Then
If SerialPort1.IsOpen Then
SerialPort1.Write("R")
If rRe.Checked = True Then
rRe.Checked = False
Else
rRe.Checked = True
rLe.Checked = False
rAM.Checked = False
Label1.Text = SerialPort1.ReadExisting
End If
End If
ElseIf aks = "LED Y RELE" Then
If SerialPort1.IsOpen Then
SerialPort1.Write("LR")
If rAM.Checked = True Then
rAM.Checked = False
Else
rAM.Checked = True
rRe.Checked = False
rLe.Checked = False
End If
End If
End If
End Sub
Principalmente, es este codigo el que no me lee:
SerialPort1.Open()
SerialPort1.Write("C")
System.Threading.Thread.Sleep(200)
TextBox1.Text = SerialPort1.ReadLine()