diff --git a/connect_switch.ino b/connect_switch.ino index fbfa24d..428533c 100644 --- a/connect_switch.ino +++ b/connect_switch.ino @@ -38,6 +38,7 @@ struct arrow newestYArrow; #define ButtonInfoTableSize 9 struct ButtonInfo buttonInfoTable[ButtonInfoTableSize]; +Hat last = Hat::CENTER; void perms() { if(val == 0){ @@ -125,6 +126,13 @@ void handleButtonInput(ButtonInfo *but){ but->prev = but->current; } +void moveHat(Hat dir){ + if(last != dir){ + SwitchControlLibrary().MoveHat(static_cast(dir)); + last = dir; + } +} + void loop() { val = digitalRead(2); @@ -150,27 +158,27 @@ void loop() if(arrowTable[1].current == 0){ if(arrowTable[3].current == 0){ if(arrowTable[0].current == 0){ - SwitchControlLibrary().MoveHat(static_cast(Hat::TOP)); + moveHat(Hat::TOP); } else{ if(arrowTable[2].current == 0){ - SwitchControlLibrary().MoveHat(static_cast(Hat::BOTTOM)); + moveHat(Hat::BOTTOM); } else{ - SwitchControlLibrary().MoveHat(static_cast(Hat::CENTER)); + moveHat(Hat::CENTER); } } } else{ if(arrowTable[0].current == 0){ - SwitchControlLibrary().MoveHat(static_cast(Hat::TOP_LEFT)); + moveHat(Hat::TOP_LEFT); } else{ if(arrowTable[2].current == 0){ - SwitchControlLibrary().MoveHat(static_cast(Hat::BOTTOM_LEFT)); + moveHat(Hat::BOTTOM_LEFT); } else{ - SwitchControlLibrary().MoveHat(static_cast(Hat::LEFT)); + moveHat(Hat::LEFT); } } } @@ -178,27 +186,27 @@ void loop() else{ if(arrowTable[3].current == 0){ if(arrowTable[0].current == 0){ - SwitchControlLibrary().MoveHat(static_cast(Hat::TOP_RIGHT)); + moveHat(Hat::TOP_RIGHT); } else{ if(arrowTable[2].current == 0){ - SwitchControlLibrary().MoveHat(static_cast(Hat::BOTTOM_RIGHT)); + moveHat(Hat::BOTTOM_RIGHT); } else{ - SwitchControlLibrary().MoveHat(static_cast(Hat::RIGHT)); + moveHat(Hat::RIGHT); } } } else{ if(arrowTable[0].current == 0){ - SwitchControlLibrary().MoveHat(static_cast(Hat::TOP)); + moveHat(Hat::TOP); } else{ if(arrowTable[2].current == 0){ - SwitchControlLibrary().MoveHat(static_cast(Hat::BOTTOM)); + moveHat(Hat::BOTTOM); } else{ - SwitchControlLibrary().MoveHat(static_cast(Hat::CENTER)); + moveHat(Hat::CENTER); } } }