Arduino über Bash Script steuern

Moin,

mache gerade erste Gehversuche mit einem Arduino Nano. Ich würde gerne damit Funksteckdosen steuern was mit rc-switch bis jetzt auch gut funktioniert. Soweit ich verstanden habe, bzw vom testen her hat es zumindest den Anschein, dass das Schaltprogramm immer läuft wenn der Arduino auch läuft. Nun soll es natürlich nicht ständig laufen und alle paar Sekunden die Steckdosen ein- und auschalten sondern nur wenn ich das möchte. Das ganze soll in ein Bash Script integriert werden wo durch Enter drücken oder Ähnliches die Steckdose geschaltet wird. Da ich noch nicht so richtig Ahnung habe vom Arduino weiß ich nicht wie man den da am Besten integriert. Ein Möglichkeit die mir einfiele wäre den Arduino zu resetten oder irgendein anderes Programm zu laden falls er quasi nichts Steckdosenrelevantes tun soll. Wie ginge das via Kommandozeile bzw Bash Script? Nachteil wäre wohl eine gewisse Verzögerung bis das Programm immer hochgeladen ist. Alternativ den ganzen USB Port wo er dran hängt aktivieren bzw irgendwelche Module erst laden wenn er was schalten soll. Ich hab auch gefunden, dass der Arduino irgendwie auf Serial Kommandos reagieren kann wo mir aber etwas die Infos fehlen um das zu realisieren. Evtl hat hier jemand dafür ein paar Code Schnipsel parat :)

Ich hab auch gefunden, dass der Arduino irgendwie auf Serial Kommandos reagieren kann

Durchaus...

Ok, die Frage ist wie man den Arduino dazu bringt darauf zu reagieren was man ihm sendet.

Wuerde folgendes funktionieren:

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {

  Serial.begin(9600);
  
  // Transmitter is connected to Arduino Pin #10  
  mySwitch.enableTransmit(10);
  
  // Optional set protocol (default is 1, will work for most outlets)
  // mySwitch.setProtocol(2);

  // Optional set pulse length.
  // mySwitch.setPulseLength(320);
  
  // Optional set number of transmission repetitions.
  // mySwitch.setRepeatTransmit(15);
  
}

void loop() {

  val = Serial.read();

  if (val == '0') {
  /* Same switch as above, but tri-state code */ 
  mySwitch.sendTriState("00000FFF0F0F");
  delay(1000);  
  mySwitch.sendTriState("00000FFF0FF0");
  delay(1000);
  }

}

Ist eine Mischung aus https://github.com/sui77/rc-switch/blob/master/examples/SendDemo/SendDemo.ino und https://forum.arduino.cc/index.php?topic=61127.0
Wenn ich eine “0” via Serial schicke sollte die Steckdose schalten? z.b. echo “0” > /dev/ttyUSB0

Die von dir verlinkte Seite erklaert noch wie man die tty aufsetzt. Ist das immer noch noetig oder geschieht das automatisch wenn man den Arduino einsteckt? Oder muesste man alternativ das GUI Programm starten und da die serielle Konsole aufrufen?

Hi

Das OS erkennt nur eine COM-Schnuttstelle (oder eben TTY) - warum sollte Win/Linux/Mac jetzt irgend etwas super sinnvolles mit der unbekannten Schnittstelle machen? Kamera eingesteckt: ... formatiere ich jetzt die Speicherkarte??

Also: Um das Öffnen der Schnittstelle und dem Schwätzen da drüber musst Du Dich, bzw. Dein Programm auf dem Rechner, schon selber kümmern.

MfG