SkinTemperatureSensor

简介

你是否想过iPhone 8的Home按键,MacBook的触控板在按下的时候是如何触发反馈的?如果你在iPhone, Mac没电的时候再按下它们,你会发现Home按键/触控板是无法被真正按下的。在按下时候得到的触觉反馈都得益于LRA(线性谐振执行器)型电机,这类电机通过电磁线圈驱动质量块直线运动,精准控制振动方向和强度。非常适合用于实现触觉反馈的效果。
DFRobot最新推出的Gravity: 振动电机驱动器采用了TM6605芯片,这类芯片专为LRA型电机(线性马达)设计,通过I2C通讯,可以快速设置内置的44种振动模式。无论是智能家居的触控反馈、教育机器人的互动设计,还是游戏手柄的沉浸式震动体验,Gravity 振动电机驱动均可通过简洁的代码实现细腻的触觉控制。
注:此驱动专为LRA型电机设计,并不能适用于ERM(偏心旋转质量)型电机。

产品特性

  • 内置44中不同的振动模式
  • 自动谐振追踪,可自动检测并且追踪最佳的换向频率
  • Gravity I2C接口,附赠LRA电机。2分钟快速部署,告别复杂电路调试

规格参数

  • 供电电压:2.7V-5.2V
  • 工作温度:-40~85℃
  • 支持的LRA频率:140~220Hz
  • 工作电流:9.5μA(休眠时),电机振动时的电流由电机决定
  • 尺寸:30 * 20mm
  • 安装孔尺寸:φ3.0mm

引脚说明

引脚 功能描述
VCC DC 3.3V-5.5V输入
GND 接地
C I2C时钟线
D I2C数据线

使用教程

软硬件准备

硬件准备

软件准备

接线图

示例代码

  • 烧录以下示例代码后,振动电机会每两秒切换振动效果。
  • 串口监视器中可以看到当前振动模式
/*!
 * @file demo.ino
 * @brief This demo showcases all the vibration effects of the TM6605.
 * @copyright	Copyright (c) 2025 DFRobot Co.Ltd (http://www.dfrobot.com)
 * @license The MIT License (MIT)
 * @author [fary](feng.yang@dfrobot.com)
 * @version V1.0
 * @date 2025-04-08
 * @url https://github.com/DFRobot/DFRobot_TM6605
 */
#include "DFRobot_TM6605.h"
DFRobot_TM6605 TM6605;
DFRobot_TM6605::eEffect_t effects[] = {
   DFRobot_TM6605::eSharpClick,  DFRobot_TM6605::eInstantClick,  DFRobot_TM6605::eLightTap,  DFRobot_TM6605::eDoubleClick,
   DFRobot_TM6605::eLightPulse,  DFRobot_TM6605::eStrongAlert,  DFRobot_TM6605::eMediumDurationAlert,  DFRobot_TM6605::eSharpClick2,
   DFRobot_TM6605::eMediumClick,  DFRobot_TM6605::eFlashStrike,  DFRobot_TM6605::eDoubleHighClickShort,  DFRobot_TM6605::eDoubleMediumClickShort,
   DFRobot_TM6605::eDoubleFlashStrikeShort, DFRobot_TM6605::eDoubleInstantClickLong,  DFRobot_TM6605::eDoubleMediumInstantClickLong,
   DFRobot_TM6605::eDoubleFlashStrikeLong,  DFRobot_TM6605::eAlert,  DFRobot_TM6605::eToggleClick,  DFRobot_TM6605::eLongSlowFadeTransition1,
   DFRobot_TM6605::eLongSlowFadeTransition2,  DFRobot_TM6605::eMediumSlowFadeTransition1,  DFRobot_TM6605::eMediumSlowFadeTransition2,
   DFRobot_TM6605::eShortSlowFadeTransition1, DFRobot_TM6605::eShortSlowFadeTransition2,  DFRobot_TM6605::eLongFastFadeTransition1,
   DFRobot_TM6605::eLongFastFadeTransition2,  DFRobot_TM6605::eMediumFastFadeTransition1,  DFRobot_TM6605::eMediumFastFadeTransition2,
   DFRobot_TM6605::eShortFastFadeTransition1, DFRobot_TM6605::eShortFastFadeTransition2,  DFRobot_TM6605::eLongSlowBoostTransition1,
   DFRobot_TM6605::eLongSlowBoostTransition2, DFRobot_TM6605::eMediumSlowBoostTransition1, DFRobot_TM6605::eMediumSlowBoostTransition2,
   DFRobot_TM6605::eShortSlowBoostTransition1,DFRobot_TM6605::eShortSlowBoostTransition2,  DFRobot_TM6605::eLongFastBoostTransition1,
   DFRobot_TM6605::eLongFastBoostTransition2, DFRobot_TM6605::eMediumFastBoostTransition1, DFRobot_TM6605::eMediumFastBoostTransition2,
   DFRobot_TM6605::eShortFastBoostTransition1,DFRobot_TM6605::eShortFastBoostTransition2,  DFRobot_TM6605::eLongAlert, DFRobot_TM6605::eSoftNoise,
   DFRobot_TM6605::eSleepCommand
};
void setup() {
	Serial.begin(115200);
	while(!Serial);
	Serial.print("TM6605 init...");
	while(TM6605.begin()!=0){
		Serial.print("failed,Not found TM6605!");
	}
	Serial.println("successed");
	TM6605.play();
}
  
