备战电赛K210篇(第三天)

okok,也是实现了K210和STM32的通信

学习自b站小黑,和博主“”变优秀吧“”————写的是非常全面容易理解,爆赞!!!

要注意对于你发送的数据进行,分析——帧头,帧尾。(32)

void USART1_IRQHandler(void)                	
{
 static int i=0;//静态变量
	if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET)//判断是否有数据
	{
			MyData[i++] = USART_ReceiveData(USART1);//接收
		if(MyData[0] != 0xa3) i=0;//
		if((i == 2) && (MyData[1] !=0xb3)) i=0;//判断
		if(i == 6)
		{
			if( data_teat(MyData))//判断合理性
			{
				num=MyData[2];
				x=MyData[3];
				y=MyData[4];//存储
			}
			i=0;
		}
	}
} 

K210:

##########发送
def sending_data(num,x,y):
    FH= bytearray([ 0xa3 , 0xb3 , num , x , y ,0xc3 ])
    uart_A.write(FH);

先来记记K210上的代码:
 

import time                 
import sensor                #摄像头
import lcd, image            #lcd和图像
from machine import UART     #串口
from fpioa_manager import fm #定义Pin10用于发送

lcd.init()
lcd.init(freq = 15000000)#频率
sensor.reset()           #摄像头初始化
lcd.init(type=2)  
lcd.rotation(2)
sensor.set_pixformat(sensor.RGB565)       #图像颜色  
sensor.set_framesize(sensor.QVGA)         #分辨率240×320
sensor.set_auto_gain(False)               #自动增益
sensor.set_auto_whitebal(False)           #白平衡

sensor.run(1)
Range = (0,0,160,120)                     #识别区域(不要以后就)
##########################################################配置 9600 八位 不校验 一位停止位 串口接收超时时间 串口接收缓存

fm.register( 10,fm.fpioa.UART1_TX, force=True )
uart_A = UART(UART.UART1,115200,8,0,1, timeout = 1000, read_buf_len=4096)  #舒适化串口

##########发送
def sending_data(num,x,y):
    FH= bytearray([ 0xa3 , 0xb3 , num , x , y ,0xc3 ])
    uart_A.write(FH);

##########################################################
#for i in range(200):
   #img=sensor.snapshot()
   #img.draw_rectangle((150,100,30,30),color=(255,255,255))#圈出搜寻区域
   #Statistics = img.get_statistics(roi=(200,100,30,30)) #得到统计信息
   #Threshold = [Statistics.l_min(),Statistics.l_max(),
                #Statistics.a_min(),Statistics.a_max(),
                #Statistics.b_min(),Statistics.b_max(),]
   #print(Threshold)
   #lcd.display(img)
###########################################################
x=0
y=0
num=0
print("发送OK================")
while True:
    #img=sensor.snapshot()
       ##找色块
    #for blob in img.find_blobs([Threshold],roi=Range,pixels_threshold=100,area_threshold=100,merge=True,margin=10):
       #img.draw_rectangle(Range)#画框
       #img.draw_rectangle(blob.rect())#画框
       #img.draw_cross(blob.cx(),blob.cy())#十字
       #print(blob.cx(),blob.cy())
       #lcd.display(img)
    num+=1;
    x+=2;
    y+=3; 
    sending_data(num,x,y)
    print("num:",num,"x:",x,"y:",y)
    time.sleep_ms(1000)

下面是代码:

import time
import sensor
import lcd, image
from machine import UART
from fpioa_manager import fm

lcd.init()
lcd.init(freq = 15000000)
lcd.init(type=2)
lcd.rotation(2)

sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)#灰度
sensor.set_framesize(sensor.QVGA)#分辨率240×320
sensor.set_auto_gain(False)#自动增益
sensor.set_auto_whitebal(False)#白平衡
sensor.skip_frames(time=3000)#跳过3000张图片
sensor.run(1)
#########################################
Range1 = (0,100,320,16)
Range2 = (0,180,320,8)
black_my=(42, 22, -9, 10, 10, -18)
Flag=0        #判断开始
##########################################################配置 9600 八位 不校验 一位停止位 串口接收超时时间 串口接收缓存

fm.register( 10,fm.fpioa.UART1_TX, force=True )
uart_A = UART(UART.UART1,115200,8,0,1, timeout = 1000, read_buf_len=4096)

##########发送
def sending_data(num,x,y):
    FH= bytearray([ 0xa3 , 0xb3 , num , x , y ,0xc3 ])
    uart_A.write(FH);

##########################################################

###########################################################

print("发送OK================")
while True:
    img=sensor.snapshot()
    
    are1 = img.find_blobs([black_my],roi=Range1,area_threshold=200,merge=True)
    #are2 = img.find_blobs([black_my],roi=Range2,area_threshold=120,merge=True,margin=120)
     #are1寻迹  are2判断路口
    if are1:
        for blob in are1:
           #blob[0]_颜色外框X 
           #blob[1]_颜色外框Y
           #blob[2]_颜色外框W宽度7#判断起始
           #blob[3]_颜色外框H高度
           #blob[4]_像素数量
           #blob[5]_中心坐标X
           #blob[6]_中心坐标Y
           tmp=img.draw_rectangle(blob[0:4])#画框
           tmp=img.draw_cross(blob[5],blob[6])#十字
           c=img.get_pixel(blob[5],blob[6])
           print(blob.cx(),blob.cy())
           
    lcd.display(img)
    
    #sending_data(num,x,y)
    #print("num:",num,"x:",x,"y:",y)
    #time.sleep_ms(1000)

现在学习都是抄别人的,再加以改进等等,加油加油!!!

王者我来了

 

你可能感兴趣的:(单片机,python,嵌入式硬件,学习,笔记)