Hallo zusammen,
ich brauche mal ein wenig Hilfestellung von euch.
Kurz erklärt, was ich vor habe:
Aufbau A
A ist das sogennate Sender "Board". Hier soll ein Wert vom LDR bzw. Lichtsensor ausgelesen werden und je nach Zustand die 0 und 1 an das Bluetooth übermittelt werden.
Aufbau B
B ist der empfänger der Daten vom Aufbau A. Hier sollen die 0 und 1 Empfangen werden und LEDs bzw. ein LED W2812 Stripe zeigt infos an, wenn es null oder eins empfängt.
Jetzt habe ich 2 Sketche. Einen zum Empfangen und einen zum senden.
Beim Senden habe ich jedoch das Problem, dass ständig 1 gesendet wird, und die LED dadurch sehr schnell blinkt, bzw. überhaupt kein Wechsel statt finden.
Sprich 1x senden von 1 = LED an. Gleichzeitig jedoch nicht mehr weiter reagieren, bzw. dadurch Energiespraen, bis eine 0 empfangen wird.
Was habe ich hier falsch gemacht, bzw. wo liegt der Fehler?
Da dass ganze über Li-Ion Akku gesteuert werden sollte, wird dieser auf Dauer sehr schnell leer werden, da ja ein ständiger "Datenverbrauch" stattfindet.
Irgendwelche Tipps?
Sendercode:
#include <SoftwareSerial.h>
int eingang= A0; //Das Wort „eingang“ steht jetzt für den Wert „A0“ (Bezeichnung vom Analogport 0)
int LED = 7; //Das Wort „LED“ steht jetzt für den Wert 10
int sensorWert = 0; //Variable für den Sensorwert mit 0 als Startwert
void setup(){
Serial.begin(9600); //serieller Monitor wird gestartet, Baudrate auf 9600 festgelegt
}
void loop(){
sensorWert = analogRead(A0);
if (sensorWert > 500 ) //Wenn der Sensorwert über 512 beträgt….
{
digitalWrite( LED, LOW);
Serial.write ('1');
}
else
{
Serial.write ('0');
digitalWrite (LED, HIGH);
}
}
Empfängercode (abgewandelt vom bereits vorhanden Code (Attiny)):
#include <SoftwareSerial.h>
char bluetoothagent; //Werte sollen per Bluetooth gesendet werden
boolean ledstatus3,ledstatus4;
#define RxD 1
#define TxD 2
SoftwareSerial mySerial(1,2); //rx, tx
void setup(){
pinMode(1, INPUT);
pinMode(2, OUTPUT);
mySerial.begin(9600); //serieller Monitor wird gestartet, Baudrate auf 9600 festgelegt
pinMode(3,OUTPUT); //PIN 13 wird als Ausgang festgelegt
pinMode(4,OUTPUT); //PIN 12 wird als Ausgang festgelegt
}
void loop(){
if(mySerial.available()); //wenn Daten empfangen werden... //wenn Daten empfangen werden...
{
bluetoothagent=mySerial.read();//..sollen diese ausgelesen werden
if (bluetoothagent=='1') //wenn das Bluetooth Modul eine „1" empfängt..
{
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
}
if (bluetoothagent=='0') //wenn das Bluetooth Modul eine „0" empfängt..
{
digitalWrite(3, LOW);
digitalWrite(4,HIGH);
}
}
}