Arduino über VS (C#) Steuern

Guten Tag,

ich suche gerade die richtige IDE mit welcher ich mein Projekt umsetzen kann.

Mein Plan wäre über ein erstelltes Computerprogramm am Computer mehrere Schaltkreise auf dem per USB-Kabel verbundenen Arduino zu Steuern, diese müssen einfach nur öffnen und schließen (was halt ein relai macht :rofl:).

Die Oberfläche habe ich bei VS erstellt leider bekomm ich es nicht hin die Relais über die Oberfläche anzusteuern (verzweifelt :sob:), habe schon einige Videos angeschaut und viel getestet da es fast jeder anders macht ... .

Wäre nett wenn mir jemand für ein Relai erklären könnte wie ich in beiden Programmen den CODE schreiben müsste...

Hast du es mal über die serielle Schnittstelle versucht.
Der Arduino reagiert darauf, wie du es in C# machst, musst du wissen.

Das kann man nicht so pauschal sagen. Serielle Schnittstelle und dann ein Protokoll nach Bedarf entwickeln. z.B. "5,1" für Relais #5, an

Du wirst Sie ggfls. nochmal überarbeiten müssen :wink:

Was heisst das?
Bekommst Du das nicht hin, die Serielle Schnittstelle zu beschreiben, oder fehlt Dir auf dem Arduino die passende Auswertung?

Für Letzteres habe ich was umgeschrieben, was aus einem anderen Projekt stammte.
Übergeben wird eine Zeichenkette mit folgendem Inhalt:

*ElementderRelais,anzunehmenderZustand#

Element der Relais ist in relaisPin[] festgelegt - wobei das erste Element mit 0 beginnt. Du hast 24 Relais. Das letzte Element wäre dann 23.
Zu Testzwecken habe ich das erste Element mit dem PIN13 gefüllt.

anzunehmenderZustand kann sein 0 für AUS, 1 für EIN und 2 für umschalten.
Für mein erstes Element sieht das dann so aus:

*0,1#

zum einschalten.
Wenn Du in der Arduino-IDE den Seriellen Monitor aufmachst, kannst Du die Zeichenkette dort oben eingeben und senden.
Der unveränderte Sketch gibt Dir dann aus:

14:32:08.584 -> Start...
14:32:15.620 -> Anfang gefunden
14:32:15.620 -> Endbyte gefunden
14:32:15.620 -> schalte Element 0 EIN

und bei *0,2#

14:32:19.462 -> Anfang gefunden
14:32:19.462 -> Endbyte gefunden
14:32:19.462 -> schalte Element 0 UM
// Forensketch - Über den Serial Pins steuern
// https://forum.arduino.cc/t/arduino-uber-vs-c-steuern/1035627

const byte relaisPin[] = {LED_BUILTIN};             // Hier alle PIN_Nummern eintragen
const byte startByte = '*';                         // Zeichenkette Anfang
const byte endByte = '#';                           // Zeichenkette Ende
char myInput[5];                                    // temporärer Buffer
bool myStart;                                       // Merker ob Zeichenkette angefangen hat
byte myPosition;                                    // Schreibposition

void setup()
{
  Serial.begin(115200);
  Serial.println(F("Start..."));
  for (byte b = 0; b < sizeof(relaisPin); b++)      // Pinmodes für alle festlegen
  { pinMode(relaisPin[b], OUTPUT); }
}

void loop()
{
  readInput();
}

void readInput()
{
  if (Serial.available())                           // Wenn ein zeichen anliegt
  {
    byte serReadByte = Serial.read();               // lesen
    if (serReadByte == startByte)
    {
      myStart = true;                               // alles auf "null"
      memset(myInput, '\0', sizeof(myInput));
      myPosition = 0;
      Serial.println(F("Anfang gefunden"));
    }
    else if (myStart == true)
    {
      myInput[myPosition] = serReadByte;            // Buffer füllen
      myPosition++;
    }
    if (serReadByte == endByte)
    {
      Serial.println(F("Endbyte gefunden"));
      Serial.print(F("schalte Element "));
      Serial.print(atoi(myInput));
      switch (myInput[myPosition - 2])              // Schaltpunkt auswerten
      {
        case '0':                                   // -> AUS
          Serial.println(F(" AUS"));
          digitalWrite(relaisPin[atoi(myInput)], 0);
          break;
        case '1':                                   // -> EIN
          Serial.println(F(" EIN"));
          digitalWrite(relaisPin[atoi(myInput)], 1);
          break;
        case '2':                                   // -> TOGGLE
          Serial.println(F(" UM"));
          digitalWrite(relaisPin[atoi(myInput)], !digitalRead(relaisPin[atoi(myInput)]));
          break;
      }
      myStart = false;                              // fertig
    }
  }
}

Ich habe nun die Schnittstellen Verbindung geschafft, nun habe ich folgendes Problem im Form 1 habe ich die Com Conection eingebaut, wie kann ich denn SerialPort1 in Form 2 Mitnehmen?

Du sprichst in Rätseln.

Falsches Forum. Die Frage gehört in ein C#-Forum.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.