void loop() {
  // Traverse all effects
  for (auto effect  : effects) {
    Serial.print("Playing: ");
    Serial.print(getEffectName(effect));
    Serial.print(" (ID:");
    Serial.print(effect);
    Serial.println(")");
    if(effect==TM6605.eSleepCommand)
			continue;
    TM6605.selectEffect(effect);
    TM6605.play();
    delay(2000); // Each effect is displayed for 2 seconds.
    if(effect==TM6605.eLongAlert)
			delay(8000);
    TM6605.stop(); // Stop the current effect.
    delay(500);   // The effect interval is 500ms.
  }
}

const char* getEffectName(uint8_t effect) {
	switch(effect) {
	  case TM6605.eSharpClick:                return "Sharp Click";
	  case TM6605.eInstantClick:              return "Instant Click";
	  case TM6605.eLightTap:                  return "Light Tap";
	  case TM6605.eDoubleClick:               return "Double Click";
	  case TM6605.eLightPulse:                return "Light Pulse";
	  case TM6605.eStrongAlert:               return "Strong Alert";
	  case TM6605.eMediumDurationAlert:       return "Medium Alert";
	  case TM6605.eSharpClick2:               return "Sharp Click2";
	  case TM6605.eMediumClick:               return "Medium Click";
	  case TM6605.eFlashStrike:               return "Flash Strike";
	  case TM6605.eDoubleHighClickShort:      return "Double High Click (Short)";
	  case TM6605.eDoubleMediumClickShort:    return "Double Medium Click (Short)";
	  case TM6605.eDoubleFlashStrikeShort:    return "Double Flash Strike (Short)";
	  case TM6605.eDoubleInstantClickLong:    return "Double Instant Click (Long)";
	  case TM6605.eDoubleMediumInstantClickLong: return "Double Medium Instant Click (Long)";
	  case TM6605.eDoubleFlashStrikeLong:     return "Double Flash Strike (Long)";
	  case TM6605.eAlert:                     return "Alert";
	  case TM6605.eToggleClick:               return "Toggle Click";
	  case TM6605.eLongSlowFadeTransition1:   return "Long Slow Fade 1";
	  case TM6605.eLongSlowFadeTransition2:   return "Long Slow Fade 2";
	  case TM6605.eMediumSlowFadeTransition1: return "Medium Slow Fade 1";
	  case TM6605.eMediumSlowFadeTransition2: return "Medium Slow Fade 2";
	  case TM6605.eShortSlowFadeTransition1:  return "Short Slow Fade 1";
	  case TM6605.eShortSlowFadeTransition2:  return "Short Slow Fade 2";
	  case TM6605.eLongFastFadeTransition1:   return "Long Fast Fade 1";
	  case TM6605.eLongFastFadeTransition2:   return "Long Fast Fade 2";
	  case TM6605.eMediumFastFadeTransition1: return "Medium Fast Fade 1";
	  case TM6605.eMediumFastFadeTransition2: return "Medium Fast Fade 2";
	  case TM6605.eShortFastFadeTransition1:  return "Short Fast Fade 1";
	  case TM6605.eShortFastFadeTransition2:  return "Short Fast Fade 2";
	  case TM6605.eLongSlowBoostTransition1:  return "Long Slow Boost 1";
	  case TM6605.eLongSlowBoostTransition2:  return "Long Slow Boost 2";
	  case TM6605.eMediumSlowBoostTransition1: return "Medium Slow Boost 1";
	  case TM6605.eMediumSlowBoostTransition2: return "Medium Slow Boost 2";
	  case TM6605.eShortSlowBoostTransition1: return "Short Slow Boost 1";
	  case TM6605.eShortSlowBoostTransition2: return "Short Slow Boost 2";
	  case TM6605.eLongFastBoostTransition1:  return "Long Fast Boost 1";
	  case TM6605.eLongFastBoostTransition2:  return "Long Fast Boost 2";
	  case TM6605.eMediumFastBoostTransition1: return "Medium Fast Boost 1";
	  case TM6605.eMediumFastBoostTransition2: return "Medium Fast Boost 2";
	  case TM6605.eShortFstBoostTransition1: return "Short Fast Boost 1";
	  case TM6605.eShortFastBoostTransition2: return "Short Fast Boost 2";
	  case TM6605.eLongAlert:                 return "Long Alert";
	  case TM6605.eSoftNoise:                 return "Soft Noise";
	  case TM6605.eSleepCommand:              return "Sleep Command";
	  default:                         return "Unknown Effect";
	}
}

