导航

    • 登录
    • 搜索
    • 版块
    • 产品
    • 教程
    • 论坛
    • 淘宝
    1. 主页
    2. fmcq
    F
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 帖子
    • 楼层
    • 最佳
    • 群组

    fmcq

    @fmcq

    0
    声望
    5
    楼层
    574
    资料浏览
    1
    粉丝
    0
    关注
    注册时间 最后登录

    fmcq 关注

    fmcq 发布的帖子

    • 串口与舵机拓展版的i2c问题
      import time
      from pyb import UART
      from servo import Servos
      from machine import I2C, Pin
      
      i2c = I2C(sda=Pin('P5'), scl=Pin('P4'))
      servo = Servos(i2c, address=0x40, freq=50, min_us=500, max_us=2500, degrees=180)
      
      uart = UART(3, 19200, timeout_char=1000)
      
      
      while True:
      
          uart.write("哈哈哈")
      
          servo.position(0, 0)
          time.sleep(2000)
          servo.position(0, 180)
          time.sleep(2000)
          
          servo.position(1, 0)
          time.sleep(2000)
          servo.position(1, 160)
          time.sleep(2000)
      

      舵机拓展版的i2c接口是P4和P5,但是我想用舵机拓展版的同时使用串口发送命令,我加进去串口的函数时就报错,请问该怎么办

      0_1566887006592_捕获.JPG

      发布在 OpenMV Cam
      F
      fmcq
    • openmv连接超声波模块,提示pix format错误

      新建一个文本,单独使用了超声波模块,运行成功,能够测出距离,但是把代码加到关于用到摄像头的代码里时就出问题,总是提示pix format错误。

      # code block
      #openmv利用超声波测距
      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_counter5*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
      #中断配置
      extint = pyb.ExtInt(wave_echo_pin, pyb.ExtInt.IRQ_RISING_FALLING, pyb.Pin.PULL_DOWN, callback)
      
      while(True):
      wave_distance_process()
      time.sleep(100)
      print('wave_distance',wave_distance)
      

      我在openmv论坛找了一下,发现早也已经有前辈遇到这个问题了,但是帖子的问题都一年快过去了官方的办法还没提供出来,说是因为中断冲突,但是我在官方教程里也没有找到类似中断等级设置的东西

      这是那个帖子的链接

      0_1566360733023_4e6acf3a-409a-4f78-9f06-9e8045e151e7-image.png

      另外我还发现,当我的超声波代码运行成功后,我没有把代码下载进去openmv,然后我运行其他关于用到摄像头的代码比如helloworld时,竟然也提示pix format错误,为什么?这里没有使用到其他外部中断了啊,,

      这时候我需要把openmv的线拔了重新插,helloworld就能运行了,然后我再去运行超声波的,也行,再回头运行helloworld,就不行了~~~

      真的想不明白,请求大神指教,谢谢

      发布在 OpenMV Cam
      F
      fmcq
    • 串口输入数据时UnicodeError

      按照教程,我单独新建一个文本时,运行成功,能够在串口输入123时并且将输入的数据打印出来:

      import time
      from pyb import UART
      uart = UART(3, 19200, timeout_char=1000)
      
      while(True):
          if uart.any():
             a=uart.readline().decode().strip()
             uart.write(a)
             print(a)
      

      0_1566183479208_ba5f9444-b6dd-4c59-885d-570104b2e081-image.png

      从官方给的教程来看,uart.readline().decode()得到的是字符串。
      但是当我把代码移植到其他文件时,输入数值就读不出来,显示错误如下:

      0_1566183621110_eb296d48-fbef-4fc6-b873-5f32db706aa5-image.png

      后来在我写这份求助的时候我再试试,发现,,,,,,,,,,,,,,,,,,,,,
      我只是忘记把波特率改了(心里一万个我去我去),好了,问题解决了

      谢谢大家!

      发布在 OpenMV Cam
      F
      fmcq