how to detect a keyboard key in a while loop using a figure

I am using arduino nano and checking push buttons in a while loop. I want to detect a keyboard key, say 'spacebar' and simulate a push button. A figure with a push button is the desired output. Everytime the figure is in focus and the 'spacebar' is pressed on the keyboard, it should turn on and off a digital output of arduino board.

1 个评论

That’s an interesting setup, especially for anyone trying to build small reaction-based projects. I’ve been experimenting with space-press mechanics myself while messing around with a simple browser game at https://space-bar-clicker.github.io/, and timing intervals really make a difference. Adding a delay to emulate spacebar presses should work well if you trigger it with a timer inside the callback.

请先登录,再进行评论。

回答(1 个)

You could use the figure's KeyPressFcn, possibly combined with some of the ideas below:
myFig = figure('KeyPressFcn', @myKeyPressFcn,...
'UserData', false);
a = 0;
while true
a = a + rand;
if myFig.UserData
close(myFig)
break
end
drawnow % <- important so that myKeyPressFcn() gets called when a key is pressed
end
disp(a)
function myKeyPressFcn(src, evt)
if strcmp(evt.Key, 'space')
src.UserData = true;
end
end

2 个评论

Hi Tommy
'waitforbuttonpress' worked for me.
Thanks for your reply.
Glad to hear you got it working!

请先登录,再进行评论。

类别

在 帮助中心 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息

产品

版本

R2018b

评论:

2025-12-1

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by