Browse Source

调整灯光亮度

master
zhaohe 1 year ago
parent
commit
df036c7d0a
  1. 7
      README.md
  2. 8
      app/config/sdk_config.h
  3. 1
      app/src/board/board.h
  4. 2
      app/src/board/board_beep_ctrl.c
  5. 85
      app/src/board/board_light_ctrl.c
  6. 59
      app/src/device_ctrl_service.c

7
README.md

@ -8,9 +8,12 @@
手机端可以看到设备的软件版本信息。OK 手机端可以看到设备的软件版本信息。OK
心率采集改成由IO中断驱动。OK 心率采集改成由IO中断驱动。OK
修正回执包错误码. OK 修正回执包错误码. OK
指示灯修改成PWM驱动 OK
开机,蜂鸣器响一声 OK
开机,检查电量 OK
开机,蜂鸣器响一声
开机,检查电量
修改电量检测,电量过低时,指示灯闪烁三下后进入低功耗。 修改电量检测,电量过低时,指示灯闪烁三下后进入低功耗。

8
app/config/sdk_config.h

@ -2797,14 +2797,14 @@
#ifndef NRFX_PWM1_ENABLED #ifndef NRFX_PWM1_ENABLED
#define NRFX_PWM1_ENABLED 0
#define NRFX_PWM1_ENABLED 1
#endif #endif
// <q> NRFX_PWM2_ENABLED - Enable PWM2 instance // <q> NRFX_PWM2_ENABLED - Enable PWM2 instance
#ifndef NRFX_PWM2_ENABLED #ifndef NRFX_PWM2_ENABLED
#define NRFX_PWM2_ENABLED 0
#define NRFX_PWM2_ENABLED 1
#endif #endif
// <q> NRFX_PWM3_ENABLED - Enable PWM3 instance // <q> NRFX_PWM3_ENABLED - Enable PWM3 instance
@ -5130,14 +5130,14 @@
#ifndef PWM1_ENABLED #ifndef PWM1_ENABLED
#define PWM1_ENABLED 0
#define PWM1_ENABLED 1
#endif #endif
// <q> PWM2_ENABLED - Enable PWM2 instance // <q> PWM2_ENABLED - Enable PWM2 instance
#ifndef PWM2_ENABLED #ifndef PWM2_ENABLED
#define PWM2_ENABLED 0
#define PWM2_ENABLED 1
#endif #endif
// <q> PWM3_ENABLED - Enable PWM3 instance // <q> PWM3_ENABLED - Enable PWM3 instance

1
app/src/board/board.h

