Guten Tag, Zu allererst, ich benutze einen Arduino Uno. ich habe ein Programm, welches in C# geschrieben ist, welches mit dem Mikrokontroller über die Serielle Schnittstelle kommuniziert. Wenn ich bei meinem C# Programm auf einen Button klicke, so soll der Servo der angeschlossen ist, sich auf die bestimmte Position drehen. Doch wenn ich auf den Button klicke, spielt der Servo total verrückt. Erst dreht er sich, bleibt stehen, zuckt ganz kurz, und fährt danach wieder auf 0 zurück. Ich bin ehrlich gesagt gerade am verzweifeln. Am Servo liegt es nicht. Es kann nur an dem Code des C# programmes, oder an dem Code des Arduinos liegen. ******* Arduino Programm #include <Servo.h> Servo s; void setup() { Serial.begin(9600); s.attach(9); } void loop() { int incomingByte = Serial.read(); if(incomingByte > 0) { s.write(incomingByte); } delay(500); } ********** C# Programm SerialPort serialPort1; public Form1() { InitializeComponent(); CheckForIllegalCrossThreadCalls = false; serialPort1 = new SerialPort("COM3", 9600); serialPort1.Handshake = Handshake.None; serialPort1.RtsEnable = false; serialPort1.Open(); } // Stellung auf 0° private void button1_Click(object sender, EventArgs e) { serialPort1.Write("1\r\n"); } // Stellung auf 90° private void button2_Click(object sender, EventArgs e) { serialPort1.Write("90\r\n"); } // Stellung auf 180° private void button3_Click(object sender, EventArgs e) { serialPort1.Write("180\r\n"); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { serialPort1.Close(); } Zudem muss ich sagen dass ich noch ein ziemlicher Neuling bin was die programmierung mit dem Arduino betrifft. lg
Tim Lappe schrieb: > serialPort1.Write("1\r\n"); Du schickst ja einen String weg! .... den musst du schon auch hier int incomingByte = Serial.read(); auch wieder als String empfangen und dann in eine Zahl umwandeln. Alternativ auf dem PC serialPort1.Write( 1 ); bzw. dann eben für die anderen 'Zahlen' entsprechend. Dann gehen auch wirklich Bytes mit genau diesen Werten über die Schnittstelle.
Haha danke funktioniert. War ein Dummer fehler. Hab das jetzt in Bytes verschickt und es funktioniert danke :-) lg
Tim Lappe schrieb: > Hab das jetzt in Bytes > verschickt und es funktioniert danke :-) Hat aber keine Zukunft - wie willst du die Stellung 270 als Byte senden? Gruss Reinhard
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.