feat: 语音模块氛围灯控制及亮度调整动画。
This commit is contained in:
parent
13a00fbe1b
commit
ded155d9b5
@ -67,23 +67,31 @@ static void rx_task(void *arg) {
|
||||
ESP_LOGI(RX_TASK_TAG, "Read %d bytes: '%s'", rxBytes, data);
|
||||
ESP_LOG_BUFFER_HEXDUMP(RX_TASK_TAG, data, rxBytes, ESP_LOG_INFO);
|
||||
|
||||
if (data[0] == 0x11 && rxBytes >= 2) {
|
||||
if (data[1] <= 6) {
|
||||
light_mode = data[1];
|
||||
if (data[0] == 0x98 && data[1] == 0x77 && data[rxBytes - 1] == 0x98 &&
|
||||
data[rxBytes - 2] == 0x77) {
|
||||
if (data[2] == 0x10) { // 氛围灯模式
|
||||
if (data[3] == 0x02) { // 开灯、正常模式
|
||||
tx_buff[0] = 0x05;
|
||||
led_strip_set_brightness(150);
|
||||
ci_03t_send_data(tx_buff, 1);
|
||||
continue;
|
||||
}
|
||||
if (data[3] == 0x01) { // 开灯、正常模式
|
||||
tx_buff[0] = 0x06;
|
||||
led_strip_set_brightness(20);
|
||||
ci_03t_send_data(tx_buff, 1);
|
||||
continue;
|
||||
}
|
||||
if (data[3] == 0x00) { // 关灯
|
||||
led_strip_set_brightness(0);
|
||||
tx_buff[0] = 0x04;
|
||||
ci_03t_send_data(tx_buff, 1);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
tx_buff[0] = data[0];
|
||||
tx_buff[1] = light_mode;
|
||||
uart_write_bytes(CI_03T_UART_NUM, tx_buff, 2);
|
||||
} else if (data[0] == 0x12 && rxBytes >= 2) {
|
||||
tx_buff[0] = 0x12;
|
||||
tx_buff[1] = data[1];
|
||||
led_strip_set_brightness(data[1]);
|
||||
uart_write_bytes(CI_03T_UART_NUM, tx_buff, 2);
|
||||
} else if (data[0] == 0x13 && rxBytes >= 2) {
|
||||
tx_buff[0] = 0x12;
|
||||
tx_buff[1] = display_ambient_lighting_level + (int8_t)data[1];
|
||||
led_strip_set_brightness(tx_buff[1]);
|
||||
uart_write_bytes(CI_03T_UART_NUM, tx_buff, 2);
|
||||
ESP_LOGW(RX_TASK_TAG, "Unknow command");
|
||||
} else {
|
||||
ESP_LOGW(RX_TASK_TAG, "Invalid data");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -107,7 +115,4 @@ void ci_03t_init() {
|
||||
|
||||
xTaskCreate(rx_task, "uart_rx_task", 1024 * 2, NULL, configMAX_PRIORITIES,
|
||||
NULL);
|
||||
// xTaskCreate(tx_task, "uart_tx_task", 1024 * 2, NULL, configMAX_PRIORITIES -
|
||||
// 1,
|
||||
// NULL);
|
||||
}
|
18
main/light.c
18
main/light.c
@ -36,9 +36,25 @@ light_mode_t light_mode;
|
||||
float display_ambient_light_brightness = 1;
|
||||
uint8_t display_ambient_lighting_level = 255;
|
||||
|
||||
void led_strip_fade_in_light_level(void *pvParameter) {
|
||||
float target = (float)display_ambient_lighting_level / 255.0;
|
||||
float step_length = (target - display_ambient_light_brightness) / 40.0;
|
||||
for (int t = 0; t < 40; t++) {
|
||||
display_ambient_light_brightness += step_length;
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
}
|
||||
display_ambient_light_brightness = target;
|
||||
vTaskDelete(NULL);
|
||||
}
|
||||
|
||||
void led_strip_set_brightness(uint8_t level) {
|
||||
if (display_ambient_lighting_level == level) {
|
||||
return;
|
||||
}
|
||||
display_ambient_lighting_level = level;
|
||||
display_ambient_light_brightness = (float)level / 255.0;
|
||||
|
||||
xTaskCreate(led_strip_fade_in_light_level, "LED_STRIP_FADE_IN_LIGHT_LEVEL",
|
||||
4096, NULL, 1, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -44,7 +44,7 @@ void init_i2c() {
|
||||
static const char *TAG = "DisplayAmbientLight";
|
||||
|
||||
void app_main(void) {
|
||||
// light_init_strip();
|
||||
light_init_strip();
|
||||
init_i2c();
|
||||
init_display();
|
||||
display_print8_str(0, 0, "Ambient Light");
|
||||
@ -70,6 +70,5 @@ void app_main(void) {
|
||||
}
|
||||
while (waiting_and_get_colors()) {
|
||||
light_play_colors(NUMBER_OF_LEDS * 3, mqtt_colors_buffer);
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
}
|
||||
}
|
||||
|
@ -22,14 +22,12 @@
|
||||
|
||||
#define TEMPERATURE_TAG "temperature"
|
||||
void fetch_temperature(void* arg) {
|
||||
ESP_LOGI(TEMPERATURE_TAG, "fetch_temperature");
|
||||
esp_err_t error;
|
||||
float temperature = DEFAULT_TEMPERATURE;
|
||||
char temperature_str[10];
|
||||
uint8_t temperature_buffer[] = {0, 0};
|
||||
display_fill_rect(0, 0, 128, 2, 0x00);
|
||||
for (;;) {
|
||||
ESP_LOGI(TEMPERATURE_TAG, "fetching temperature");
|
||||
i2c_cmd_handle_t cmd = i2c_cmd_link_create();
|
||||
i2c_master_start(cmd);
|
||||
i2c_master_write_byte(cmd, GX21M15_ADDRESS | I2C_MASTER_WRITE,
|
||||
|
Loading…
Reference in New Issue
Block a user