所以,有趣的故事,当我们第一次开始测试这段代码非常完美。但是,突然,传感器只工作到50厘米而4m没有明显的原因。所以,由于时间的限制,我们的代码的一个单独的版本(就是说0到50)这样我们可以证明我们的设备工作,我们只是在我们的传感器存在的问题。所以,这就是为什么我们有两个版本的代码,一个作品长达4米,高达50厘米的作品。
有一个图书馆,你需要下载,包括在您的代码中包含的所有命令的触觉控制器。你可以找到这个在Adafruit网站您购买设备的地方。所有您需要做的是下载并解压缩到库文件夹在你的Arduino的文件夹在您的计算机上。所以,现在我会尝试打破代码你可以更好的理解它。
#包括这些都是你需要在代码中包括必要的库文件
#包括“adafruit_drv2605。”
<strong>adafruit_drv2605 DRV</strong>;此线只是初始化驱动程序对象基本
<strong>int最大= 400</strong>;-设置最大距离4米
<strong>国际minimumrange = 0</strong>;集的最小距离0米
<strong>长时间、距离</strong>;使变量的时间和距离的脉冲传感器
国际distancegroup,measurecount;
<strong>const int trig_pin = 4</strong>;机组制动销传感器4槽上的Arduino(可以修改)
<strong>const int echo_pin = 5</strong>;集回声引脚的传感器5槽上的Arduino(可以修改)
setup() { void
<strong>pinmode(trig_pin,输出)</strong>;集销的必要设置
digitalwrite(trig_pin,低);
(9600)开始连载;
<strong>DRV。begin()</strong>;-启动驱动器,告诉它使用图书馆的一号
DRV。selectlibrary(1);}
uint8_t效果= 1;
<strong>无效loop() {</strong> -循环包含了一些其他的空隙,将下面
measuredistance();
printdistance();
getdistancegroup();
playeffect();
go() DRV;
延迟(60);}
<strong>无效measuredistance()</strong> {这段基本计算距离传感器读(或厘米)
无符号长T1;
无符号长T2;
无符号长pulse_width;
浮厘米;
浮动英寸;
digitalwrite(trig_pin,高);
(10)delaymicroseconds;
digitalwrite(trig_pin,低);
而(//读出数字接口的值(echo_pin)= = 0);
T1 = micros();
而(//读出数字接口的值(echo_pin)= = 1);
T2 = micros();
pulse_width = T2 - T1;
CM = pulse_width / 58;
英寸= pulse_width / 148;
<strong>距离=厘米</strong>;-您可以设置设备用英寸或厘米来测量
}
<strong>无效printdistance() {</strong>这部分创建组不同的距离,可以修改为你所需要的
如果(距离> =最大| |距离<= minimumrange){
串行out.println(“错误:超出范围”);}
别的{
串行。println(距离);} }
getdistancegroup() { void
如果(0 <=距离和距离<= 30){
distancegroup = 1;}
如果(31 <=距离和距离<= 70){
distancegroup = 2;}
如果(71 <=距离和距离<= 100){
distancegroup = 3;}
如果(101 <=距离和距离<= 200){
distancegroup = 4;}
如果(201 <=距离和距离<= 300){
distancegroup = 5;}
如果(301 <=距离){
distancegroup = 6;
} }
<strong>无效playeffect() {</strong>这段使用上述群体发挥着不同的振动影响基于组
<strong>开关(distancegroup){</strong> -这部分只是一个大的switch语句
案例1:如果(measurecount<1){
measurecount + +;
break;}
<strong>DRV。setwaveform(0,16);//发挥效应</strong>的二号在这里你把号码对你的影响
DRV。setwaveform(1,0);//端波形
串行。println(在“30厘米”);
measurecount = 0;
打破;
案例2:如果(measurecount<2){
measurecount + +;
break;}
DRV。setwaveform(0,15);//发挥作用
DRV。setwaveform(1,0);//端波形
串行。println(在“70厘米”);
measurecount = 0;
打破;
案例3:如果(measurecount<4){
measurecount + +;
break;}
DRV。setwaveform(0,7);//发挥作用
DRV。setwaveform(1,0);//端波形
串行。println(在“100厘米”);
measurecount = 0;
打破;
案例4:
如果(measurecount<4){
measurecount + +;
break;}
DRV。setwaveform(0,9);//发挥作用
DRV。setwaveform(1,0);//端波形
串行。println(在“200厘米”);
measurecount = 0;
打破;
案例5:
如果(measurecount<9){
measurecount + +;
break;}
DRV。setwaveform(0,67);//发挥作用
DRV。setwaveform(1,0);//端波形
串行。println(在“300厘米”);
measurecount = 0;
打破;
案例6:
如果(measurecount<9){
measurecount + +;
break;}
DRV。setwaveform(0,68);//发挥作用
DRV。setwaveform(1,0);//端波形
串行out.println(“300厘米”);
measurecount = 0;突破;
} }
有一个图表,可以用于单片机,每个振动的影响数页面上的Adafruit网站发现,所以你可以通过测试来找到你想要的效果。我们有这样的振动变得更加激烈,更加惊人的东西要接近传感器。
一定要运行大量的测试以确保你有你想要的工作。