@ -29,6 +29,7 @@
*******************************************************************************/ *******************************************************************************/
#define ADS1293_SPI_INSTANCE 2 #define ADS1293_SPI_INSTANCE 2
#define BEEP_PWM_INSTANCE 0 #define BEEP_PWM_INSTANCE 0
#define LIGHT_PWM_INSTANCE 1
#define BATTERY_ADC_CHANNEL 1 // 不重复即可 #define BATTERY_ADC_CHANNEL 1 // 不重复即可
/******************************************************************************* /*******************************************************************************

2
app/src/board/board_beep_ctrl.c

@ -14,7 +14,7 @@ static nrf_pwm_sequence_t const m_beep_pwm0_seq = {
static nrf_drv_pwm_config_t const m_beep_pwm0_config0 = { static nrf_drv_pwm_config_t const m_beep_pwm0_config0 = {
.output_pins = .output_pins =
{ {
BEEP_PIN | NRF_DRV_PWM_PIN_INVERTED, //
BEEP_PIN , //
NRF_DRV_PWM_PIN_NOT_USED, NRF_DRV_PWM_PIN_NOT_USED,
NRF_DRV_PWM_PIN_NOT_USED, NRF_DRV_PWM_PIN_NOT_USED,
NRF_DRV_PWM_PIN_NOT_USED, NRF_DRV_PWM_PIN_NOT_USED,

85
app/src/board/board_light_ctrl.c

@ -6,12 +6,76 @@
#define BLINK_CNT 1 #define BLINK_CNT 1
#define BLINK_PERIOD_MS (100) #define BLINK_PERIOD_MS (100)
#define LIGHT_PWM_DRIVER 1
// LED_GREEN_PIN
#if LIGHT_PWM_DRIVER
typedef struct {
nrf_drv_pwm_t driver;
nrf_pwm_values_individual_t seq_values;
nrf_pwm_sequence_t seq;
nrf_drv_pwm_config_t config;
} pwm_light_ctrl_t;
#endif
static pwm_light_ctrl_t light_ctrl = {
.driver = NRF_DRV_PWM_INSTANCE(LIGHT_PWM_INSTANCE),
.seq_values = {0},
.seq =
{
.values.p_individual = &light_ctrl.seq_values,
.length = NRF_PWM_VALUES_LENGTH(light_ctrl.seq_values),
.repeats = 0,
.end_delay = 0,
},
.config =
{
.output_pins =
{
LED_GREEN_PIN, //
NRF_DRV_PWM_PIN_NOT_USED,
NRF_DRV_PWM_PIN_NOT_USED,
NRF_DRV_PWM_PIN_NOT_USED,
},
.irq_priority = APP_IRQ_PRIORITY_LOWEST,
.base_clock = NRF_PWM_CLK_250kHz,
.count_mode = NRF_PWM_MODE_UP,
.top_value = 100, // 125kHz / 46 = 2.717k
.load_mode = NRF_PWM_LOAD_INDIVIDUAL,
.step_mode = NRF_PWM_STEP_AUTO,
},
};
static LightEffect m_light_effect; static LightEffect m_light_effect;
static bool m_led_green_light_state; static bool m_led_green_light_state;
static int m_blink_cnt; static int m_blink_cnt;
APP_TIMER_DEF(m_green_light_effect_tmr); APP_TIMER_DEF(m_green_light_effect_tmr);
static void BoardLight_effect_tmr_handler(void *p_context) { //
void BoardLight_setGreenLightState(bool state) {
#if LIGHT_PWM_DRIVER
if (state) {
light_ctrl.seq_values.channel_0 = 95; // top_value
nrfx_pwm_simple_playback(&light_ctrl.driver, &light_ctrl.seq, 1, NRF_DRV_PWM_FLAG_LOOP);
} else {
nrfx_pwm_stop(&light_ctrl.driver, true);
}
#else
if (state) {
nrf_gpio_pin_set(LED_GREEN_PIN);
m_led_green_light_state = true;
} else {
nrf_gpio_pin_clear(LED_GREEN_PIN);
m_led_green_light_state = false;
}
#endif
}
static void BoardLight_effect_tmr_handler(void* p_context) { //
if (m_light_effect == kLightEffect_close) { if (m_light_effect == kLightEffect_close) {
if (m_led_green_light_state) { if (m_led_green_light_state) {
BoardLight_setGreenLightState(false); BoardLight_setGreenLightState(false);
@ -38,22 +102,15 @@ static void BoardLight_effect_tmr_handler(void *p_context) { //
} }
void BoardLight_Init() { void BoardLight_Init() {
znrf_gpio_cfg_output(LED_GREEN_PIN, NRF_GPIO_PIN_NOPULL);
ZERROR_CHECK(app_timer_create(&m_green_light_effect_tmr, APP_TIMER_MODE_REPEATED, BoardLight_effect_tmr_handler)); ZERROR_CHECK(app_timer_create(&m_green_light_effect_tmr, APP_TIMER_MODE_REPEATED, BoardLight_effect_tmr_handler));
#if LIGHT_PWM_DRIVER
APP_ERROR_CHECK(nrfx_pwm_init(&light_ctrl.driver, &light_ctrl.config, NULL));
#else
znrf_gpio_cfg_output(LED_GREEN_PIN, NRF_GPIO_PIN_NOPULL);
#endif
} }
void BoardLight_load() {} void BoardLight_load() {}
void BoardLight_unload() {}
void BoardLight_setGreenLightState(bool state) {
if (state) {
nrf_gpio_pin_set(LED_GREEN_PIN);
m_led_green_light_state = true;
} else {
nrf_gpio_pin_clear(LED_GREEN_PIN);
m_led_green_light_state = false;
}
}
void BoardLight_unload() { BoardLight_setGreenLightEffect(kLightEffect_close); }
void BoardLight_toggleGreenLightState() { nrf_gpio_pin_toggle(LED_GREEN_PIN); } void BoardLight_toggleGreenLightState() { nrf_gpio_pin_toggle(LED_GREEN_PIN); }

59
app/src/device_ctrl_service.c

@ -167,15 +167,10 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) { //
// //
else if (m_device_state == kdevice_state_ready) { else if (m_device_state == kdevice_state_ready) {
/*******************************************************************************
* *
*******************************************************************************/
#if 0
if (!zble_module_is_connected() && DeviceCtrl_cur_state_haspassed_ms() > APP_AUTO_SLEEP_TIMEOUT_MS) { if (!zble_module_is_connected() && DeviceCtrl_cur_state_haspassed_ms() > APP_AUTO_SLEEP_TIMEOUT_MS) {
ZLOGI("auto sleep"); ZLOGI("auto sleep");
prvf_change_to_standby_state(); prvf_change_to_standby_state();
} }
#endif
if (event->eventType == kevent_start_sample_cmd_event) { if (event->eventType == kevent_start_sample_cmd_event) {
ZLOGI("start sample"); ZLOGI("start sample");
@ -296,57 +291,3 @@ void DeviceCtrl_change_to_state(device_state_t state) {
uint32_t DeviceCtrl_cur_state_haspassed_ms() { return znordic_haspassed_ms(m_change_to_cur_state_tp); } uint32_t DeviceCtrl_cur_state_haspassed_ms() { return znordic_haspassed_ms(m_change_to_cur_state_tp); }
device_state_t DeviceCtrl_now_state() { return m_device_state; } device_state_t DeviceCtrl_now_state() { return m_device_state; }
#if 0
static void DeviceCtrl_test() {
/**
* @brief
* 1.
* 2.
* 3. LED
* 4.
* . SD卡
* 5.
*/
#if 0
//
BoardBeepCtrl_init();
BoardBeepCtrl_load();
BoardBeepCtrl_setEffect(kBoardBeepEffect_continuousShortBeep);
#endif
#if 1
// BoardButton_Init(board_button_cb);
#endif
#if 0
BoardLight_Init();
BoardLight_load();
BoardLight_setGreenLightEffect(kLightEffect_slowFlash);
#endif
#if 0
Board_sdcardInit();
Board_sdcardConnectToInternal();
Board_sdcardConnectToExt();
Board_sdcardConnectToInternal();
Board_sdcardConnectToExt();
#endif
#if 0
sample_data_mgr_init();
sample_data_mgr_loadDriver();
sample_data_mgr_change_to_local_mode();
sample_data_filename_t filename;
int fd = sample_data_mgr_open(&filename, kwrflag_write_only);
sample_data_mgr_write(fd, "123456", 6);
sample_data_mgr_close(fd);
sample_data_mgr_change_to_ext_mode();
#endif
#if 1
//
#endif
}
#endif
Loading…
Cancel
Save