omit sending hat if direction is not changed

This commit is contained in:
2021-01-01 21:53:43 +09:00
parent 9454fdc54e
commit f413eae2fd

View File

@@ -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<uint8_t>(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<uint8_t>(Hat::TOP));
moveHat(Hat::TOP);
}
else{
if(arrowTable[2].current == 0){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::BOTTOM));
moveHat(Hat::BOTTOM);
}
else{
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::CENTER));
moveHat(Hat::CENTER);
}
}
}
else{
if(arrowTable[0].current == 0){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::TOP_LEFT));
moveHat(Hat::TOP_LEFT);
}
else{
if(arrowTable[2].current == 0){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::BOTTOM_LEFT));
moveHat(Hat::BOTTOM_LEFT);
}
else{
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(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<uint8_t>(Hat::TOP_RIGHT));
moveHat(Hat::TOP_RIGHT);
}
else{
if(arrowTable[2].current == 0){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::BOTTOM_RIGHT));
moveHat(Hat::BOTTOM_RIGHT);
}
else{
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::RIGHT));
moveHat(Hat::RIGHT);
}
}
}
else{
if(arrowTable[0].current == 0){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::TOP));
moveHat(Hat::TOP);
}
else{
if(arrowTable[2].current == 0){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::BOTTOM));
moveHat(Hat::BOTTOM);
}
else{
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::CENTER));
moveHat(Hat::CENTER);
}
}
}