中级
30 分钟

在任何紧急情况下使用CTHS15CIC05ALARM和PIC32MZ2048EFM100

敲响警报!

Button Alarm Click with Curiosity PIC32 MZ EF

已发布 7月 22, 2025

点击板

Button Alarm Click

开发板

Curiosity PIC32 MZ EF

编译器

NECTO Studio

微控制器单元

PIC32MZ2048EFM100

使用ALARM按钮激活对紧急情况的即时响应,确保快速警报和增强的安全协议。

A

A

硬件概览

它是如何工作的?

Button ALARM Click 基于VCC(Visual Communications Company)的CTHS15CIC05ALARM电容触摸传感器显示器。此传感器是一体化解决方案,提供电容触摸感应,并在顶部带有背光电源符号图标。该设备使用最少的引脚:用户只需要连接四个引脚。除了电源引脚(VCC和GND),还需要两个引脚。触摸检测通过CTHS15CIC05ALARM传感器的OUT引脚上的高电平逻辑信号指示,而IN引脚用作两个内部LED的电源,这些LED以共阴极配置连接。LED的正向电压通常为3.2V。传感器的

OUT引脚连接到mikroBUS™的INT引脚,而传感器的IN引脚连接到mikroBUS™的PWM引脚。由于传感器顶部的LEXAN™聚碳酸酯薄膜带有图标的反向印刷,即使背光关闭,触摸传感器上的报警符号图标也能可见。当内部LED点亮时,光线将通过半透明的电源符号图标,使电源符号图标均匀发光。通过向IN引脚施加PWM信号,可以在触摸时设计出有趣的照明效果。传感器IC、感应垫和两个集成LED封装在一个小方形外壳中,尺寸为15mm x 15mm x 11mm。它形成了一个紧凑且坚固的触摸按钮,具有许多优于机械

按钮的优点:由于没有移动部件,它不会磨损,也没有抖动或杂音效应,耐用且耐候。然而,它不能用于闭合电路,只能产生逻辑信号,由主MCU翻译为适当的操作。即使在手湿或戴某些手套的情况下,传感器也能正常工作。触摸传感器还可以放置在厚度最多为3mm的透明玻璃或塑料层(如聚碳酸酯或丙烯酸)后面。虽然传感器在通电后会进行自校准,但如果位置将固定,最好在这种情况下测试其功能。

Button Alarm Click top side image
Button Alarm Click bottom side image

功能概述

开发板

Curiosity PIC32 MZ EF 开发板是一个完全集成的 32 位开发平台,特点是高性能的 PIC32MZ EF 系列(PIC32MZ2048EFM),该系列具有 2MB Flash、512KB RAM、集成的浮点单元(FPU)、加密加速器和出色的连接选项。它包括一个集成的程序员和调试器,无需额外硬件。用户可以通过 MIKROE 

mikroBUS™ Click™ 适配器板扩展功能,通过 Microchip PHY 女儿板添加以太网连接功能,使用 Microchip 扩展板添加 WiFi 连接能力,并通过 Microchip 音频女儿板添加音频输入和输出功能。这些板完全集成到 PIC32 强大的软件框架 MPLAB Harmony 中,该框架提供了一个灵活且模块化的接口

来应用开发、一套丰富的互操作软件堆栈(TCP-IP、USB)和易于使用的功能。Curiosity PIC32 MZ EF 开发板提供了扩展能力,使其成为连接性、物联网和通用应用中快速原型设计的绝佳选择。

Curiosity PIC32MZ EF double side image

微控制器概述 

MCU卡片 / MCU

default

建筑

PIC32

MCU 内存 (KB)

2048

硅供应商

Microchip

引脚数

100

RAM (字节)

524288

使用的MCU引脚

mikroBUS™映射器

NC
NC
AN
NC
NC
RST
NC
NC
CS
NC
NC
SCK
NC
NC
MISO
NC
NC
MOSI
Power Supply
3.3V
3.3V
Ground
GND
GND
Sensor LED Enable
RPE8
PWM
Touch Detection
RF13
INT
NC
NC
TX
NC
NC
RX
NC
NC
SCL
NC
NC
SDA
NC
NC
5V
Ground
GND
GND
1

“仔细看看!”

Click board™ 原理图

Button Alarm Click Schematic schematic

一步一步来

项目组装

Curiosity PIC32MZ EF front image hardware assembly

从选择您的开发板和Click板™开始。以Curiosity PIC32 MZ EF作为您的开发板开始。

