Esp8266 도킹 고양이 엘프 제어 RGB 색등
1. 코드 획득 컴파일
2. 설비 배망과 귀속
3. 코드 실현
static int user_property_set_event_handler(const int devid, const char *request, const int request_len)
{
int res = 0, value = 0;
cJSON *root = NULL, *LightSwitch = NULL, *LightColor = NULL;
ESP_LOGE(TAG, "Property Set Received, Devid: %d, Request: %s", devid, request);
if (!request)
{
return NULL_VALUE_ERROR;
}
/* json */
root = cJSON_Parse(request);
if (!root)
{
ESP_LOGI(TAG, "JSON Parse Error");
return FAIL_RETURN;
}
LightSwitch = cJSON_GetObjectItem(root, "powerstate");
//
if (LightSwitch)
{
ESP_LOGE(TAG, "Property LightSwitch->valueint: %d", LightSwitch->valueint);
if (LightSwitch->valueint == 1)
{
rgb_set_pwm(0, 100, 0);
}
else
{
rgb_set_pwm(0, 0, 0);
}
}
LightColor = cJSON_GetObjectItem(root, "color");
if (LightColor)
{
ESP_LOGE(TAG, "Property LightColor->valueint: %d", LightColor->valueint);
value = LightColor->valueint;
switch (value)
{
case 16711680: //
rgb_set_pwm(100, 0, 0);
break;
case 255: // :
rgb_set_pwm(0, 0, 100);
break;
case 65280: //
rgb_set_pwm(0, 100, 0);
break;
case 65535: //
rgb_set_pwm(0, 100, 100);
break;
case 8388736: //
rgb_set_pwm(50, 0, 50);
break;
case 16753920: //
rgb_set_pwm(100, 50, 0);
break;
case 16776960: //
rgb_set_pwm(100, 100, 99);
break;
default:
break;
}
}
cJSON_Delete(root);
res = IOT_Linkkit_Report(devid, ITM_MSG_POST_PROPERTY, (unsigned char *)request, request_len);
return SUCCESS_RETURN;
}
static bool linkkit_connected = false;
//
static void ButtonShortPressCallBack(void *arg)
{
char property_payload[50] = {0};
if (strcmp((char *)arg, "Button0") == 0)
{
ESP_LOGI(TAG, "button0");
ws2812_setColor(254, 0, 0);
if (linkkit_connected)
{
HAL_Snprintf(property_payload, sizeof(property_payload), "{\"color\":16711680,\"powerstate\":1}");
}
}
else if (strcmp((char *)arg, "Button1") == 0)
{
ESP_LOGI(TAG, "button1");
ws2812_setColor(0, 254, 0);
if (linkkit_connected)
{
HAL_Snprintf(property_payload, sizeof(property_payload), "{\"color\":65280,\"powerstate\":1}");
}
}
else if (strcmp((char *)arg, "Button2") == 0)
{
ESP_LOGI(TAG, "button2");
ws2812_setColor(0, 0, 254);
if (linkkit_connected)
{
HAL_Snprintf(property_payload, sizeof(property_payload), "{\"color\":255,\"powerstate\":1}");
}
}
IOT_Linkkit_Report(0, ITM_MSG_POST_PROPERTY, (unsigned char *)property_payload, strlen(property_payload));
//ESP_LOGI(TAG, "ButtonShortPressCallBack type %s %d esp_get_free_heap_size(): %d ", type, strlen(type), esp_get_free_heap_size());
}
/**
* @description:
* @param {type}
* @return:
*/
void TaskButton()
{
// gpio
button_handle_t btn_handle = button_dev_init(0, 0, BUTTON_ACTIVE_LOW);
button_dev_add_tap_cb(BUTTON_PUSH_CB, ButtonShortPressCallBack, "Button0", 50 / portTICK_PERIOD_MS, btn_handle);
// gpio
btn_handle = button_dev_init(4, 0, BUTTON_ACTIVE_LOW);
button_dev_add_tap_cb(BUTTON_PUSH_CB, ButtonShortPressCallBack, "Button1", 50 / portTICK_PERIOD_MS, btn_handle); // gpio
btn_handle = button_dev_init(5, 0, BUTTON_ACTIVE_LOW);
button_dev_add_tap_cb(BUTTON_PUSH_CB, ButtonShortPressCallBack, "Button2", 50 / portTICK_PERIOD_MS, btn_handle);
vTaskDelete(NULL);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.