这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【彩屏贪吃蛇小游戏】Let'sDo第2期活动-过程贴-按键控制LED亮灭

共2条 1/1 1 跳转至

【彩屏贪吃蛇小游戏】Let'sDo第2期活动-过程贴-按键控制LED亮灭

菜鸟
2024-08-10 00:47:49     打赏

一、

本文实现的功能是在MDK环境下,编程实现按键输入状态检测,按键按下点亮LED,按键再次按下熄灭LED。从PICO开发板的原理图知板载绿色LED连接在GPIO25引脚上,为高电平驱动点亮。板载按键为用作BOOT处理,在PICO运行期间也可以用作普通按键使用。从原理图可以看出按键按下为接地,由于电阻R11存在造成按键按下会使QSPI_SS端为高电平,此时PICO的56编号引脚输入电平为高电平。

image.png

image.png

二、

PICO GPIO输入结构说明

image.png

image.png

对按键输入电平检测,则需要将端口引脚设置为输入模式

检测原理是在程序中不断循环检测按键所在输入引脚的电平状态,检测到输入电平为高说明此时按键按下。另外,从原理图中可以看到按键没有采取硬件消抖措施,因此程序当中可以加入软件消抖处理以减小按键抖动造成的异常电平检测。

三、

示例程序源码:

int main(void) 
{
  system_init();
  gpio_init(PICO_DEFAULT_LED_PIN);
  gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT);
  uint8_t led_on=0;
  while(true){
   if(get_bootsel_button()==1){
	delay_ms(10);		       //延时10ms再检测按键状态,为软件消抖
	if(get_bootsel_button()==1){
	led_on=!led_on;
	gpio_put(PICO_DEFAULT_LED_PIN,led_on);
	printf("Key Pressed.\n");
	while(get_bootsel_button());       //wait for button release.
	}
    }
  }
}

四、

运行效果

image.png

Key Test.gif





关键词: PICO按键     LED点亮    

专家
2024-08-10 01:32:11     打赏
2楼

感谢楼主分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]