This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DRV2605L:软件寻址DRV2605波形

Guru**** 2377000 points
Other Parts Discussed in Thread: DRV2605, DRV2605L
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/570266/drv2605l-software-addressing-the-drv2605-waveforms

部件号:DRV2605L
主题中讨论的其他部件:DRV2605

Adafruit和SparkFun都为DRV2605提供软件支持,并选择要播放的波形,如下所示(Arduino目标主机):

void loop(){
 serial.print("effect #");serial.println (effect);

 //将效果设置为播放
 drv.setWaveform(0,effect); //播放effect
 drv.setWaveform(1,0);      //结束波形

 //播放效果!
 DRV.GO ();

 //请稍候
 延迟(500);

 效果++;
 如果(效应> 117)效应= 1;
}

我想在这里了解drv.setWaveform(1,0命令的动机和效果(说"结束波形")。

一些问题:

1.假设您写入以启动一个效应波形。  它是立即开始还是先验证尚未播放波形?  "结束波形"写入是否对上一次写入的状态有任何影响-上一次的波形是否保证完全播放?

2.如果您写入一个效应波形,然后再写第二个,而没有写入“结束波形”,会发生什么情况? 它们的顺序是否仍然正确,并且两者都有间隙?

3.您希望对多个效应波形进行排序的情形是什么?

我不是一个真正的软件用户,所以我在查找包含drv.setWaveform和drv.go定义的文件时遇到了一些困难。  你能向我指出这一点吗?  SparkFun或Adafruit示例都可以。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Barry,

    我找到了您在问题中提到的代码。 我只想指出,这是Adafruit的,不一定得到我的支持。
    1.当您设置波形时,您将从库中为波形序列发生器分配一个波形编号。 波形序列发生器分为8个序列,8.5 DRV2605L数据表的DRV2605L 8.2 .........5。 序列发生器将开始播放第一个序列并继续播放,直到到达没有波形的序列。 这就是为什么它们将'0'设置为第二个序列(第一个序列为0,第二个序列为1)。 仅当第二个序列中先前存在波形时才需要此选项,因为最后7个序列应初始化为'0'。
    2.如果您在前两个序列中写入效果,它们将按顺序播放,直到序列中出现'0'。
    3.这是一种意见question...it真正由最终用户决定何时或为何要播放多种效果。 也许他们想要单击+向上爬坡+向下爬坡。

    如果您在GitHub上,则定义位于.cpp文件“Adafruit_DRV2605.cpp”中,并且头文件定义了数据表中定义的寄存器。 所有通信都通过I2C进行。