Arduino hängt sich auf wenn NICHT am Seriellen Monitor

Hallo zusammen, ich habe ein merkwürdiges Problem:

Ein Arduino macht eigentlich was er soll. Wenn er aber autonom betrieben wird, hängt ihr sich in einem Zeitfenster zwischen 5min und 2h auf und kann nur per Hardwarereset reaktiviert werden. Das seltsame: Wenn ich den Arduino am Computer hängen und den seriellen Monitor offen habe, läuft er tagelang problemlos.

Der Aufbau sieht wie folgt aus:
Ich lasse 2 Arduinos (nennen wir sie A und B) per RFM12B Funkmodul miteinander kommunizieren. Ein Gerät (A) sendet permanent ein Signal, sobald das andere (Gerät B) in Reichweite kommt und dieses Signal empfängt, antwortetet es. Empfängt Gerät A diese Antwort lässt es eine LED 3x blinken.

Woran es definitv nicht liegt:
Stromversorgung ( alle Möglichkeiten ausprobiert)
Arduino Board ( der gleiche Sketch lief auf mehreren Unos und Fios)

Ich verstehe leider nicht, warum es an einem Computer wunderbar funktioniert.
Habt ihr Ideen? Vielen Dank schonmal!

#include <RFM12B.h>
#include <avr/sleep.h>

#define RADIOPOWER 5
#define NODEID       1  //network ID used for this unit
#define NETWORKID    99  //the network ID we are on
#define GATEWAYID     0  //the node ID we're sending to
#define ACK_TIME     50  // # of ms to wait for an ack
#define SERIAL_BAUD  115200

int ledPin = 5;
int RFMPowerPin = 7;

// instance of the Radio Module
RFM12B radio;
byte sendSize = 0;
char payload[] = "a";
bool requestACK = false;
int interPacketDelay = 100;


void setup() {
  Serial.begin(SERIAL_BAUD);
  Serial.println("Ich bin Geraet A");
  pinMode(ledPin, OUTPUT);
  pinMode(RFMPowerPin, OUTPUT);
  digitalWrite(RFMPowerPin, LOW);
  delay(1000);
  digitalWrite(RFMPowerPin, HIGH);
  blinky();
  radio.Initialize(NODEID, RF12_915MHZ, NETWORKID, RADIOPOWER);
}

void loop() {

  radio.Send(GATEWAYID, payload, sendSize + 1, 1);
  delay(3);
  for ( int x = 0; x < 10; x++) {
    if (radio.ReceiveComplete())  {
      Serial.println("Antwort erhalten");
      if (radio.CRCPass()) {
        Serial.println((char)radio.Data[0]);
        if ((char)radio.Data[0] == 'b') {
          Serial.println("Paket von Geraet B: Licht an!");
          blinky();
        }
      }
    }
    delay(10);
  }
}

void blinky () {
  analogWrite(ledPin, 255);
  delay(200);
  analogWrite(ledPin, 0);
  delay(200);
  analogWrite(ledPin, 255);
  delay(200);
  analogWrite(ledPin, 0);
  delay(200);
  analogWrite(ledPin, 255);
  delay(200);
  analogWrite(ledPin, 0);
  delay(200);
}

Nur mal eine Frage : Was soll die bis 10 zählende For-Schleife ?
Loop läuft doch eh' unendlich, so sehe ich 10* Unendlich !

Ulli

Welcher der beiden hängt sich auf?

Wenn ich den Arduino am Computer hängen und den seriellen Monitor offen habe, läuft er tagelang problemlos

Und wenn du den SerialMonitor nicht offen hast, den Arduino aber über PC - USB versorgst?
Und, falls SerialMonitor offen oder nicht keinen Unterschied macht, wenn du den Arduino über USB mit Strom versorgst ?

Welches ArduinoModell hast Du?

Hallo zusammen, schonmal vielen Dank für die raschen Antworten!

beeblebrox:
Nur mal eine Frage : Was soll die bis 10 zählende For-Schleife ?
Loop läuft doch eh' unendlich, so sehe ich 10* Unendlich !

Ist im Prinzip nur eine Routine um pro 1x senden 10x auf Antwort des anderen Geräts zu warten. Er soll also kurz senden erstmal länger "zuhören" ob ein entsprechendes Signal reinkommt.

michael_x:
Welcher der beiden hängt sich auf? Und wenn du den SerialMonitor nicht offen hast, den Arduino aber über PC - USB versorgst?
Und, falls SerialMonitor offen oder nicht keinen Unterschied macht, wenn du den Arduino über USB mit Strom versorgst ?

uwefed:
Welches ArduinoModell hast Du?

Gerät A hängt sich auf, dessen Code oben gepostet ist. Den Code habe ich bislang auf mehreres Arduino Unos und Arduino Fios getestet. Das Arduino Uno wurde dabei sowohl über 9v Netzteil, 5V USB-Ladegerät und USB aus dem Notebook gefüttert. Das Fio über USB Stromeingang und FDTI Adapter. In beiden Fällen frieren die Geräte irgendwann ein. Nur wenn ich es über USB (Uno) oder FTDI-Programmer (Fio) versorge UND am seriellen Monitor hängen habe läuft alles stabil.