这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【墨水屏电子书DIY】2、LED、按键的控制

共4条 1/1 1 跳转至

【墨水屏电子书DIY】2、LED、按键的控制

高工
2024-08-09 11:19:45     打赏

对于我们来说,LED,按键这些控制都是比较简单,我们直接联合在一起进行操作。

LED是板子板载的一颗指示灯,这个LED最终可以被用在状态只是上:

image.png

通过GPIO25输出高电平可以点亮这个LED;

板子的按键实际上是一个调试按键(BOOT),我们进行调试需要用到,不能作为用户按键,所以想要用到控制的按键需要用到墨水屏模块上的按键,一共有三个(ABC):

image.png

对应的接口:

image.png

接下来我们就看一下软件如何实现对他们的控制呢?LED的控制实际上就是输出控制,将LED对应的引脚初始化成输出引脚即可;按键控制实际上就是输入采集,将对应的引脚初始化成输入就可以。

#define PICO_LED_PIN 25

#define INKY_KEYA_PIN 12
#define INKY_KEYB_PIN 13
#define INKY_KEYC_PIN 14

void key_init(){
    gpio_init   (INKY_KEYA_PIN);
    gpio_set_dir(INKY_KEYA_PIN, GPIO_IN);  
    gpio_set_pulls(INKY_KEYA_PIN,1, 0);
    
    gpio_init   (INKY_KEYB_PIN);
    gpio_set_dir(INKY_KEYB_PIN, GPIO_IN);  
    gpio_set_pulls(INKY_KEYB_PIN,1, 0);
    
    gpio_init   (INKY_KEYC_PIN);
    gpio_set_dir(INKY_KEYC_PIN, GPIO_IN);  
    gpio_set_pulls(INKY_KEYC_PIN,1, 0);
}

void LED_init(){
    gpio_init(PICO_LED_PIN);
    gpio_set_dir(PICO_LED_PIN, GPIO_OUT);
}

void LED_ON(){
    gpio_put(PICO_LED_PIN, 1);
}

void LED_OFF(){
    gpio_put(PICO_LED_PIN, 0);
}

void LED_Toggle(){
    gpio_put(PICO_LED_PIN, gpio_get(PICO_LED_PIN) ? 0:1);
}

接下来就是实现按键对LED的控制应用程序了,如果按键A按下则则LED翻转,B按下常亮,C按下时灭:

if(gpio_get(INKY_KEYA_PIN) == 1)
{
    MY_DEV_Delay_ms(500);
    LED_Toggle();
}
if(gpio_get(INKY_KEYB_PIN) == 1)
{
    LED_ON();
}
if(gpio_get(INKY_KEYC_PIN) == 1)
{
    LED_OFF();


专家
2024-08-09 22:43:25     打赏
2楼

看看!!


院士
2024-08-10 12:28:14     打赏
3楼

谢谢分享,学习了。


专家
2024-08-10 13:47:03     打赏
4楼

谢谢分享


共4条 1/1 1 跳转至

回复

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