Hallo zusammen,
eigentlich ganz simpel ich habe es teilweise schon geschafft mein Relaisboard über den Arduino und Visual Basic anzusteuern. Dh. ich habe 16 Taster in VB (8x An und 8 x Aus) mit denen ich die Relais eben an- und ausschalte.
Problem nun, ich komme nur bis Relais 5 An. Aus funktioniert nicht da ich die Ziffer 10 schlecht übertragen kann. Ich rede wohl noch etwas in rätseln deswegen hier der Code für Arduino und Visual Basic :
Arduino=
int relais1 = 2;
int relais2 = 3;
int relais3 = 4;
int relais4 = 5;
int relais5 = 6;
int relais6 = 7;
int relais7 = 8;
int relais8 = 9;
void setup() {
Serial.begin(9600);
pinMode(relais1, OUTPUT);
pinMode(relais2, OUTPUT);
pinMode(relais3, OUTPUT);
pinMode(relais4, OUTPUT);
pinMode(relais5, OUTPUT);
pinMode(relais6, OUTPUT);
pinMode(relais7, OUTPUT);
pinMode(relais8, OUTPUT);
digitalWrite(relais1, HIGH);
digitalWrite(relais2, HIGH);
digitalWrite(relais3, HIGH);
digitalWrite(relais4, HIGH);
digitalWrite(relais5, HIGH);
digitalWrite(relais6, HIGH);
digitalWrite(relais7, HIGH);
digitalWrite(relais8, HIGH);
}
void loop(){
while (Serial.available() == 0); // do nothing if nothing sent
int val = Serial.read() - '0'; // deduct ascii value of '0' to find numeric value of sent number
if (val == 1) {
Serial.println("Relais 1 ON");
digitalWrite(relais1, LOW);
}
else if (val == 2)
{
Serial.println("Relais 1 OFF");
digitalWrite(relais1, HIGH);
}
else if (val == 3)
{
Serial.println("Relais 2 ON");
digitalWrite(relais2, LOW);
}
else if (val == 4)
{
Serial.println("Relais 2 OFF");
digitalWrite(relais2, HIGH);
}
else if (val == 5)
{
Serial.println("Relais 3 ON");
digitalWrite(relais3, LOW);
}
else if (val == 6)
{
Serial.println("Relais 3 OFF");
digitalWrite(relais3, HIGH);
}
else if (val == 7)
{
Serial.println("Relais 4 ON");
digitalWrite(relais4, LOW);
}
else if (val == 8)
{
Serial.println("Relais 4 OFF");
digitalWrite(relais4, HIGH);
}
else if (val == 9)
{
Serial.println("Relais 5 ON");
digitalWrite(relais5, LOW);
}
else if (val == 16)
{
Serial.println("Relais 5 OFF");
digitalWrite(relais5, HIGH);
}
else // if not one of above command, do nothing
{
//val = val;
}
Serial.println(val);
Serial.flush(); // clear serial port
}
Visual Basic =
Imports System.IO
Imports System.IO.Ports
Imports System.Threading
Public Class Form1
Dim Count As Integer = 0
Dim var As Integer
Dim wirkungsgrad As Double
Dim dichte As Double
Dim windgeschw As Double
Dim durchmesser As Double
Dim leistung As Double
Dim leistungwind As Double
Dim speichervar As Integer
Private Sub TextBox6_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
If InStr("0123456789" & Chr(8), e.KeyChar) = False Then e.Handled = True
End Sub
Private Sub TextBox7_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
If InStr("0123456789" & Chr(8), e.KeyChar) = False Then e.Handled = True
End Sub
Private Sub TextBox8_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
If InStr("0123456789" & Chr(8), e.KeyChar) = False Then e.Handled = True
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox3.Text = "Bitte richtigen COM Port auswählen"
Panel1.Visible = False
Me.Size = New Size(500, 150)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
End
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
SerialPort1.PortName = ComboBox1.Text
SerialPort1.BaudRate = 9600
SerialPort1.DataBits = 8
SerialPort1.Parity = Parity.None
SerialPort1.StopBits = StopBits.One
SerialPort1.Handshake = Handshake.None
SerialPort1.Encoding = System.Text.Encoding.Default
SerialPort1.Open()
speichervar = 1
TextBox3.Text = "System READY"
ComboBox1.Visible = False
Button4.Visible = False
Panel1.Visible = True
Me.Size = New Size(500, 600)
End Sub
Private Sub Button5_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)
TextBox3.Text = "System READY"
ComboBox1.Visible = False
Button4.Visible = False
speichervar = 0
Panel1.Visible = True
Me.Size = New Size(500, 600)
End Sub
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
SerialPort1.Write("1")
End Sub
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
SerialPort1.Write("2")
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SerialPort1.Write("3")
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SerialPort1.Write("4")
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
SerialPort1.Write("5")
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
SerialPort1.Write("6")
End Sub
Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
SerialPort1.Write("7")
End Sub
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
SerialPort1.Write("8")
End Sub
Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
SerialPort1.Write("9")
End Sub
Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
SerialPort1.Write("10")
End Sub
End Class
Meine Frage nun, welchen Weg muss ich wählen damit ich auf dieser Basis eine 10 erfolgreich zum Arduino schicken kann und er mir diese auch als eine 10 interpretiert. Stichwort ist hier ASCII aber ich habe keine Ahnung wo ich ansetzen muss.
Beste Grüße
Don