Curiosity PIC32MZ EF front image hardware assembly
GNSS2 Click front image hardware assembly
Prog-cut hardware assembly
Board mapper by product7 hardware assembly
Necto image step 2 hardware assembly
Necto image step 3 hardware assembly
Necto image step 4 hardware assembly
Necto image step 5 hardware assembly
Necto image step 6 hardware assembly
Curiosity PIC32 MZ EF MCU Step hardware assembly
Necto No Display image step 8 hardware assembly
Necto image step 9 hardware assembly
Necto image step 10 hardware assembly
Debug Image Necto Step hardware assembly

软件支持

库描述

此库包含Button ALARM Click驱动程序的API。

关键功能:

  • buttonalarm_pwm_stop - 此函数停止PWM模块输出

  • buttonalarm_pwm_start - 此函数启动PWM模块输出

  • buttonalarm_get_button_state - 此函数读取INT引脚的数字信号,告诉我们按钮是否已被按下

开源

代码示例

完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio 应用程序代码也可以在MIKROE的GitHub账户中找到。

/*!
 * @file main.c
 * @brief Button Alarm Click Example.
 *
 * # Description
 * This example showcases how to initialize and use the whole family of Button Clicks. 
 * One library is used for every single one of them. They are simple touch detectors that send 
 * a pressed/released signal and receive a PWM output which controls the backlight on the button.
 *
 * The demo application is composed of two sections :
 *
 * ## Application Init
 * This function initializes and configures the logger and Click modules.
 *
 * ## Application Task
 * This example first increases the backlight on the button and then decreases the intensity of the backlight. When the button is touched,
 * reports the event in the console using UART communication.
 *
 * @author Nikola Peric
 *
 */

#include "board.h"
#include "log.h"
#include "buttonalarm.h"

static buttonalarm_t buttonalarm;
static log_t logger;

void application_init ( void )  
{
    log_cfg_t log_cfg;                 /**< Logger config object. */
    buttonalarm_cfg_t buttonalarm_cfg;   /**< Click config object. */

    /** 
     * Logger initialization.
     * Default baud rate: 115200
     * Default log level: LOG_LEVEL_DEBUG
     * @note If USB_UART_RX and USB_UART_TX 
     * are defined as HAL_PIN_NC, you will 
     * need to define them manually for log to work. 
     * See @b LOG_MAP_USB_UART macro definition for detailed explanation.
     */
    LOG_MAP_USB_UART( log_cfg );
    log_init( &logger, &log_cfg );
    log_info( &logger, " Application Init " );

    // Click initialization.

    buttonalarm_cfg_setup( &buttonalarm_cfg );
    BUTTONALARM_MAP_MIKROBUS( buttonalarm_cfg, MIKROBUS_1 );
    err_t init_flag  = buttonalarm_init( &buttonalarm, &buttonalarm_cfg );
    if ( PWM_ERROR == init_flag ) 
    {
        log_error( &logger, " Application Init Error. " );
        log_info( &logger, " Please, run program again... " );

        for ( ; ; );
    }
    Delay_ms ( 500 );
    
    buttonalarm_set_duty_cycle ( &buttonalarm, 0.1 );
    buttonalarm_pwm_start( &buttonalarm );

    log_info( &logger, " Application Task " );
}

void application_task ( void ) 
{
    static float duty_cycle;
    static uint8_t button_state;
    static uint8_t button_state_old;

    button_state = buttonalarm_get_button_state( &buttonalarm );
    
    if ( button_state && ( button_state != button_state_old ) ) 
    {
        log_printf( &logger, " <-- Button pressed --> \r\n" );
        for ( uint8_t n_cnt = 1; n_cnt <= 100; n_cnt++  )
        {
            duty_cycle = ( float ) n_cnt ;
            duty_cycle /= 100;
            buttonalarm_set_duty_cycle( &buttonalarm, duty_cycle );
            Delay_ms ( 10 );
        }
        button_state_old = button_state;
    } 
    else if ( !button_state && ( button_state != button_state_old ) ) 
    {
        for ( uint8_t n_cnt = 100; n_cnt > 0; n_cnt-- )
        {
            duty_cycle = ( float ) n_cnt ;
            duty_cycle /= 100;
            buttonalarm_set_duty_cycle( &buttonalarm,  duty_cycle );
            Delay_ms ( 10 );
        }
        button_state_old = button_state;
    }
}

int main ( void ) 
{
    /* Do not remove this line or clock might not be set correctly. */
    #ifdef PREINIT_SUPPORTED
    preinit();
    #endif
    
    application_init( );
    
    for ( ; ; ) 
    {
        application_task( );
    }

    return 0;
}

// ------------------------------------------------------------------------ END

额外支持

资源

喜欢这个项目吗?

'购买此套件' 按钮会直接带您进入购物车,您可以在购物车中轻松添加或移除产品。