openmv想要通过I2C总线发送一个浮点数的数组,怎么做?下图的代码有什么错误?
-
import sensor, image, time import pyb, ustruct # ustruct 用于打包和解压原始数据类型 的 "类" import gc sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(time = 300) sensor.set_auto_gain(False) # must be turned off for color tracking sensor.set_auto_whitebal(False) # must be turned off for color tracking clock = time.clock() K=560#the value should be measure bus = pyb.I2C(2, pyb.I2C.SLAVE, addr=0x12) bus.deinit() # 完全关闭设备 bus = pyb.I2C(2, pyb.I2C.SLAVE, addr=0x12) print("Waiting for Arduino...") while(True): length=0 circlex=0 circley=0 clock.tick() img = sensor.snapshot().lens_corr(1.8) for c in img.find_circles(threshold = 2000, x_margin = 10, y_margin = 10, r_margin = 10, r_min = 2, r_max = 100, r_step = 2): area = (c.x()-c.r(), c.y()-c.r(), 2*c.r(), 2*c.r()) circlex=c.x() circley=c.y() img.draw_rectangle(area, color = (255, 255, 255))#将非红色的圆用白色的矩形框出来 Lm = 2*c.r() length = K/Lm print("FPS %f" % clock.fps()) print("length:",length) output_strv=[length,circlex,circley] try: bus.send(len(output_strv), timeout=10000) # Send the len first (16-bits). try: for i in range(3): bus.send(output_strv[i], timeout=10000) # Send the data second. print("Sent Data!") # Only reached on no error. except OSError as err: pass # Don't care about errors - so pass. # Note that there are 3 possible errors. A timeout error, a general purpose error, or # a busy error. The error codes are 116, 5, 16 respectively for "err.arg[0]". except OSError as err: pass del img gc.collect()
-
没有报错,就是发送不出去
-
先测试例子: https://book.openmv.cc/example/02-Board-Control/arduino-i2c-slave.html
补充:更推荐用串口发送