请教超声波delayMicroseconds(10)的问题。-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1947|回复: 4

[未解决] 请教超声波delayMicroseconds(10)的问题。

[复制链接]
发表于 2021-1-6 00:03 | 显示全部楼层 |阅读模式
    digitalWrite(Trig, HIGH);
    delayMicroseconds(10);
    digitalWrite(Trig, LOW);

虽然暂停10微秒是极短的时间,但终究是暂停了整个程序。
我已经用millis()方法实现的同步,但这个delayMicroseconds(10)要如何也实现同步?

发表于 2021-1-6 06:49 | 显示全部楼层
digitalWrite(Trig, HIGH);
digitalWrite(Trig, HIGH);
digitalWrite(Trig, HIGH);//多执行两条digitalWrite(Trig, HIGH);用时时间为10微秒.
digitalWrite(Trig, LOW);
这样可否满足你的要求.
发表于 2021-1-6 07:10 | 显示全部楼层
使用微秒指令 micros(),用法跟 millis()
一樣,同樣是 unsigned long 數值型式

ATtiny13A 記得編譯選項要 enable
microsec(編譯出來的程式碼會大一點)
 楼主| 发表于 2021-1-6 15:55 | 显示全部楼层
shouzama 发表于 2021-1-6 07:10
使用微秒指令 micros(),用法跟 millis()
一樣,同樣是 unsigned long 數值型式

你好,谢谢回复。
超声波需要每隔一段时间(比如50毫秒),触发trig高电平10微秒。
这50毫秒我已经用了millis()了,判断达到50毫秒则进入if语句块里面执行trig的高电平,问题是在if语句块里还怎么用判断micros() ?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 16:27 , Processed in 0.147888 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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