Visual Basic + Arduino, größere Zahlen ?

Hallo zusammen,

ich möchte über ein kleines Visual Basic Skript eine LED über einen PWM Ausgang am Arduino dimmen. Sie an und ausschalten ist kein Problem aber wie übertrage ich anstatts einem Char einen kompletten String erfolgreich ? Ich komm da einfach nicht weiter. Habe da was im Netz gefunden, es macht auch Sinn was im Arduino Code steht aber ich komm einfach nicht damit klar wie ich über Visual Basic eine Enter Eingabe übetragen kann.

Hat jemand eine bessere Idee oder kann mir helfen ?

Sketch? Für PWM brauchst du noch ein char! PWM Wert 0 - 255

Int inByte;
void setup() {
Serial.begin(9600);
}

void loop() {
if (Serial.available() > 0) {
inByte = Serial.read();
if (inByte == 48) {
// zu wünschende Aktion z.B. LED einschalten
}
}
}

Das schnall ich nicht ganz, wie nur ein char ? Ich kann ja nur von 0 - 9 ( ASCII )

Ein unsigned char hat einen Wertebereich von 0 - 255.
Mach mal aus deinem Serial.read ein Serial.parseInt

int inByte;

void setup (){
  Serial.begin(9600);
  pinMode(11,OUTPUT);
}

void loop (){
  
  if (Serial.available() >0) {
    inByte = Serial.parseInt();
    if (inByte == 51){
      analogWrite(11,255);
     
    }else{
      analogWrite(11,0);
    }
    }
  }

Funzt nicht LED Springt nicht an obwohl ich den Wert 51 mit var übergebe

Public Class Form1

    Dim Count As Double = 0
    Dim Zusatz As Integer = 0
    Dim var As Char


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Count = Count + 0.1
        TextBox1.Text = Count

        Zusatz = Zusatz + 5
        TextBox2.Text = Count + Zusatz

        var = TextBox3.Text
        SerialPort1.Write(var)

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Count = Count - 0.1
        TextBox1.Text = Count

        Zusatz = Zusatz - 5
        TextBox2.Text = Count + Zusatz

    End Sub

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



    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Panel1.Visible = False
    End Sub

    Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint

    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        SerialPort1.PortName = ComboBox1.Text
        SerialPort1.Open()
        Button4.Visible = False
        ComboBox1.Visible = False
        Panel1.Visible = True
    End Sub

    Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
        
    End Sub

    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
        TextBox3.Text = CInt(TextBox2.Text)
        
    End Sub

    Private Sub Button3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        End
    End Sub
End Class

Keiner ne Idee ?

Hallo,

lasse Dir mal nach

inByte = Serial.parseInt();

den Wert von inByte auf die serielle für ein Terminalfenster ausgeben, wenn möglich. Ob da überhaupt etwas ankommt. Oder kommentiere mal das else ... danach aus. Vielleicht wird die LED auch nur schnell an und wieder ausgeschalten, falls nicht nur ständig 51 übertragen wird.