- Joined
- Mar 15, 2015
- Messages
- 1,276
- Trophies
- 0
- Location
- Poké Ball
- Website
- lavanoid.github.io
- XP
- 1,279
- Country
So I've been working on a homebrew app for my robotics project but I don't know how to check if NO keys are pressed so it can send the "Stop" command to a web server. Here's the code:
It needs to be designed so that it doesn't spam my robot with the same command. Anyone got any tips or example code? Yes, I referred to ctrulibs example code but it didn't solve my question.
Thanks!
Code:
int main()
{
gfxInitDefault();
consoleInit(GFX_TOP,NULL);
printf("Start pressing buttons\n");
u32 actionOld = 0;
// Main loop
while (aptMainLoop())
{
gspWaitForVBlank();
hidScanInput();
u32 kDown = hidKeysDown();
u32 kUp = hidKeysUp();
u32 kHeld = hidKeysHeld();
u32 kHeldOld = 0;
u32 action = 0;
//consoleClear();
if (kHeld != kHeldOld) {
if (kHeld & KEY_UP) {
if (kHeld & KEY_X) {
action = 1;
if (action != actionOld) {
printf("Moving forward...\n");
}
} else {
if (kHeld & KEY_B) {
action = 2;
if (action != actionOld) {
printf("Turning right...\n");
}
} else {
action = 3;
if (action != actionOld) {
printf("Left wheel moving forward...\n");
}
}
}
} else {
if (kHeld & KEY_DOWN) {
if (kHeld & KEY_B) {
action = 4;
if (action != actionOld) {
printf("Moving backwards...\n");
}
} else {
if (kHeld & KEY_X) {
action = 5;
if (action != actionOld) {
printf("Turning left...\n");
}
} else {
action = 6;
if (action != actionOld) {
printf("Left wheel moving backwards...\n");
}
}
}
} else {
if (kHeld & KEY_X) {
if (kHeld & KEY_UP) {
action = 1;
if (action != actionOld) {
printf("Moving forward...\n");
}
} else {
if (kHeld & KEY_DOWN) {
action = 5;
if (action != actionOld) {
printf("Turning left...\n");
}
} else {
action = 7;
if (action != actionOld) {
printf("Right wheel moving forward...\n");
}
}
}
} else {
if (kHeld & KEY_B) {
if (kHeld & KEY_DOWN) {
action = 4;
if (action != actionOld) {
printf("Moving backwards...\n");
}
} else {
if (kHeld & KEY_UP) {
action = 2;
if (action != actionOld) {
printf("Turning right...\n");
}
} else {
action = 8;
if (action != actionOld) {
printf("Right wheel moving backwards...\n");
}
}
}
}
}
}
}
}
kHeldOld = kHeld;
actionOld = action;
if(kDown & KEY_START)
break;
// Flush and swap framebuffers
gfxFlushBuffers();
gfxSwapBuffers();
}
// Exit services
gfxExit();
return 0;
}
It needs to be designed so that it doesn't spam my robot with the same command. Anyone got any tips or example code? Yes, I referred to ctrulibs example code but it didn't solve my question.
Thanks!