mBlock & Arduino(12)使用超音波感应器测量距离

超音波感应器蛮常出现在电子机器人的产品上,通常是用来测量距离,超音波感应器各有一个发射及接收超音波的零件,活像两颗大大的眼睛,在制作机器人时,就经常成为造型之一 … XD

认识超音波感应器

如上图看到的,我手边这颗超音波感应器为HC-SR04,左边被标示为 T 的那颗是发射器(Transmitter),会发出 40 kHz 的声波,这个声波超出人类可感知的 20 kHz 上限,因此才称之为超音波,右边那颗被标示为 R 的是接收器(Receiver),可接收超音波。

HC-SR04 脚位从左至右分别为 Vcc、Trig、Echo 与 GND,Vcc 与 GND 就是接 5V 电源及 GND 了,Trig 为输入脚位,Echo 为输出脚位,超音波的发射与接收,就是靠 Trig 与 Echo 这两个脚位,如果你送出 10 微秒的 5V 高电位讯号给 Trig,就会触发超音波的发射,接着 Echo 脚位就会处于 5V 高电位状态,如果接收到反射的超音波讯号,那么 Echo 脚位就会处于 0V 低电位状态:

因此,在超音波发射之后,Echo 的高电位持续时间,就可以搭配音波速度每秒 343.2 公尺,也就是每公分要花费 29.1 微秒左右,计算出超音波感应器与障碍物之间的距离,记得音波往返是走了两倍距离,因此 Echo 的高电位持续时间要除以 2,再用来除以 29.1 微秒,才是与障碍物之间的距离。

如果使用 Arduino 官方语言的话,可以如下撰写程式,以取得超音波感应器与障碍物之间的距离:

pulseIn函式可以计算指定脚位的高电位或低电位持续时间,单位是微秒。

使用 mBlock 超音波感应器方块

嗯?delayMicroseconds与pulseIn在 mBlock 中并没有对应的方块,因此,没什么好继续介绍的了?

实际上,在 mBlock 2.1 中,机器人模块中的 Makeblock 区块里有个“超音波感应器”方块,这原是搭配 Makeblock 超音波感应器模组而使用,这个超音波感应器模组使用 RJ11 接头,而 Makeblock 在 Arduino 板子上设置了八个 RJ11 连接埠,你可以在Me-Baseboard看到相关图片说明。

在说明中,可以看到 Ports on Baseboard Orion to pins on Arduino UNO 这张图,假设我想将超音波感应器连接在 3 号连接埠,它对应的脚位是 D12 与 D13,而在The Upgrade of Me Series Electronic Modules的说明中可以看到,Makeblock 的超音波感应器模组,似乎只是将 Vcc、Trig、Echo 与 GND,直接对应至 RJ11 的相关接点,因此,就来试试看用这个方块吧!

搭配上面這個程式,試著使用以下的電路連接,Trig 連接 D12,Echo 連接 D13:

接著執行程式,你就可以看到貓咪跟你報告距離了 … XD

如果你試著使用 mBlock 超音波感應器方塊,然後轉為 Arduino mode 檢視 Arduino 原始碼,可以發現,它實際上是 MeUltrasonic 程式庫,這可以在 mBlock 安裝目錄的 ext/libraries/makeblock/src 中找到對應的原始碼,其中控制超音波感應器的程式碼,主要是在measure函式:

MePort的dWrite2中,基本上就是在对应脚位作digitalWrite的动作(依 makeblock 的埠决定哪个脚位):

依这个写法模式,似乎很像是 HC-SR04,不过,依上面的程式码来看,它都只用到s2,也就是脚位13,为什么呢?因为 Makeblock 最新的超音波感应器 V3.0,可以自行使用杜邦线接线的脚位只有三个,三个脚位中,有两个分别是接电源与 GND,一个是信号接脚,这意谓着,Trig 与 Echo 必须使用同一个脚位,这也就是为什么,在measure的程式码中,看到的都只有使用s2脚位。

可是 HC-SR04 是四个脚位,Trig 是其中独立的一个脚位,怎么能适用“超音波感应器”方块呢?自行触发 Trig 啰!只是直接使用“设置数位脚位”方块的速度不够快,因此,我想到的是,使用“播放脚位”方块,这可以控制脚位电压高低的频率,建立起类似以下的效果:

简单来说,最后我就只是利用了“超音波感应器”方块底层的pulseIn来取得回波时间而已,这个方法下测出来的距离数值会跳动,不过大致上勉强可用啦!

(这个方法比较适用于 mBlock 2.1.4,在 mBlock 2.1.5 中,韧体上似乎做了些修改,虽然还是可以用相同方法,不过,跳动的范围会变大许多。)

超音波搭配七段显示器

那么,就也来回顾一下〈mBlock & Arduino(7)七段显示器之 HELLO!〉,试着将超音波感应器量得的距离,使用七段显示器来回报吧!

因为只有一颗七段显示器,超过 8 公分就一律显示为 0 了 … XD

清单 numbers 使用字串编码 0 到 8 的数字:


感谢CodeData用户:caterpillar的贡献 著作权归作者所有

整理:宁波家电物联网云平台,中科极动云

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容