openmv调试可以但是却没法把信息传到arduino上是为什么忍者tx也都连上了
-
arduino代码 #include <SoftwareSerial.h> SoftwareSerial softSerial(10,11); //定义软串口,rx为10号端口,tx为11号端口 int x; int input1 = 6; //定义输出引脚 int input2 = 7; //定义输出引脚 int input3 = 8; //定义输出引脚 int input4 = 9; //定义输出引脚 int ENA=5;//定义使能端引脚(下同) int ENB=11; void setup() { pinMode(input1,OUTPUT);//下列配置各引脚为输出模式 pinMode(input2,OUTPUT); pinMode(input3,OUTPUT); pinMode(input4,OUTPUT); pinMode(ENA,OUTPUT); pinMode(ENB,OUTPUT); softSerial.begin(9600); //初始化虚拟串口 Serial.begin(9600); //初始化硬串口 } String A_String = "";//定义用来存数据的字符串 void loop() { if (softSerial.available() > 0) //判断软串口是否接收到openmv数据,然后读取,然后在串口监视器打印 { if(softSerial.peek() != '\n') { A_String += (char)softSerial.read();//把串口读的单个字符逐加到字符串 } else { softSerial.read(); x=A_String.toInt();//把字符串转成int类型存放 if(x>80)//坐标和阈值进行判断 { Serial.println("1");//串口打印数字1 Serial.println(x);//串口打印坐标 left();//左转 } else if(x<80) { Serial.println("2");//串口打印数字2 Serial.println(x);//串口打印坐标 right();//右转 } else { stop1();//停转 } A_String = "";//重置字符串 } } } void right() //右转 { analogWrite(ENA,240); digitalWrite(input1,HIGH); digitalWrite(input2,LOW); digitalWrite(input3,LOW); digitalWrite(input4,LOW); } void stop1()//停转 { digitalWrite(input1,LOW); digitalWrite(input2,LOW); digitalWrite(input3,LOW); digitalWrite(input4,LOW); } void left()//左转 { analogWrite(ENB,240); digitalWrite(input1,LOW); digitalWrite(input2,LOW); digitalWrite(input3,HIGH); digitalWrite(input4,LOW); } openmv代码 import sensor, image, time from pyb import UART import json bule_threshold = (48,12,-19,33,-49,-14)//蓝色的阈值 sensor.reset() # Initialize the camera sensor. sensor.set_hmirror(True) sensor.set_vflip(True) sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(10) sensor.set_auto_whitebal(False) clock = time.clock() uart = UART(3, 9600)//串口波特率需要和arduino一致 这里设为9600 def find_max(blobs): max_size=0 for blob in blobs: if blob.pixels() > max_size: max_blob=blob max_size = blob.pixels() return max_blob //寻找最大色块并返回最大色块的坐标 while(True): img = sensor.snapshot()//采集图像 blobs = img.find_blobs([blue_threshold]) if blobs: max_blob=find_max(blobs) img.draw_rectangle(max_blob.rect())//框选最大色块 img.draw_cross(max_blob.cx(), max_blob.cy())//在最大色块中心画十字 pcx = max_blob.cx()//定义pcx为最大色块中心的横坐标 output_str=json.dumps(max_blob.cx()) //把pcx用json字符串的形式发送给arduino uart.write(output_str + '\r\n') print(pcx)//打印输出pcx else: print('not found!')
-
https://book.openmv.cc/MCU/serial1.html
使用这个代码来测试。