极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19472|回复: 13

学了就要用,来一个驱“四害”的

[复制链接]
发表于 2016-1-9 21:15:16 | 显示全部楼层 |阅读模式
本帖最后由 lqh 于 2016-1-9 21:20 编辑

       现在虽说是数九寒冬,但酷热的夏天终归要来的!随之而来的,当然还有蚊子、蟑螂等等,有什么办法把它们拒之门外呢?对了,次声波(低于30HZ的正弦波,一般5—20HZ),大功率的次声波能杀人于无形,下一步将广泛用于战场,小功率的次声波赶赶蚊子蟑螂,那是不在话下。如何产生次声波,既然学了Arduino,今天就用它产生一个10HZ的正弦,程序及接线说明如下:

float deg=0;//这是角度
float rad=deg*PI/180;//这是角度对应的弧长

void setup() {
  Serial.begin(9600);
}

void loop() {
for(deg=0;deg<360;deg=deg+0.1){//角度的步长为0.1,一个周期就要输出3600个数据,够精确了
    float i=(255*sin(deg*PI/180)+255)/2;//将角度转变为弧长,并使其值的范围在0-255之间
    analogWrite(10,i);//模拟引脚10直接接2.5mw的扬声器,或加一数字滤波并用一小功率三极管(如9018)驱动则更好
    //Serial.println(i);//打开用于调试
    delayMicroseconds(27.77);//正弦的周期为0.02777*3600=100ms,即10HZ的次声波
  }
}

看贴不回贴不文明!
回复

使用道具 举报

发表于 2016-1-10 14:48:49 | 显示全部楼层
有示波器显示的结果不?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-10 17:47:47 | 显示全部楼层
不好意思,没有示波器显示结果,不过你可以用Processing来显示!
回复 支持 反对

使用道具 举报

发表于 2016-1-11 10:54:03 | 显示全部楼层
很可惜,事與願違,因未有考慮運行所需的時間!
//    delayMicroseconds(27.77);//正弦的周期为0.02777*3600=100ms,即10HZ的次声波

輸出應約為 1.4Hz
回复 支持 反对

使用道具 举报

发表于 2016-1-11 21:23:12 | 显示全部楼层
eddiewwm 发表于 2016-1-11 10:54
很可惜,事與願違,因未有考慮運行所需的時間!
//    delayMicroseconds(27.77);//正弦的周期为0.02777*3 ...

haha ,打脸了不是?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-12 08:54:13 | 显示全部楼层
eddiewwm说的很对,之前确实没有考虑运行时间,谢谢提醒!在交流中学习,在碰撞中提高,这应该是大家参与论坛的初衷,希望大家多提意见,提出象eddiewwm一样的好意见,谢谢!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-13 08:52:47 | 显示全部楼层
eddiewwm 发表于 2016-1-11 10:54
很可惜,事與願違,因未有考慮運行所需的時間!
//    delayMicroseconds(27.77);//正弦的周期为0.02777*3 ...

    以前的每次输出都要进行浮点运算,既浪费资源,又不好掌握运行时间,现改成数组输出吧!

float deg=0;
int num[360];//用于存贮正弦值
int a=0;
void setup() {
  Serial.begin(9600);
  int i=0;
   for(deg=0;deg<360;deg=deg+1){//角度的步长为1
    num=(255*sin(deg*PI/180)+255)/2;//将角度转变为弧长,并使其值的范围在0-255之间,
    i=i+1;
    }  
}

void loop() {
    if(a==360){
      a=0;
    }
    analogWrite(10,num[a]);//从数组中读入并写出
    //Serial.println(num[a]);//打开用于调试
    delayMicroseconds(277);//对着示波器自己调到10HZ左右
    a=a+1;
}
回复 支持 反对

使用道具 举报

发表于 2016-1-13 09:45:33 | 显示全部楼层
lqh 发表于 2016-1-13 08:52
以前的每次输出都要进行浮点运算,既浪费资源,又不好掌握运行时间,现改成数组输出吧!

float de ...

頻率調得差不多了;但按理這段代碼應該會編譯失敗才是,因單看以下這句,就應該有問題了。

//   num=(255*sin(deg*PI/180)+255)/2;//将角度转变为弧长,并使其值的范围在0-255之间,  //
回复 支持 反对

使用道具 举报

发表于 2016-1-13 23:26:16 | 显示全部楼层
能确定这些小东西吃这一套?如果真有效的话可能好多人都想去弄一套,但貌似很早前就有不少人试过效果不太好吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-21 07:15:25 来自手机 | 显示全部楼层
maxims 发表于 2016-1-11 21:23
haha ,打脸了不是?

效果怎么样,做一个试试呗!以前用C51做了一个,家里的蟑螂少了很多,有时即便发现有,那也是个头特小的。
回复 支持 反对

使用道具 举报

发表于 2016-1-21 08:41:58 | 显示全部楼层
能不能驱赶老鼠啊?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-1-22 20:05:29 | 显示全部楼层
catnull 发表于 2016-1-21 08:41
能不能驱赶老鼠啊?

理论上讲,应该是可以的!但用什么频率、使用多大功率,需要查阅资料和进行试验。但切记要注意功率不能太大,对人有伤害。
回复 支持 反对

使用道具 举报

发表于 2016-1-23 09:36:18 | 显示全部楼层
很不幸,然并卵,但没关系,反正就是玩嘛,管他有木有用呢。。。。
回复 支持 反对

使用道具 举报

发表于 2016-1-24 11:05:22 | 显示全部楼层
lqh 发表于 2016-1-13 08:52
以前的每次输出都要进行浮点运算,既浪费资源,又不好掌握运行时间,现改成数组输出吧!

float de ...

哎哟,我滴个天,这个不错。
再来一个EEprom存储
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 19:00 , Processed in 0.077495 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表