百味勺子——味觉模式实现篇

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;
	}
}

上一篇:
百味勺子——复位配网和电量报警实现篇

以上是关于百味勺子——味觉模式实现篇的主要内容,如果未能解决你的问题,请参考以下文章

百味勺子——复位配网和电量报警实现篇

百味勺子——环境搭建篇

智能“百味”勺子开发实战营,为你的生活添滋味!

智能“百味”勺子开发实战营,小白 VS 大神不是不可能!

勺子和浓缩咖啡测试

人生百味-10:道与术