1-key nrf52832

摘要:
nrf_gpio_pin_read(14)||!nrf_gpio_pin_read(15)||!nrf_gpio_pin_read(16)||!nrf_gpio_pin_read(13)){nrf_delay_ms(10);//keyshakeoffif(!nrf_gpio_pin_read(14)||!nrf_gpio_pin_read(15)||!nrf_gpio_pin_read(16)||!nrf_gpio_pin_read(13)){nrf_gpio_pin_set(12);//openbeepnrf_delay_ms(100);}//waitkeyreleasewhile(!nrf_gpio_pin_read(14)||!nrf_gpio_pin_read(15)||!nrf_gpio_pin_read(16)||!

实验目的:

(1)触摸电容按键,4个LED电平翻转

(2)按下4个普通按键的其中之一,有源蜂鸣器响起

实验原理:

1-key nrf52832第1张1-key nrf52832第2张

1-key nrf52832第3张1-key nrf52832第4张

实验代码:

(1)普通按键key && 电容按键Touch key 初始化函数

/*KEY: 13-16  

TOUCH KEY:  12
*/

#define ENABLE_TOUCH_KEY  //touch key enable 

void Key_init(void)
{

#ifndef ENABLE_TOUCH_KEY
        nrf_gpio_cfg_output(12);//beep
        nrf_gpio_range_cfg_input(13, 16, NRF_GPIO_PIN_PULLUP);//key
#elsenrf_gpio_cfg_input(12,NRF_GPIO_PIN_PULLUP);//touch key
#endif
}

(2)4个普通按键 code

//TOUCH KEY and BEEP share one pin, so need exchange short cap  
void Key_BEEP(void)
{
  if(!nrf_gpio_pin_read(14) || !nrf_gpio_pin_read(15) || !nrf_gpio_pin_read(16) || !nrf_gpio_pin_read(13))
        {
            nrf_delay_ms(10);//key shake off
            if(!nrf_gpio_pin_read(14) || !nrf_gpio_pin_read(15) || !nrf_gpio_pin_read(16) || !nrf_gpio_pin_read(13))
            {
                    nrf_gpio_pin_set(12);//open beep
                    nrf_delay_ms(100);
            }
      //wait key release 
            while(!nrf_gpio_pin_read(14) || !nrf_gpio_pin_read(15) || !nrf_gpio_pin_read(16) || !nrf_gpio_pin_read(13));
        }
        if(nrf_gpio_pin_read(14) || nrf_gpio_pin_read(15) || nrf_gpio_pin_read(16) || nrf_gpio_pin_read(13))
        nrf_gpio_pin_clear(12);//close beep
}

(3)touch key code

void TouchKey_LED(void)
{
 if(nrf_gpio_pin_read(12))
 {
     nrf_delay_ms(10);//key shake off
     if(nrf_gpio_pin_read(12))//touch key 
{
            nrf_gpio_pin_toggle(17);
            nrf_gpio_pin_toggle(18);
            nrf_gpio_pin_toggle(19);
            nrf_gpio_pin_toggle(20);    
     }
     while(nrf_gpio_pin_read(12));//wait key release
}
}

(4)touch key main function

int main(void)
{
    //led init
    nrf_gpio_range_cfg_output(17, 20);//led
    nrf_gpio_pin_set(17);
    nrf_gpio_pin_set(18);
    nrf_gpio_pin_set(19);
    nrf_gpio_pin_set(20);
    
//EXIT_KEY_Init();
Key_init();
    
  while(true)
  {
        TouchKey_LED();
//Key_BEEP();
}
}

Touch key实验视频:

https://www.bilibili.com/video/BV1ji4y177QZ/

普通IO Test

https://www.bilibili.com/video/BV1na4y1s7aC/

免责声明:文章转载自《1-key nrf52832》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇kali下docker安装教程CANopen的相关学习下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用 Shell 调试 GPIO 设备

概述 板:hi3516ev200 灯:接到GPIO1_6 寄存器操作 使用命令:Usage: devmem ADDRESS [WIDTH [VALUE]],其中WIDTH可选值为8, 16, 32, 64,默认值是32。 在地址0x120C0018读取32bit值 # devmem 0x120C0018 在地址0x120C0018写入32bit值0x1...

Python_实现json数据的jsonPath(精简版)定位及增删改操作

基于python实现json数据的jsonPath(精简版)定位及增删改操作   by:授客QQ:1033553122     实践环境 win7 64 Python 3.4.0   代码 #-*- encoding:utf-8 -*-   # author:授客   importre   defparse_sub_expr(sub_e...

flask中内置的session

Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 1. Flask 中 session 是需要 secret_key 的 from flask import session app = Flask(__name__) app.secret_key = "xiaobai" secret_k...

如何在C++中的Map或Set中修改Key值

我们对map中的修改value操作可以是如下的: auto myMap = std::map<std::string, int>{ {"one", 1}, {"two", 2}, {"three", 3} }; myMap.find("two")->second = 22; 但是如果想修改key操作,则下面这段代码是错误的: auto...

vue JSON数据导出为 多个sheet表的excel文件

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />...

(stm32f103学习总结)—ADC模数转换实验

一、STM32F1 ADC介绍  TM32F103 系列一般都有 3 个 ADC,这些 ADC 可以独立使用,也可 以使用双重(提高采样率)。STM32F1 的 ADC 是 12 位逐次 逼近型的模拟数字转换器。它具有多达 18个复用通道,可测量来自16 个外部源、2 个内部源信号。 这些通道的 A/D 转换可 以单次、连续、扫描或间断模式执行。ADC 的...