对于我们来说,LED,按键这些控制都是比较简单,我们直接联合在一起进行操作。
LED是板子板载的一颗指示灯,这个LED最终可以被用在状态只是上:
通过GPIO25输出高电平可以点亮这个LED;
板子的按键实际上是一个调试按键(BOOT),我们进行调试需要用到,不能作为用户按键,所以想要用到控制的按键需要用到墨水屏模块上的按键,一共有三个(ABC):
对应的接口:
接下来我们就看一下软件如何实现对他们的控制呢?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();