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 ).
Die Oberfläche habe ich bei VS erstellt leider bekomm ich es nicht hin die Relais über die Oberfläche anzusteuern (verzweifelt ), 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...
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?