Problem mit der Seriellen Schnittstelle

#3124897
Lesenswert?

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
#3124910
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren