From ac8952d8aa16466ec9b813635922a57707e1c469 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Sun, 22 Sep 2019 23:08:48 +0200 Subject: geht erst mal irgendwie --- sensor.c | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/sensor.c b/sensor.c index 2c933da..f764817 100644 --- a/sensor.c +++ b/sensor.c @@ -23,16 +23,42 @@ int main() { pinMode(9, PINMODE_OUTPUT); digitalWrite(9, HIGH); - pinMode(8, PINMODE_OUTPUT); pinMode(9, PINMODE_INPUT); + pinMode(8, PINMODE_OUTPUT); + while(1) { - printf("Writing to GPIO %d: High\n", 8); + // start bit digitalWrite(8, HIGH); -printf("Reading from GPIO %d: %d\n", 9, digitalRead(9)); - usleep(100000); - printf("Writing to GPIO %d: Low\n", 8); + usleep(18000); digitalWrite(8, LOW); -printf("Reading from GPIO %d: %d\n", 9, digitalRead(9)); - usleep(100000); + long int cycles = 0; + int last_state = digitalRead(9); + // ignore 2 bits: reaction on command + "official" start bit + int bit = -2; + char data[5]; + memset(&data[0], 0, 5); + while (cycles < 100000) { + cycles++; + if (last_state == digitalRead(9)) + continue; + if (last_state == 1) { + if (bit >= 0) { + if (cycles>400) { + printf("1"); + data[bit / 8] |= 1 << 7 - (bit % 8); + } else + printf("0"); + if ((bit+1) % 8 == 0) + printf(" "); + } + bit++; + } + cycles = 0; + last_state = 1-last_state; + } + if ((bit == 40) && ((data[0]+data[1]+data[2]+data[3]-data[4]) % 255 == 0)) + printf(" %f %f", data[0] + data[1]/256., data[2] + data[3]/256.); + printf("\n\n"); + sleep(2); } } -- cgit v1.2.3-54-g00ecf