Browse Source
Kollisions-Erkennung sollte auch funktionierten, aber das ist nicht ganz klar. Signed-off-by: Stephan Richter <s.richter@srsoftware.de>nano-revision-1.0
Stephan Richter
1 year ago
2 changed files with 114 additions and 30 deletions
@ -1,19 +1,59 @@ |
|||||||
#include <SoftwareSerial.h> |
int sTx = 2; |
||||||
|
int sRx = 3; |
||||||
int baud = 19200; |
|
||||||
int sTx = 4; |
|
||||||
int sRx = 5; |
|
||||||
SoftwareSerial mySerial(sRx,sTx); |
|
||||||
|
|
||||||
|
long base = 800; |
||||||
|
long rst = base*10; // reset
|
||||||
|
boolean bt = false; |
||||||
|
long dif = 0; |
||||||
|
long lt = 0; |
||||||
|
long now = 0; |
||||||
|
char rcv = 0; |
||||||
|
int idx = 0; |
||||||
|
String message; |
||||||
void setup(){ |
void setup(){ |
||||||
|
pinMode(sRx,INPUT); |
||||||
|
pinMode(sTx,OUTPUT); |
||||||
|
attachInterrupt(digitalPinToInterrupt(sRx),change,CHANGE); |
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
mySerial.begin(baud);
|
|
||||||
Serial.println("Receiver ready"); |
Serial.println("Receiver ready"); |
||||||
} |
} |
||||||
|
|
||||||
void loop(){ |
void reset(long dif){ |
||||||
if (mySerial.available() > 0){ |
rcv = 0; |
||||||
char c = mySerial.read(); |
idx = -1; |
||||||
Serial.print(c); |
message.reserve(32); |
||||||
|
} |
||||||
|
void change(){ |
||||||
|
bool bt = digitalRead(sRx); |
||||||
|
now = micros(); |
||||||
|
dif = now - lt; |
||||||
|
lt = now; |
||||||
|
if (dif > rst){ |
||||||
|
reset(dif); |
||||||
|
} else { |
||||||
|
handle(!bt,dif); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
void handle(boolean bt, long dif){ |
||||||
|
long count = dif/base; |
||||||
|
for (int i=0; i<count; i++) push(bt); |
||||||
|
} |
||||||
|
|
||||||
|
void push(boolean bt){ |
||||||
|
if (idx>=0) rcv |= bt<<idx; |
||||||
|
idx++; |
||||||
|
|
||||||
|
if (idx == 8){ |
||||||
|
if (rcv == 13) { |
||||||
|
Serial.println(message); |
||||||
|
message = ""; |
||||||
|
} else { |
||||||
|
message+=rcv; |
||||||
|
}
|
||||||
|
idx =0; |
||||||
|
rcv =0; |
||||||
} |
} |
||||||
} |
} |
||||||
|
|
||||||
|
void loop(){} |
||||||
|
Loading…
Reference in new issue