Sicherheit gegen Signalunterbrechung

Hallo zusammen,
kleine Frage: Ich habe ein Programm, bei dem ich einen Motor per Bluetooth über PWM steuer. Hier ein bisschen vom Code:

void setup() {
Serial.begin(115200);
}

void loop() {
switch(value) {

case 1:
digitalWite(12, HIGH);
analogWrite(6, 60);
break;

case 2:
digitalWite(12, LOW);
analogWrite(6, 0);
break;
}
}

Die Frage ist nun, gibt es eine Möglichkeit dass der Motor stoppt, FALLS DIE BT-VERBINDUNG ABREIßT??

Greetings,
K86

Quick&dirty: Ich würde im Sekundentakt ein Dummy-Byte senden. Wenn dieses Byte ausbleibt, kann man den Motor einfach stoppen.

Das geht leider nicht :frowning:
Ich benutze zur Steuerung ein Android-Phone (Amarino, kennt vllt jemand). Den Datentransfer kann ich nicht editieren.

Kelevra86:
Die Frage ist nun, gibt es eine Möglichkeit dass der Motor stoppt, FALLS DIE BT-VERBINDUNG ABREIßT??

Gegen hängende Programme aller Art hilft die Installation eines Watchdogs.

Wenn der Watchdog-Timer überläuft ohne vorher resettet worden zu sein, resettet dann das ganze Programm. Du mußt dann nur die Schaltung so ausgelegt haben, dass im Fall eines Programm-Resets der Motor steht.

Using Watchdog timer in Arduino projects:
http://tushev.org/articles/electronics/48-arduino-and-watchdog-timer

Kelevra86:
Das geht leider nicht :frowning:
Ich benutze zur Steuerung ein Android-Phone (Amarino, kennt vllt jemand). Den Datentransfer kann ich nicht editieren.

Das würde schon gehen. Allerdings kann man dann nicht die Amarino Anwendung verwenden, sondern muss sich mittels der Amarino Bibliothek ein eigenes Android Programm schreiben.

@MaFu: Eigentlich will ich nichts extra schreiben.
@jurs: Über den WDT habe ich auch schonmal nachgedacht. Das Problem ist, bevor ich die verbindung zwischen handy und smartphone hergestellt habe vergehen meist ca. 30sec. bis dahin hat mir der WDt schon dem µC resettet.

Es muss doch irgendeine Abfrage o.ä. geben, ob eine serielle Verbindung zum Bluetooth-Device besteht oder nicht ... :~

Welches Bluetooth-Modul/-Shield verwendest du denn? Ist jemandem bekannt, wie die Steuerleitungen RTS/CTS auf Verbindungsabbrüche reagieren? Vielleicht kann man dort ansetzen.

Ich benutze die Sparkfun Bluetooth Mate Gold

Kelevra86:
@jurs: Über den WDT habe ich auch schonmal nachgedacht. Das Problem ist, bevor ich die verbindung zwischen handy und smartphone hergestellt habe vergehen meist ca. 30sec. bis dahin hat mir der WDt schon dem µC resettet.

  1. Wieso soll das ein Problem darstellen?
    Wird Deine loop-Funktion für 30 Sekunden blockiert und läuft in der Zeit nicht, während die Verbindung hergestellt wird?

  2. Falls die loop beim Herstellen der Verbindung tatsächlich blockiert sein sollte:
    Einen Watchdog-Timer kannst Du zu jedem beliebigen Zeitpunkt im Programm aktivieren (und auch deaktivieren), das muß nicht unbedingt in der setup()-Funktion stattfinden. Das kannst Du jederzeit auch später in der loop()-Funktion irgendwann machen.

{Solved}
Aaah Danke Jurs!
Habe den WDT jetzt in einer meiner Funktionen erst initialisiert. Dadurch klappt es so wie es will :wink: