百味勺子——味觉模式实现篇
Posted 三明治开发社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百味勺子——味觉模式实现篇相关的知识,希望对你有一定的参考价值。
1、概述
对于不同的人原始味觉,它们需要什么样“参数”来“欺骗”大脑呢?大致如下:
味道 | 电流&温度参数 |
---|---|
咸 | 20-50uA的低频率电流 |
酸 | 60-180uA的电流、舌头温度从20℃上升到30℃ |
甜 | 反向电流、舌头温度先升到35℃,再缓慢降低至20℃ |
苦 | 60-140uA的反向电流 |
辣 | 温度从33℃加热至38℃ |
薄荷味 | 温度从22℃下降至19℃ |
2、味觉模式
上面已经提到了味觉的产生是通过不同电流和温度的刺激来产生一些味觉的,那么具体在代码中的实现原理如下:APP端下发味觉的相应命令,通过控制模组的几个引脚,外加加热电路,控制输出微电流刺激舌头产生这几种味觉。微电流的产生是通过X9C104电位器调节阻值大小实现的。
用户自定义功能是开放电流、频率、温度三个参数让用户调节去探索一些神奇的味道~
void app_dp_handle(uint8_t *dp_data)
{
TUYA_APP_LOG_INFO("dp_data:%d %d %d %d", dp_data[0], dp_data[1], dp_data[2], dp_data[3]);
switch (dp_data[0]) {
// 味觉 酸、甜、苦、咸
case 0x66:
switch (dp_data[3]) {
case sour:
spoon_state.temp = sour_temp;
blt_soft_timer_delete(&sweet_temp_contorl);
blt_soft_timer_delete(&bitter_temp_contorl);
gpio_write(TONGUE_PIN, 1);
x9c104s_set(_140uA);
break;
case sweet:
spoon_state.temp = heat_off;
blt_soft_timer_delete(&bitter_temp_contorl);
gpio_write(TONGUE_PIN, 1);
x9c104s_set(_80uA);
blt_soft_timer_add(&sweet_temp_contorl, 200*TIME_MS);
break;
case bitter:
spoon_state.temp = heat_off;
blt_soft_timer_delete(&sweet_temp_contorl);
gpio_write(TONGUE_PIN, 1);
x9c104s_set(_100uA);
blt_soft_timer_add(&bitter_temp_contorl, 200*TIME_MS);
break;
case salty:
spoon_state.temp = heat_off;
blt_soft_timer_delete(&sweet_temp_contorl);
blt_soft_timer_delete(&bitter_temp_contorl);
x9c104s_set(_60uA);
blt_soft_timer_add(&set_tongue_Hz, _hz100);
break;
case user_defined:
blt_soft_timer_delete(&sweet_temp_contorl);
blt_soft_timer_delete(&bitter_temp_contorl);
x9c104s_set(_60uA);
blt_soft_timer_add(&set_tongue_Hz, _hz100);
break;
default:
break;
}
break;
// 电流调节 自定义模式下使用
case 0x67:
switch (dp_data[3]) {
case uA_20:
x9c104s_set(_20uA);
break;
case uA_40:
x9c104s_set(_40uA);
break;
case uA_60:
x9c104s_set(_60uA);
break;
case uA_80:
x9c104s_set(_80uA);
break;
case uA_100:
x9c104s_set(_100uA);
break;
case uA_120:
x9c104s_set(_120uA);
break;
case uA_140:
x9c104s_set(_140uA);
break;
case uA_180:
x9c104s_set(_180uA);
break;
case uA_200:
x9c104s_set(_200uA);
break;
default:
break;
}
break;
// 频率调节 自定义模式下使用
case 0x68:
switch (dp_data[3]) {
case hz_50:
blt_soft_timer_add(&set_tongue_Hz, _hz50);
break;
case hz_100:
blt_soft_timer_add(&set_tongue_Hz, _hz100);
break;
case hz_200:
blt_soft_timer_add(&set_tongue_Hz, _hz200);
break;
case hz_400:
blt_soft_timer_add(&set_tongue_Hz, _hz400);
break;
case hz_600:
blt_soft_timer_add(&set_tongue_Hz, _hz600);
break;
case hz_800:
blt_soft_timer_add(&set_tongue_Hz, _hz800);
break;
case hz_1000:
blt_soft_timer_add(&set_tongue_Hz, _hz1000);
break;
case hz_0:
blt_soft_timer_delete(&set_tongue_Hz);
gpio_write(TONGUE_PIN, 1);
break;
default:
break;
}
break;
// 温度调节 自定义模式下使用
case 0x69:
switch (dp_data[3]) {
case T_30:
break;
case T_31:
spoon_state.temp = temp_31;
break;
case T_32:
spoon_state.temp = temp_32;
break;
case T_33:
spoon_state.temp = temp_33;
break;
case T_34:
spoon_state.temp = temp_34;
break;
case T_35:
spoon_state.temp = temp_35;
break;
case T_36:
spoon_state.temp = temp_36;
break;
case T_37:
spoon_state.temp = temp_37;
break;
case T_38:
spoon_state.temp = temp_38;
break;
case T_39:
spoon_state.temp = temp_39;
break;
case T_40:
spoon_state.temp = temp_40;
break;
default:
break;
}
break;
default:
break;
}
}
上一篇:
百味勺子——复位配网和电量报警实现篇
以上是关于百味勺子——味觉模式实现篇的主要内容,如果未能解决你的问题,请参考以下文章