振动效果参数

参数 效果 耗时(ms) 参数 效果 耗时(ms)
eSharpClick 猛力触击 65 eInstantClick 瞬击 45
eDoubleClick 两次触击 200 eLightPulse 轻脉冲 215
eMediumDurationAlert 中时长警报 730 eSharpClick2 猛力触击2 90
eFlashStrike 闪击 20 eDoubleHighClickShort 短间隔两次高强度点击 120
eDoubleFlashStrikeShort 短间隔两次闪击 100 eDoubleInstantClickLong 长间隔两次瞬击 150
eDoubleFlashStrikeLong 长间隔两次闪击 100 eAlert 警报 240
eLongSlowFadeTransition1 长间隔缓慢减弱过渡1 390 eLongSlowFadeTransition2 长间隔缓慢减弱过渡 620
eMediumSlowFadeTransition2 中间隔缓慢减弱过渡2 650 eShortSlowFadeTransition1 短间隔缓慢减弱过渡1 410
eLongFastFadeTransition1 长间隔迅速减弱过渡1 340 eLongFastFadeTransition2 长间隔迅速减弱过渡2 390
eMediumFastFadeTransition2 中间隔迅速减弱过渡2 360 eShortFastFadeTransition1 短间隔迅速减弱过渡1 340
eLongSlowBoostTransition1 长间隔缓慢增强过渡1 320 eLongSlowBoostTransition2 长间隔缓慢增强过渡2 650
eMediumSlowBoostTransition2 中间隔缓慢增强过渡2 640 eShortSlowBoostTransition1 短间隔缓慢增强过渡1 320
eLongFastBoostTransition1 长间隔迅速增强过渡1 290 eLongFastBoostTransition2 长间隔迅速增强过渡2 615
eMediumFastBoostTransition2 中间隔迅速增强过渡2 590 eShortFastBoostTransition1 短间隔迅速增强过渡1 330
eLongAlert 长时间警报 10000 eSoftNoise 柔和噪声 480
参数 效果 耗时(ms)
eLightTap 轻撞击 130
eStrongAlert 剧烈警报 190
eMediumClick 中强度触击 65
eDoubleMediumClickShort 短间隔两次中强度点击 120
eDoubleMediumInstantClickLong 长间隔两次中强度瞬击 150
eToggleClick 切换触击 620
eMediumSlowFadeTransition1 中间隔缓慢减弱过渡1 400
eShortSlowFadeTransition2 短间隔缓慢减弱过渡2 490
eMediumFastFadeTransition1 中间隔迅速减弱过渡1 310
eShortFastFadeTransition2 短间隔迅速减弱过渡2 350
eMediumSlowBoostTransition1 中间隔缓慢增强过渡1 310
eShortSlowBoostTransition2 短间隔缓慢增强过渡2 460
eMediumFastBoostTransition1 中间隔迅速增强过渡1 320
eShortFastBoostTransition2 短间隔迅速增强过渡2 470
eSleepCommand 休眠指令

常见问题

更多资料

WIKI文档修改历史

文档版本号 修改时间 修改人 修改内容
V1.0 2025.4.27 叶紫彬 第一版发布

产品修改历史

产品版本号 修改时间 修改人 产品修改内容
V1.0 2025.4.27 叶紫彬 第一版发布

DFshopping_car1.png DFRobot商城链接