From 311c9ecdbb45e0d26dac94075557a772d7285358 Mon Sep 17 00:00:00 2001 From: damage Date: Fri, 3 Jan 2025 09:51:49 +0100 Subject: [PATCH] counter not needed, just the events --- rotator/rotator.ino | 54 +++++++++++++++------------------------------ 1 file changed, 18 insertions(+), 36 deletions(-) diff --git a/rotator/rotator.ino b/rotator/rotator.ino index 2c7b414..6428bf6 100644 --- a/rotator/rotator.ino +++ b/rotator/rotator.ino @@ -1,4 +1,3 @@ - #define PIN_HEADING_CLK D7 #define PIN_HEADING_DT D5 #define PIN_HEADING_SW D6 @@ -13,24 +12,19 @@ #define HEADING_DT_TRIGGER 1 #define HEADING_DT_HIGH 2 -#define HEADING_SW_TRIGGER 4 +#define HEADING_SW_TRIGGER 2 -#define ALTITUDE_DT_TRIGGER 8 -#define ALTITUDE_DT_HIGH 16 -#define ALTITUDE_SW_TRIGGER 32 +#define ALTITUDE_DT_TRIGGER 4 +#define ALTITUDE_DT_HIGH 8 +#define ALTITUDE_SW_TRIGGER 8 -#define MIN_DT_INPUT_DELAY 1000 // 1ms +#define MIN_DT_INPUT_DELAY 1000 // 1ms #define MIN_SW_INPUT_DELAY 500000 // 500ms -#define MIN_ALTITUDE 1 -#define MAX_ALTITUDE 60000 - -#define MIN_HEADING 1 -#define MAX_HEADING 360 +const char PREFIX_HEADING[5] = "head"; +const char PREFIX_ALTITUDE[5] = "altd"; uint8_t lastClk = HIGH; -uint16_t heading = 360; -uint16_t altitude = 0; // ringbuffer of trigger and direction values uint8_t valueBuffer[VALUE_BUFFER] = { 0 }; @@ -99,27 +93,17 @@ void altitudeSwFalling() { swFalling(ALTITUDE_SW_TRIGGER); } -void dtTriggered(uint16_t &cnt, uint8_t high, uint8_t fast, uint16_t miV, uint16_t miVR, uint16_t maV, uint16_t mavR) { +void dtTriggered(uint8_t high, uint8_t fast, const char prefix[5]) { + Serial.print(prefix); if (high) { - cnt++; + Serial.println(1); } else { - cnt--; - } - - if (cnt > maV) { - cnt = mavR; - } - - if (cnt < miV) { - cnt = miVR; + Serial.println(-1); } } void setup() { Serial.begin(115200); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } pinMode(PIN_HEADING_SW, INPUT_PULLUP); pinMode(PIN_HEADING_DT, INPUT_PULLUP); @@ -134,25 +118,23 @@ void setup() { void loop() { while (writerPos != readerPos) { uint8_t value = valueBuffer[readerPos++]; - + if (readerPos >= VALUE_BUFFER) { readerPos = 0; } if (value & HEADING_DT_TRIGGER) { uint8_t dtHigh = value & HEADING_DT_HIGH; - dtTriggered(heading, dtHigh, 5, MIN_HEADING, MAX_HEADING, MAX_HEADING, MIN_HEADING); - Serial.print("Heading: "); - Serial.println(heading); + dtTriggered(dtHigh, 5, PREFIX_HEADING); } else if (value & HEADING_SW_TRIGGER) { - Serial.println("Heading: pushed"); + Serial.print(PREFIX_HEADING); + Serial.println("push"); } else if (value & ALTITUDE_DT_TRIGGER) { uint8_t dtHigh = value & ALTITUDE_DT_HIGH; - dtTriggered(altitude, dtHigh, 5, MIN_ALTITUDE, MIN_ALTITUDE, MAX_ALTITUDE, MAX_ALTITUDE); - Serial.print("Altitude: "); - Serial.println(altitude); + dtTriggered(dtHigh, 5, PREFIX_ALTITUDE); } else if (value & ALTITUDE_SW_TRIGGER) { - Serial.println("Altitude: pushed"); + Serial.print(PREFIX_ALTITUDE); + Serial.println("push"); } else { // never happen error... }