最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

蜂鸣器在Node.js中发出奇怪的尖叫声

运维笔记admin11浏览0评论

蜂鸣器在Node.js中发出奇怪的尖叫声

蜂鸣器在Node.js中发出奇怪的尖叫声

最近,我一直在搞乱Node.js,破折号按钮和Raspberry Pi GPIO。我对整个GPIO场景都是一个菜鸟,所以我搞砸了它。我有一个连接到面包板的蜂鸣器,我使用Python触发它,如下所示:

while True:    
    GPIO.output(18, True)
    time.sleep(0.001)
    GPIO.output(18, False)
    time.sleep(0.001)

这非常有效。蜂鸣器听起来不错。但是,我的Node.js脚本使蜂鸣器发出奇怪的尖叫声。我是这样做的:

var Gpio = require('onoff').Gpio;
var sleep = require('sleep');
var buzz = new Gpio(18, 'out');
for (var i = 0; i < 800; i++) {
    buzz.writeSync(1);
    sleep.usleep(1);
    buzz.writeSync(0);
    sleep.usleep(1);
};

i < 800是创造蜂鸣效应的嗡嗡声的次数)

出于某种原因,与Python脚本制作的统一,类似蜂鸣器的声音相比,Node.js脚本产生了奇怪的尖锐声音。非常感谢提前。感谢帮助。

回答如下:

Node使用事件循环系统。当你告诉它睡觉时,你实际上在说:“自由!做你需要做的其他事情,并继续检查,看看我是否还有更多工作要做”。然后在给定的时间之后,它会向队列添加一个作业,树莓会将其拾起并执行它。

这个问题是pi不能以这种方式非常精确。您释放CPU并且只能在CPU返回给您时播放下一个滴答。这可能每次都有所不同,并可能导致screetching声音。

我将尝试一种不同的方法并回顾我的发现,但我怀疑保持CPU将产生更好的结果: - Node有一个更精确的计时器,称为process.hrtime,这将证明是有用的。 - 我将开始一个无限循环并使用hrtime来控制何时打勾。 - 这可能会很糟糕,导致pi无法访问。

我会告诉你。 ;)

发布评论

评论列表(0)

  1. 暂无评论