赞
踩
基于arduino的5路循迹小车(5)与OpenMV的串口通信
进行图像识别,开发板控制舵机抓取物料
接第一篇链接 https://blog.csdn.net/weixin_45984029/article/details/103437347
OpenMV
开发板与OpenMV的TX,RX交叉相连,VCC,GND对应相连
#include <LobotServoController.h> LobotServoController myse; String comdata = ""; String data[4];//三个物块记录 String adata = ""; //大小控制 String bdata = ""; String cdata = ""; String aa="ZJGXDS01a";//大圆1 String ba="ZJGXDS02a";//大三角2 String ca="ZJGXDS03a";//大方3 String da="ZJGXDS04a";//大六边4 String ea="ZJGXDS05a";//大N5 String fa="ZJGXDS06a";//大星6 String ab="ZJGXDS01";//小圆7 String bb="ZJGXDS02";//小三角8 String cb="ZJGXDS03";//小方9 String db="ZJGXDS04";//小六边10 String eb="ZJGXDS05";//小N11 String fb="ZJGXDS06";//小星12 /** * @par Copyright (C): 2010-2019, Shenzhen Yahboom Tech * @file tracking.c * @author Danny * @version V1.0 * @date 2017.07.26 * @brief 巡线实验 * @details * @par History 见如下说明 * */ unsigned long time1; //计时 int Left_motor_go1 = 24; //左电机前进 AIN1 int Left_motor_back1 = 25; //左电机后退 AIN2 int Right_motor_go1 = 22; //右电机前进 BIN1 int Right_motor_back1 = 23; //右电机后退 BIN2 int Left_motor_pwm1 = 3; //左电机控速 PWMA int Right_motor_pwm1= 5; //右电机控速 PWMB int Left_motor_pwm2 = 4; //左电机控速 PWMA int Right_motor_pwm2= 6; int echoPin = 32; //超声波 int trigPin = 33; unsigned int S; int i; int a; int b;//物块记录 int e; int f; int s; int G1 = 26; int G2 = 27; int G3 = 28; int G4 = 29; int G5 = 30; //循迹红外引脚定义 //TrackSensorLeftPin1 TrackSensorLeftPin2 TrackSensorMid TrackSensorRightPin1 TrackSensorRightPin2 // A1 A2 A3 A4 A5 const int TrackSensorLeftPin1 = A1; //定义第一个循迹红外传感器引脚为A1 const int TrackSensorLeftPin2 = A2; //定义第二个循迹红外传感器引脚为A2 const int TrackSensorMid = A3; //定义第三个循迹红外传感器引脚为A3 const int TrackSensorRightPin1 = A4; //定义第四个循迹红外传感器引脚为A4 const int TrackSensorRightPin2 = A5; //定义第五个循迹红外传感器引脚为A5 // TrackSensorRightPin3 进行计数 // A6 const int TrackSensorRightPin3 = A6; //右主计数 //定义各个循迹红外引脚采集的数据的变量 int SLL; int SL; int SM; int SR; int SRR; //定义计数变量 int JS2; /** * Function setup * @author Danny * @date 2017.07.25 * @brief 初始化配置 * @param[in] void * @retval void * @par History 无 */ void setup() { Serial.begin(9600);//超声波 Serial1.begin(9600); Serial3.begin(9600); pinMode(13,OUTPUT); digitalWrite(13,LOW); while(!Serial1); digitalWrite(13,HIGH); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); //初始化电机驱动IO口为输出方式 pinMode(Left_motor_go1, OUTPUT); pinMode(Left_motor_back1, OUTPUT); pinMode(Right_motor_go1, OUTPUT); pinMode(Right_motor_back1, OUTPUT); //初始化语音输出 pinMode(G1, OUTPUT); pinMode(G2, OUTPUT); pinMode(G3, OUTPUT); pinMode(G4, OUTPUT); pinMode(G5, OUTPUT); digitalWrite(G1, HIGH); digitalWrite(G2, HIGH); digitalWrite(G3, HIGH); digitalWrite(G4, HIGH); digitalWrite(G5, HIGH); //定义四路循迹红外传感器为输入接口 pinMode(TrackSensorLeftPin1, INPUT); pinMode(TrackSensorLeftPin2, INPUT); pinMode(TrackSensorMid,INPUT); pinMode(TrackSensorRightPin1, INPUT); pinMode(TrackSensorRightPin2, INPUT); //定义计数传感器输入接口 pinMode(TrackSensorRightPin3, INPUT); //四路循迹红外传感器初始化为高电平 digitalWrite(TrackSensorLeftPin1, HIGH); digitalWrite(TrackSensorLeftPin2, HIGH); digitalWrite(TrackSensorMid,HIGH); digitalWrite(TrackSensorRightPin1, HIGH); digitalWrite(TrackSensorRightPin2, HIGH); digitalWrite(TrackSensorRightPin3, HIGH); digitalWrite(G1, LOW); delay(1500);//预热 run(50,43);//起步 delay(1000); myse.runActionGroup(102,1);//初始化舵机 i = 0; e = 1; f = 1; } /** * Function run * @author Danny * @date 2017.07.26 * @brief 小车前进 * @param[in1] left_speed:左轮速度 * @param[in2] right_speed:右轮速度 * @param[out] void * @retval void * @par History 无 */ void run(int left_speed, int right_speed) { //左电机前进 digitalWrite(Left_motor_go1, LOW); //左电机前进使能 digitalWrite(Left_motor_back1, HIGH); //左电机后退禁止 analogWrite(Left_motor_pwm1, LOW); analogWrite(Left_motor_pwm2, left_speed); //右电机前进 digitalWrite(Right_motor_go1, LOW); //右电机前进使能 digitalWrite(Right_motor_back1, HIGH); //右电机后退禁止 analogWrite(Right_motor_pwm1, LOW); analogWrite(Right_motor_pwm2, right_speed); } /** * Function brake * @author Danny * @date 2017.07.25 * @brief 小车刹车 * @param[in] time:延时时间 * @param[out] void * @retval void * @par History 无 */ void left(int left_speed, int right_speed) { //左电机停止 digitalWrite(Left_motor_go1, HIGH); //左电机前进禁止 digitalWrite(Left_motor_back1,LOW); //左电机后退禁止 analogWrite(Left_motor_pwm2, left_speed); analogWrite(Left_motor_pwm1,LOW); //右电机前进 digitalWrite(Right_motor_go1, LOW); //右电机前进使能 digitalWrite(Right_motor_back1, HIGH); //右电机后退禁止 analogWrite(Right_motor_pwm2, LOW); analogWrite(Right_motor_pwm1, right_speed); } void right(int left_speed, int right_speed) { //左电机前进 digitalWrite(Left_motor_go1, LOW); //左电机前进使能 digitalWrite(Left_motor_back1, HIGH)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。