我想在PI中实现WASD控件。到目前为止,这也很有效。
#include "bcm2835.h"
#define SLEEPTIME 500
#define GPIO17 RPI_GPIO_P1_11
...
while(running) {
// get key
printf("wait for key:");
system("/bin/stty raw");
key = getchar();
system("/bin/stty cooked");
printf(" key %i pressed!\n", key);
// key-logic
switch(key) {
case 'w':
printf("set GPIO 17 HIGH");
bcm2835_gpio_write(GPIO17, HIGH);
bcm2835_delay(SLEEPTIME); // <-- wanna remove this!
break;
}
// reset GPIO
bcm2835_gpio_write(GPIO17, LOW);
printf("\n");
}
...
在我目前的实施中,我遇到以下问题:
如果我按下W键以便检测它并设置GPIO。短暂延迟后,GPIO复位并等待下一个键。
但是,我希望只要按下W按钮就会设置GPIO。你有关于如何实现这一目标的暗示吗?是否可以选择检测密钥的发布?
我已经考虑过Interruputs但没找到合适的解决方案。 谢谢!
EDIT1:
我找到了一个效果很好的解决方案。 非常感谢Loki Software,Inc。 与John R. Hall合作。
您可以在此处获取: keycodes.c
以及详细说明: Programming Linux Games
EDIT2:
我不得不撤回我的陈述。 该程序在debian下在笔记本上工作。在带有USB键盘的Rasbian上,它无法最佳地工作。 虽然它没有错误地启动但是没有响应密钥的释放。
有人知道任何建议吗?