openmv超声波测距

SidneyLove 2019-04-25 07:00:22
之前看到的一份帖子,里面的程序运行时有bug,没有得到解决,有大神能解决吗?? import time, utime, pyb from pyb import Pin wave_echo_pin = Pin('P7', Pin.IN, Pin.PULL_NONE) wave_trig_pin = Pin('P8', Pin.OUT_PP, Pin.PULL_DOWN) wave_distance = 0 tim_counter = 0 flag_wave = 0 #超声波启动 def wave_start(): wave_trig_pin.value(1) utime.sleep_us(15) wave_trig_pin.value(0) #超声波距离计算 def wave_distance_calculation(): #全局变量声明 global tim_counter #频率f为0.2MHZ 高电平时间t=计数值*1/f wave_distance = tim_counter*5*0.017 #输出最终的测量距离(单位cm) print('wave_distance',wave_distance) #超声波数据处理 def wave_distance_process(): global flag_wave if(flag_wave == 0): wave_start() if(flag_wave == 2): wave_distance_calculation() flag_wave = 0 #配置定时器 tim =pyb.Timer(1, prescaler=720, period=65535) #相当于freq=0.2M #外部中断配置 def callback(line): global flag_wave,tim_counter #上升沿触发处理 if(wave_echo_pin.value()): tim.init(prescaler=720, period=65535) flag_wave = 1 #下降沿 else: tim.deinit() tim_counter = tim.counter() tim.counter(0) extint.disable() flag_wave = 2 #中断配置 Extin=pyb.ExtInt(wave_echo_pin, pyb.ExtInt.IRQ_RISING_FALLING, pyb.Pin.PULL_DOWN, callback) while(True): wave_distance_process() time.sleep(100)
...全文
402 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
雪水半中庭 2020-12-17
  • 打赏
  • 举报
回复
记住记住!供电要5v,否则上述的程序,还是没有任何的显示!!!!!!!接地也需要共地的!
雪水半中庭 2020-12-17
  • 打赏
  • 举报
回复
更改后亲测可用,因为源文本并没有再次启动中断所以只能输出一次 但还是有一个问题,openmv不能输出5v电压,所以超声波模块的供电还是需要飞控板。 import time,utime,pyb from pyb import Pin wave_echo_pin = Pin('P7', Pin.IN, Pin.PULL_NONE) wave_trig_pin = Pin('P8', Pin.OUT_PP, Pin.PULL_DOWN) wave_distance = 0 tim_counter = 0 flag_wave = 0 #超声波启动 def wave_start(): wave_trig_pin.value(True) utime.sleep_us(20) wave_trig_pin.value(0) #超声波距离计算 def wave_distance_calculation(): #全局变量声明 global tim_counter #频率f为0.2MHZ 高电平时间t=计数值*1/f wave_distance = tim_counter*5*0.017 #输出最终的测量距离(单位cm) print('wave_distance',wave_distance) #超声波数据处理 def wave_distance_process(): global flag_wave if(flag_wave == 0): wave_start() if(flag_wave == 2): wave_distance_calculation() #print("2") flag_wave = 0 extint.enable() #配置定时器 tim =pyb.Timer(4, prescaler=720, period=65535) #相当于freq=0.2M #外部中断配置 def callback(line): global flag_wave,tim_counter #上升沿触发处理 if(wave_echo_pin.value()): tim.init(prescaler=720, period=65535) flag_wave = 1 #下降沿 else: tim.deinit() tim_counter = tim.counter() extint.disable() flag_wave = 2 #中断配置 extint = pyb.ExtInt(wave_echo_pin, pyb.ExtInt.IRQ_RISING_FALLING, pyb.Pin.PULL_DOWN, callback) while(True): wave_distance_process() time.sleep(100)

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