Hallo zusammen,
ich möchte gerne über eine Funkverbindung Daten von einem Sensor (LDR, Ultraschall, IR Distanz etc.) am "Sender-Uno" übertragen und im "Empfägner-Uno" auswerten. Hierzu habe ich 2 Arduino UNO R3 Boards (1x SainSmart Uno R3 und einmal Arduino Uno R3) mit jeweils einem XBee Schield mit einem XBee Series 1 verwendet. Zusätzlich habe ich an jedem Uno ein LCD Display 1602 zur Anzeige der Daten angeschlossen.
Beide Xbee Module sind auf 57600 Baud eingestellt und können miteinander kommunizieren. Ich lese auf dem "Sender-Uno" einen LDR 07 am Analogport A0 aus und sende die empfangenen Werte über serial/XBee an den Empfänger. Auf dem LCD Display des "Sender-Uno" werden die Werte angezeigt (bei eingeschaltetem Licht schwanken die Werte des LDR in einem Bereich von ca. 900-950). Der "Empfänger-Uno" empfängt die Werte und stellt sie auch korrekt im LCD dar (natürlich ebenfalls in einem Bereich von ca. 900-950).
Soweit so gut...
Ich habe es jedoch noch nicht geschafft die empfangenen Werte zur Weiterverarbeitung zu nutzen, Ich möchte gerne ein Relais auslösen, wenn der empfangene Wert ("value = Serial.read();") des LDR vom "Sender-Uno" größer als 1000 ist. Das passiert z. B. wenn ich den LDR mit einer Taschenlampe anleuchte. Das Relais reagiert leider nicht auf Werte über 1000 und schaltet nicht ein. Wenn ich die Variable relais im Sketch des "Empänger-Uno" um Testen auf 1001 setze, löst das Relais aus, es scheint also korrekt angesteuert zu werden.
Als Nebenkriegsschauplatz spinnt mein LCD-Display, wenn ich die delay-Werte im Sketch des "Empfänger-Uno" über 400 ms einstelle. Aber das nur nebenbei.
Hier noch der Code der beiden Uno's:
"Sender-Uno":
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 7, 6, 5, 4);
int outgoing;
int analogPin = 0;
int ldr=0;
void setup() {
** Serial.begin(57600);**
** lcd.begin(16, 2);**
** lcd.clear();**
** lcd.print("XBee Sender LDR");**
** lcd.setCursor(0, 1);**
}
void loop() {
** lcd.write(" ");**
** lcd.setCursor(0, 1);**
** ldr = analogRead(analogPin);**
** lcd.print(ldr);**
** Serial.print(ldr);**
** delay(300);**
}
"Empfänger-Uno":
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 7, 6, 5, 4);
int relais = 9;
int value = 999;
void setup() {
** pinMode(relais, OUTPUT);**
** Serial.begin(57600);**
** lcd.begin(16, 2);**
** lcd.clear();**
** lcd.print("XBee Rec LDR");**
** lcd.setCursor(0, 1);**
}
void loop() {
** if (Serial.available()) {**
** lcd.setCursor(0, 1); **
** lcd.write(" ");**
** lcd.setCursor(0, 1); **
** while (Serial.available() > 0) {**
** value = Serial.read();**
** lcd.write(value);**
** }**
** }**
** if (value > 1000) {**
** digitalWrite(relais, HIGH);**
** delay(200);**
** }**
** else {**
** digitalWrite(relais, LOW);**
** delay(200);**
** }**
}
Hat von Euch einer eine Idee, wo der Fehler liegen könnte. Ich verzweifle, da ich seit mehreren Stunden des testens keine lösung finden kann.
Viele Grüße
Frank_