stm32f103小车循迹程序应该怎么写?

最近参加一个智能车大赛,循迹程序刚写出来,测试的时候乱跑,谁能给个思路,或者例程,,,,感谢

1个回答

http://download.csdn.net/download/fxbjsx/7768851
采纳本回答,可以代下载,但是要留下邮箱。

weixin_44203844
应旭潮 可以帮我下载一下吗?给您点个赞
大约一年之前 回复
qq_41570901
qq_41570901 可以帮我下载吗?给你点赞O(∩_∩)O
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
循迹小车(寻黑线)的停止程序

我们编写了一段循迹小车(寻黑线)的程序,现在小车可以在起点后面开始前进,但再次经过起点是不会停止。哪位大佬可以帮我看看停止程序哪里出错了 ![图片说明](https://img-ask.csdn.net/upload/201910/22/1571754401_960904.png) ![图片说明](https://img-ask.csdn.net/upload/201910/22/1571754458_163618.png) ![图片说明](https://img-ask.csdn.net/upload/201910/22/1571754518_927434.png) ![图片说明](https://img-ask.csdn.net/upload/201910/22/1571754575_565603.png)

循迹小车的停止程序编写原理

请问循迹小车(寻黑线)的运动轨迹闭合,当左右传感器都检测到黑色是小车前进,行驶过一圈左右两个再次感应到黑色时停止。这段程序应该依据什么原理来编写呢

Arduino小车 循迹 L298N

能帮我看一下这段代码吗?实体是个小车,主机是Arduino,驱动是L298N,四路循迹模块四路分别用D1D2D3D4表示,ENA、ENB、IN1到IN4这些连的引脚就是程序上定义的,马达是在网上常见的减速马达。 四个红外模块都是0即a=0000的时候,小车按照程序走,但是a=1或者a=11的时候就不转了,而且L298N还发出嗡嗡的声音。 找了半天了,就是找不到是什么情况,线接的没问题。![图片说明](https://img-ask.csdn.net/upload/201712/06/1512491854_99851.png)![图片说明](https://img-ask.csdn.net/upload/201712/06/1512491776_430602.png)![图片说明](https://img-ask.csdn.net/upload/201712/06/1512491784_482315.png)![图片说明](https://img-ask.csdn.net/upload/201712/06/1512491873_660072.png)

单片机智能小车循迹延时

#include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit IN1=P1^0; sbit IN2=P1^1; sbit IN3=P1^2; sbit IN4=P1^3; sbit EN1=P1^4; // 左电机使能 sbit EN2=P1^5; // 右电机使能 ////定义两路循迹灯//// sbit z=P2^3; sbit y=P2^4; sbit m=P2^5; uint i,j; #define left_qianmoto_go {EN1=1,IN1=0,IN2=1;} //前左电机向前走 #define left_qianmoto_back {EN1=1,IN1=1,IN2=0;} //前左边电机向后转 #define left_qianmoto_stop {EN1=0;} //前左边电机停转 #define right_qianmoto_go {EN2=1,IN3=1,IN4=0;} //前右边电机向前走 #define right_qianmoto_back {EN2=1,IN3=0,IN4=1;} //前右边电机向后走 #define right_qianmoto_stop {EN2=0;} //前右边电机停转 uchar left_zkb; //定义左电机占空比 uchar right_zkb; //定义右电机占空比 uchar t; //定义定时器中断计数器 void xunji(); //循迹程序 void run(); //前进函数 void right(); //右转函数 void left(); //左转函数 void stop(); void back(); void t0_init(); //定时器0初始化函数 void main() //主函数 { t0_init(); //定时器初始化 while(1) { xunji(); //不断调用循迹子程序 } } /*********************循迹程序***********************************/ void xunji() { ////////0亮灯 表示 接收到 信号,代表没有处于黑线///////////// ////////1灭灯 表示 没接收 到信号,代表处于黑线中/////////// if(z==1&&m==1&&y==1)//十字路口,左 { run(); for(i=1000;i>0;i--) for(j=110;j>0;j--); left(); for(i=1000;i>0;i--) for(j=110;j>0;j--); } if(z==0&&m==1&&y==0)//循迹 { run(); } } /*********中断服务函数产生占空比方波用于占空比调速****************/ /* PWM产生118次中断,每次中断为100us,即T约等于11.8ms */ void timer0 () interrupt 1 { TH0= 0XFF; //100us定时 TL0= 0X9c; //100us定时 t++; if(t>=200) //限定周期 118次中断以后清空 t=0; /*********左电机PWM调速********/ if(t<left_zkb) {EN1=1; } else {EN1=0;} /********右电机PWM调速**********/ if(t<right_zkb) {EN2=1;} else {EN2=0;} } void run(void) //前进函数 { left_zkb=14; right_zkb=14; left_qianmoto_go; left_zkb=14; right_zkb=14; right_qianmoto_go;} void left(void) //左转函数 {left_zkb=14; right_zkb=14; right_qianmoto_back; left_zkb=14; right_zkb=14; left_qianmoto_go; } void right(void) //右转函数 { left_zkb=14; right_zkb=14; right_qianmoto_go; left_zkb=14; right_zkb=14; left_qianmoto_back;} void stop(void) {left_qianmoto_stop; right_qianmoto_stop;} void back(void)//返回函数 {left_zkb=14; right_zkb=14; left_qianmoto_back; left_zkb=14; right_zkb=14; right_qianmoto_back;} void t0_init() //定时器初始化函数 { TMOD=0x01; TH0= 0XFF; //100us定时 TL0= 0X9c; //100us定时 EA=1; ET0=1; TR0=1; } 为什么一加for延时就不能用,电机不转,但是发错吱吱的声音!一去掉就可以!

为什么循迹小车正确连线后驱动模块指示灯不亮?

将小车与电脑连接后所有指示灯正常亮起,但是拔除数据线使用电池供电时驱动模块指示灯不亮,而且红外传感器无任何反应

对于VGA小车提高循迹能力,可以尝试添加什么算法进行优化

红外探测器获得数据应如何采用一种算法进行进一步优化,或者说怎么才能进一步提高小车的循迹能力,提高准确度

小车如何做到指定的路线行走

小车如何做到指定的路线行走,基于ARM,或者单片机c51的都可以.具体在那个步骤实现,求大神帮忙指点下.

Arduino智能小车功能间如何进行蓝牙遥控选择转换

做了一辆Arduino的智能车,其功能目前是:四路循迹行驶,同时在行驶过程中遇到障碍物进行规避(超声波避障模块),在把循迹用黑胶布遮住使它四个传感器均检测不到时候可以进行蓝牙遥控,现在我想做成使用蓝牙来远程选择自动还是手动(自动循迹加超声波避障/蓝牙纯手动遥控),附上代码如下,求大神帮我解决下。 ``` int Left_motor_back=6; //左电机后退(IN1) int Left_motor_go=9; //左电机前进(IN2) int Right_motor_go=10; // 右电机前进(IN3) int Right_motor_back=11; // 右电机后退(IN4) const int SensorRight_1 = 7;//右外侧 const int SensorRight = 5; //右循迹红外传感器(P3.2 OUT1) const int SensorLeft = 4; //左循迹红外传感器(P3.3 OUT2) const int SensorLeft_1 = 2;//左外侧 //超声波测量数值定义 int Front_Distance = 0; int Left_Distance = 0; int Right_Distance = 0; int SL; //左循迹红外传感器状态 int SL_1; int SR; //右循迹红外传感器状态 int SR_1; int Echo = A0; // Echo回声脚(P2.0) int Trig = A1 ; // Trig 触发脚(P2.1) int Distance = 0; int servopin= 12;//设置舵机驱动脚到数字口2 int myangle;//定义角度变量 int pulsewidth;//定义脉宽变量 int val; const String GO = "1";//蓝牙遥控器发送信息代码定义 const String BACK = "2"; const String LEFT = "3"; const String RIGHT = "4"; const String STOP = "0"; const String SMALLLEFT = "5"; const String SMALLRIGHT = "6"; const String SLEFT = "7"; void setup() { Serial.begin(9600); // 初始化串口 //初始化电机驱动IO为输出方式 pinMode(Left_motor_go,OUTPUT); // PIN 6 (PWM) //初始化电机驱动IO为输出方式 pinMode(Left_motor_back,OUTPUT); // PIN 9 (PWM) pinMode(Right_motor_go,OUTPUT);// PIN 10 (PWM) pinMode(Right_motor_back,OUTPUT);// PIN 11 (PWM) pinMode(SensorRight, INPUT); //定义右循迹红外传感器为输入 pinMode(SensorLeft, INPUT); //定义左循迹红外传感器为输入 pinMode(SensorRight_1, INPUT); //定义右红外传感器为输入 pinMode(SensorLeft_1, INPUT); //定义左红外传感器为输入 //初始化超声波引脚 pinMode(Echo, INPUT); // 定义超声波输入脚 pinMode(Trig, OUTPUT); // 定义超声波输出脚 pinMode(servopin,OUTPUT);//设定舵机接口为输出接口 } //=======================智能小车的基本动作========================= // 前进 void run(int time) { digitalWrite(Right_motor_go,HIGH); // 右电机前进 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,60);//PWM比例0~255调速,左右轮差异略增减 analogWrite(Right_motor_back,0); digitalWrite(Left_motor_go,HIGH); // 左电机前进 digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor_go,60);//PWM比例0~255调速,左右轮差异略增减 analogWrite(Left_motor_back,0); delay(time * 10); //执行时间,可以调整 } //void brake(int time) //刹车,停车 void brake(int time) { digitalWrite(Right_motor_go,LOW); digitalWrite(Right_motor_back,LOW); digitalWrite(Left_motor_go,LOW); digitalWrite(Left_motor_back,LOW); delay(time * 10);//执行时间,可以调整 } //void brake(int time) //长时间刹车,停车 void brake_1() { digitalWrite(Right_motor_go,LOW); digitalWrite(Right_motor_back,LOW); digitalWrite(Left_motor_go,LOW); digitalWrite(Left_motor_back,LOW); //delay(time * 100);//执行时间,可以调整 } //void left(int time) //左转(左轮不动,右轮前进) void left(int time) { digitalWrite(Right_motor_go,HIGH); // 右电机前进 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,110); analogWrite(Right_motor_back,0);//PWM比例0~255调速 digitalWrite(Left_motor_go,LOW); //左轮后退 digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor_go,0); analogWrite(Left_motor_back,0);//PWM比例0~255调速 delay(time * 10); //执行时间,可以调整 } //void spin_left(int time) void sleft(int time) //左转(左轮后退,右轮前进) { digitalWrite(Right_motor_go,HIGH); // 右电机前进 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,110); analogWrite(Right_motor_back,0);//PWM比例0~255调速 digitalWrite(Left_motor_go,LOW); //左轮后退 digitalWrite(Left_motor_back,HIGH); analogWrite(Left_motor_go,0); analogWrite(Left_motor_back,110);//PWM比例0~255调速 delay(time * 10); //执行时间,可以调整 } //void right(int time) //右转(右轮不动,左轮前进) void right(int time) { digitalWrite(Right_motor_go,LOW); //右电机后退 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,0);//PWM比例0~255调速 digitalWrite(Left_motor_go,HIGH);//左电机前进 digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor_go,110); analogWrite(Left_motor_back,0);//PWM比例0~255调速 delay(time * 10); //执行时间,可以调整 } //void spin_right(int time) void sright(int time) //右转(右轮后退,左轮前进) { digitalWrite(Right_motor_go,LOW); //右电机后退 digitalWrite(Right_motor_back,HIGH); analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,110);//PWM比例0~255调速 digitalWrite(Left_motor_go,HIGH);//左电机前进 digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor_go,110); analogWrite(Left_motor_back,0);//PWM比例0~255调速 // delay(time * 10); //执行时间,可以调整 } //void back(int time) //后退 void back(int time) { digitalWrite(Right_motor_go,LOW); //右轮后退 digitalWrite(Right_motor_back,HIGH); analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,100);//PWM比例0~255调速 digitalWrite(Left_motor_go,LOW); //左轮后退 digitalWrite(Left_motor_back,HIGH); analogWrite(Left_motor_go,0); analogWrite(Left_motor_back,100);//PWM比例0~255调速 delay(time * 10); //执行时间,可以调整 } //========================================================== float Distance_test() // 量出前方距离 { digitalWrite(Trig, LOW); // 给触发脚低电平2μs delayMicroseconds(2); digitalWrite(Trig, HIGH); // 给触发脚高电平10μs,这里至少是10μs delayMicroseconds(10); digitalWrite(Trig, LOW); // 持续给触发脚低电 float Fdistance = pulseIn(Echo, HIGH); // 读取高电平时间(单位:微秒) Fdistance= Fdistance/58; //为什么除以58等于厘米, Y米=(X秒*344)/2 // X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58 //Serial.print("Distance:"); //输出距离(单位:厘米) //Serial.println(Fdistance); //显示距离 //Distance = Fdistance; return Fdistance; } void servopulse(int servopin,int myangle)/*定义一个脉冲函数,用来模拟方式产生PWM值*/ { pulsewidth=(myangle*11)+500;//将角度转化为500-2480 的脉宽值 digitalWrite(servopin,HIGH);//将舵机接口电平置高 delayMicroseconds(pulsewidth);//延时脉宽值的微秒数 digitalWrite(servopin,LOW);//将舵机接口电平置低 delay(20-pulsewidth/1000);//延时周期内剩余时间 } void front_detection() { //此处循环次数减少,为了增加小车遇到障碍物的反应速度 for(int i=0;i<=5;i++) //产生PWM个数,等效延时以保证能转到响应角度 { servopulse(servopin,95);//模拟产生PWM } Front_Distance = Distance_test(); //Serial.print("Front_Distance:"); //输出距离(单位:厘米) // Serial.println(Front_Distance); //显示距离 //Distance_display(Front_Distance); } void left_detection() { for(int i=0;i<=15;i++) //产生PWM个数,等效延时以保证能转到响应角度 { servopulse(servopin,175);//模拟产生PWM } Left_Distance = Distance_test(); //Serial.print("Left_Distance:"); //输出距离(单位:厘米) //Serial.println(Left_Distance); //显示距离 } void right_detection() { for(int i=0;i<=15;i++) //产生PWM个数,等效延时以保证能转到响应角度 { servopulse(servopin,5);//模拟产生PWM } Right_Distance = Distance_test(); //Serial.print("Right_Distance:"); //输出距离(单位:厘米) //Serial.println(Right_Distance); //显示距离 } String readTtl() { String comdata = ""; while (Serial.available()) { comdata += char(Serial.read()); delay(2); } return comdata; } void loop() { while(1) { { //有信号为LOW 没有信号为HIGH SR = digitalRead(SensorRight);//有信号表明在白色区域,车子底板上L3亮;没信号表明压在黑线上,车子底板上L3灭 SL = digitalRead(SensorLeft);//有信号表明在白色区域,车子底板上L2亮;没信号表明压在黑线上,车子底板上L2灭 SL_1 = digitalRead(SensorLeft_1); SR_1 = digitalRead(SensorRight_1); if (SL == LOW&&SR==LOW&&SL_1==LOW && SR_1== LOW) run(10); //调用前进函数 else if (SL_1 == LOW && SL == LOW && SR==HIGH && SR_1== LOW ) // 右循迹红外传感器,检测到信号,车子向左偏离轨道,向右转 left(30); else if(SL_1==LOW && SL== HIGH&&SR == LOW &&SR_1==LOW) right(30); else if(SL_1==HIGH && SL == LOW && SR==LOW && SR_1==LOW) sright(30); else if(SL_1==LOW && SL == LOW && SR==LOW && SR_1==HIGH) // 左循迹红外传感器,检测到信号,车子向右偏离轨道,向左转 sleft(30); else if(SL_1 == LOW && SL == LOW && SR==HIGH && SR_1== HIGH) left(30); else if(SL_1==HIGH && SL== HIGH&&SR == LOW &&SR_1==LOW) right(30); //else //停止 // brake_1(); } front_detection();//测量前方距离 if(Front_Distance < 20)//数值为碰到障碍物的距离,可以按实际情况设置 { brake(50); back(60); brake(100); left_detection();//测量左边距障碍物距离 right_detection();//测量右边距障碍物距离 brake(10); if((Left_Distance < 40 ) &&( Right_Distance < 40 ))//当左右两侧均有障碍物靠得比较近 sleft(180);//旋转掉头根据具体情况调整执行时间 else if(Left_Distance > Right_Distance)//左边比右边空旷 { left(60);//左转 brake(10);//刹车,稳定方向 } else if(Left_Distance < Right_Distance)//右边比左边空旷 {right(60);//右转 brake(10);//刹车,再次判定 } else run(1);//无障碍物,直行 } // 蓝牙主代码 String s = readTtl(); if (s == GO ) run(70);//如果按GO键,小车前进,直到按STOP键停止 else if (s == LEFT ) left(65); else if (s == STOP ) brake_1(); else if (s == RIGHT ) right(70); else if (s == BACK ) back(65); else if (s == SMALLLEFT ) left(20); else if (s == SMALLRIGHT) right(20); else if (s == SLEFT) sleft(90); } } ```

新手小白,使用灰度传感器循迹,感觉代码对了,但是就是找不到黑线,希望有大神指点一下?

#define index 12 const int LEDPins[index]={A0,A1,A2,A3,A4,A5,A8,A9,A10,A11,A12,A13}; int val[index]; int dirPin1=3; int stepperPin1=2; int dirPin2=7; int stepperPin2=6; void setup() { pinMode(A1,INPUT); pinMode(A2,INPUT); pinMode(A3,INPUT); pinMode(A4,INPUT); pinMode(A5,INPUT); pinMode(A12,INPUT); pinMode(A13,INPUT); pinMode(A8,INPUT); pinMode(A9,INPUT); pinMode(A10,INPUT); pinMode(A11,INPUT); pinMode(A0,INPUT); pinMode(3,OUTPUT); pinMode(2,OUTPUT); pinMode(7,OUTPUT); pinMode(6,OUTPUT); digitalWrite(3,LOW); digitalWrite(2,LOW); digitalWrite(7,LOW); digitalWrite(6,LOW);} void loop() { for(;;) for(int i=0;i<index;i++) { val[i]=analogRead(LEDPins[i]); if(val[i]<30) //黑线 {if(i<5) {turnleft(false,(5-i)*100);} else if(i==5) {stop;} else {turnright(false,(i-6)*100);} }} } void step(boolean dir,int steps) { digitalWrite(dirPin1,dir); digitalWrite(dirPin2,dir); delay(50); for(int i=0;i<steps;i++) { digitalWrite(stepperPin1, HIGH); digitalWrite(stepperPin2, HIGH); delayMicroseconds(100); digitalWrite(stepperPin1, LOW); digitalWrite(stepperPin2, LOW); delayMicroseconds(100); } } void turnleft(boolean dir,int zws) {digitalWrite(dirPin1,dir); delay(50); for(int i=0;i<zws;i++) {digitalWrite(stepperPin1,HIGH); delayMicroseconds(100); digitalWrite(stepperPin1,LOW); delayMicroseconds(100);} } void turnright(boolean dir,int zws) {digitalWrite(dirPin2,dir); delay(50); for(int i=0;i<zws;i++) {digitalWrite(stepperPin2,HIGH); delayMicroseconds(100); digitalWrite(stepperPin2,LOW); delayMicroseconds(100);} } void stop() {digitalWrite(stepperPin1,LOW); digitalWrite(stepperPin2,LOW);}

arduino智能小车避绕障碍物

arduino智能循迹避障小车,已经实现了避障和循迹,怎样才能在轨道上避开障碍物回到轨道上,用 超声波如何实现,怎样去调节超声波和舵机的角度。 ``` // 智能小车超声波避障实验(有舵机) // 程序中电脑打印数值部分都被屏蔽了,打印会影响小车遇到障碍物的反应速度 // 调试时可以打开屏蔽内容Serial.print,打印测到的距离 // 本实验控制速度的pwm值和延时均有调节,但还是配合实际情况,实际电量调节数值 //============================================================================= int Echo = A1; // Echo回声脚(P2.0) int Trig =A0; // Trig 触发脚(P2.1) int Front_Distance = 0;// int Left_Distance = 0; int Right_Distance = 0; int Left_motor_go=8; //左电机前进(IN1) int Left_motor_back=9; //左电机后退(IN2) int Right_motor_go=10; // 右电机前进(IN3) int Right_motor_back=11; // 右电机后退(IN4) int key=A2;//定义按键 A2 接口 int beep=A3;//定义蜂鸣器 A3 接口 const int SensorRight = 3; //右循迹红外传感器(P3.2 OUT1) const int SensorLeft = 4; //左循迹红外传感器(P3.3 OUT2) int SL; //左循迹红外传感器状态 int SR; //右循迹红外传感器状态 int servopin=2;//设置舵机驱动脚到数字口2 int myangle;//定义角度变量 int pulsewidth;//定义脉宽变量 int val; void setup() { Serial.begin(9600); // 初始化串口 //初始化电机驱动IO为输出方式 pinMode(Left_motor_go,OUTPUT); // PIN 8 (PWM) pinMode(Left_motor_back,OUTPUT); // PIN 9 (PWM) pinMode(Right_motor_go,OUTPUT);// PIN 10 (PWM) pinMode(Right_motor_back,OUTPUT);// PIN 11 (PWM) pinMode(key,INPUT);//定义按键接口为输入接口 pinMode(beep,OUTPUT); pinMode(SensorRight, INPUT); //定义右循迹红外传感器为输入 pinMode(SensorLeft, INPUT); //定义左循迹红外传感器为输入 //初始化超声波引脚 pinMode(Echo, INPUT); // 定义超声波输入脚 pinMode(Trig, OUTPUT); // 定义超声波输出脚 pinMode(servopin,OUTPUT);//设定舵机接口为输出接口 } //=======================智能小车的基本动作========================= //void run(int time) // 前进 void run() // 前进 { digitalWrite(Right_motor_go,HIGH); // 右电机前进 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,165);//PWM比例0~255调速,左右轮差异略增减 analogWrite(Right_motor_back,0); digitalWrite(Left_motor_go,LOW); // 左电机前进 digitalWrite(Left_motor_back,HIGH); analogWrite(Left_motor_go,0);//PWM比例0~255调速,左右轮差异略增减 analogWrite(Left_motor_back,160); //delay(time * 100); //执行时间,可以调整 } void brake() { digitalWrite(Right_motor_go,LOW); digitalWrite(Right_motor_back,LOW); digitalWrite(Left_motor_go,LOW); digitalWrite(Left_motor_back,LOW); //delay(time * 100);//执行时间,可以调整 } void brake(int time) //刹车,停车 { digitalWrite(Right_motor_go,LOW); digitalWrite(Right_motor_back,LOW); digitalWrite(Left_motor_go,LOW); digitalWrite(Left_motor_back,LOW); delay(time * 100);//执行时间,可以调整 } void left(int time) //左转(左轮不动,右轮前进) //void left() //左转(左轮不动,右轮前进) { digitalWrite(Right_motor_go,HIGH); // 右电机前进 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,180); analogWrite(Right_motor_back,0);//PWM比例0~255调速 digitalWrite(Left_motor_go,LOW); //左轮后退 digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor_go,0); analogWrite(Left_motor_back,0);//PWM比例0~255调速 delay(time * 100); //执行时间,可以调整 } void spin_left(int time) //左转(左轮后退,右轮前进) { digitalWrite(Right_motor_go,HIGH); // 右电机前进 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,200); analogWrite(Right_motor_back,0);//PWM比例0~255调速 digitalWrite(Left_motor_go,HIGH); //左轮后退 digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor_go,200); analogWrite(Left_motor_back,0);//PWM比例0~255调速 delay(time * 100); //执行时间,可以调整 } void right(int time) //void right() //右转(右轮不动,左轮前进) { digitalWrite(Right_motor_go,LOW); //右电机后退 digitalWrite(Right_motor_back,LOW); analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,0);//PWM比例0~255调速 digitalWrite(Left_motor_go,LOW);//左电机前进 digitalWrite(Left_motor_back,HIGH); analogWrite(Left_motor_go,0); analogWrite(Left_motor_back,200);//PWM比例0~255调速 delay(time * 100); //执行时间,可以调整 } void spin_right(int time) //右转(右轮后退,左轮前进) { digitalWrite(Right_motor_go,LOW); //右电机后退 digitalWrite(Right_motor_back,HIGH); analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,150);//PWM比例0~255调速 digitalWrite(Left_motor_go,LOW);//左电机前进 digitalWrite(Left_motor_back,HIGH); analogWrite(Left_motor_go,0); analogWrite(Left_motor_back,150);//PWM比例0~255调速 delay(time * 100); //执行时间,可以调整 } void back(int time) //后退 { digitalWrite(Right_motor_go,LOW); //右轮后退 digitalWrite(Right_motor_back,HIGH); analogWrite(Right_motor_go,0); analogWrite(Right_motor_back,150);//PWM比例0~255调速 digitalWrite(Left_motor_go,HIGH); //左轮后退 digitalWrite(Left_motor_back,LOW); analogWrite(Left_motor_go,150); analogWrite(Left_motor_back,0);//PWM比例0~255调速 delay(time * 100); //执行时间,可以调整 } //========================================================== void keysacn()//按键扫描 { int val; val=digitalRead(key);//读取数字7 口电平值赋给val while(!digitalRead(key))//当按键没被按下时,一直循环 { val=digitalRead(key);//此句可省略,可让循环跑空 } while(digitalRead(key))//当按键被按下时 { delay(10); //延时10ms val=digitalRead(key);//读取数字7 口电平值赋给val if(val==HIGH) //第二次判断按键是否被按下 { digitalWrite(beep,HIGH); //蜂鸣器响 while(!digitalRead(key)) //判断按键是否被松开 digitalWrite(beep,LOW); //蜂鸣器停止 } else digitalWrite(beep,LOW); //蜂鸣器停止 } } float Distance_test() // 量出前方距离 { digitalWrite(Trig, LOW); // 给触发脚低电平2μs delayMicroseconds(2); digitalWrite(Trig, HIGH); // 给触发脚高电平10μs,这里至少是10μs delayMicroseconds(10); digitalWrite(Trig, LOW); // 持续给触发脚低电 float Fdistance = pulseIn(Echo, HIGH); // 读取高电平时间(单位:微秒) Fdistance= Fdistance/58; //为什么除以58等于厘米, Y米=(X秒*344)/2 return Fdistance; } void servopulse(int servopin,int myangle)/*定义一个脉冲函数,用来模拟方式产生PWM值舵机的范围是0.5MS到2.5MS 1.5MS 占空比是居中周期是20MS*/ { pulsewidth=(myangle*11)+500;//将角度转化为500-2480 的脉宽值 这里的myangle就是0-180度 所以180*11+50=2480 11是为了换成90度的时候基本就是1.5MS digitalWrite(servopin,HIGH);//将舵机接口电平置高 90*11+50=1490uS 就是1.5ms delayMicroseconds(pulsewidth);//延时脉宽值的微秒数 这里调用的是微秒延时函数 digitalWrite(servopin,LOW);//将舵机接口电平置低 // delay(20-pulsewidth/1000);//延时周期内剩余时间 这里调用的是ms延时函数 delay(20-(pulsewidth*0.001));//延时周期内剩余时间 这里调用的是ms延时函数 } void front_detection() { //此处循环次数减少,为了增加小车遇到障碍物的反应速度 for(int i=0;i<=5;i++) //产生PWM个数,等效延时以保证能转到响应角度 { servopulse(servopin,90);//模拟产生PWM } Front_Distance = Distance_test(); void left_detection() { for(int i=0;i<=15;i++) //产生PWM个数,等效延时以保证能转到响应角度 { servopulse(servopin,175);//模拟产生PWM } Left_Distance = Distance_test(); } void right_detection() { for(int i=0;i<=15;i++) //产生PWM个数,等效延时以保证能转到响应角度 { servopulse(servopin,5);//模拟产生PWM } Right_Distance = Distance_test(); } //=========================================================== void loop() { keysacn(); //调用按键扫描函数 while(1) { SR = digitalRead(SensorRight);//有信号表明在白色区域,车子底板上L1亮;没信号表明压在黑线上,车子底板上L1灭 SL = digitalRead(SensorLeft);//有信号表明在白色区域,车子底板上L2亮;没信号表明压在黑线上,车子底板上L2灭 if (SL == LOW&&SR==LOW) run(); //调用前进函数 else if (SL == HIGH & SR == LOW)// 左循迹红外传感器,检测到信号,车子向右偏离轨道,向左转 spin_left(1); else if (SR == HIGH & SL == LOW) // 右循迹红外传感器,检测到信号,车子向左偏离轨道,向右转 spin_right(1); else // 都是黑色, 停止 brake(); front_detection();//测量前方距离 if(Front_Distance < 30)//当遇到障碍物时 { brake(2);//先刹车 back(2);//后退减速 brake(2);//停下来做测距 left_detection();//测量左边距障碍物距离 right_detection();//测量右边距障碍物距离 if((Left_Distance < 30 ) &&( Right_Distance < 30 ))//当左右两侧均有障碍物靠得比较近 spin_left(0.7);//旋转掉头 else if(Left_Distance > Right_Distance)//左边比右边空旷 { left(3);//左转 brake(1);//刹车,稳定方向 } else//右边比左边空旷 { right(3);//右转 brake(1);//刹车,稳定方向 } } else { run(); //无障碍物,直行 } } } ``` ``` ```

Arduino循迹小车差速转向公式的问题

请问如下的差速控制原理,采用后轮差速转向,前面定义的t和l可能是轮子的某个参数,这个公式的具体意义以及t和l的意义,求解释 #define T 0.156f #define L 0.1445f #define pi 3.1415926 Target_A = velocity * (1 + T * tan(angle * pi / 180) / 2 / L); Target_B = velocity * (1 - T * tan(angle * pi / 180) / 2 / L);//后轮差速 ``` ```

寻迹小车竞速比赛制作

本人大一新生,对这方面零基础,麻烦告诉一下制作思路,和各方面的制作方法。电路图,程序

寻迹小车红外传感器竞赛

做寻迹小车在网上买,组装,都需要买什么???零件,具体一些,或者说装寻迹小车都需要什么零件

求一个用PWM 调速电机,控制轮子前进后退左转右转的程序(基于51单片机的那个)

因为要做循迹小车,第一个项目是循迹8字黑线 作为一个新手,很多都不懂,谢谢大佬们了

扫地机器人设计到哪些知识,主要是电机的控制吗

感觉和循迹小车差不太多把,又涉及到算法吗,是哪些东西的算法,又可以给参考的吗,谢谢啦

c#遍历图某一个网络图找出从起点到终点所有路径的递归回溯问题

图片所示的这个函数,当n>i 结束函数了之后,为什么又回去执行倒数第四行的findall递归函数?什么时候这个方法全部结束呢,也就是不再返回去执行findall?求大神指点![图片说明](https://img-ask.csdn.net/upload/201609/05/1473081667_445587.png)

linux下利用/proc进行进程树的打印

在linux下利用c语言实现的进程树的打印,主要通过/proc下的目录中的进程文件,获取status中的进程信息内容,然后利用递归实现进程树的打印

设计模式(JAVA语言实现)--20种设计模式附带源码

课程亮点: 课程培训详细的笔记以及实例代码,让学员开始掌握设计模式知识点 课程内容: 工厂模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、原型模型、代理模式、单例模式、适配器模式 策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式 课程特色: 笔记设计模式,用笔记串连所有知识点,让学员从一点一滴积累,学习过程无压力 笔记标题采用关键字标识法,帮助学员更加容易记住知识点 笔记以超链接形式让知识点关联起来,形式知识体系 采用先概念后实例再应用方式,知识点深入浅出 提供授课内容笔记作为课后复习以及工作备查工具 部分图表(电脑PC端查看):

Python数据分析与挖掘

92讲视频课+16大项目实战+源码+¥800元课程礼包+讲师社群1V1答疑+社群闭门分享会=99元 &nbsp; 为什么学习数据分析? &nbsp; &nbsp; &nbsp; 人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。 &nbsp; &nbsp; &nbsp; 从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。 &nbsp;&nbsp; 本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。 &nbsp; 二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。 &nbsp; 三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。 &nbsp; 四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。 &nbsp; 五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。

广工操作系统课程设计(文档+代码+可执行文件)

实现作业调度(先来先服务)、进程调度功能(时间片轮转) 实现内存管理功能(连续分配)。 实现文件系统功能(选作) 这些功能要有机地连接起来

Only老K说-爬取妹子图片(简单入门)

安装第三方请求库 requests 被网站禁止了访问 原因是我们是Python过来的 重新给一段 可能还是存在用不了,使用网页的 编写代码 上面注意看匹配内容 User-Agent:请求对象 AppleWebKit:请求内核 Chrome浏览器 //请求网页 import requests import re //正则表达式 就是去不规则的网页里面提取有规律的信息 headers = { 'User-Agent':'存放浏览器里面的' } response = requests.get

linux“开发工具三剑客”速成攻略

工欲善其事,必先利其器。Vim+Git+Makefile是Linux环境下嵌入式开发常用的工具。本专题主要面向初次接触Linux的新手,熟练掌握工作中常用的工具,在以后的学习和工作中提高效率。

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

Python数据清洗实战入门

本次课程主要以真实的电商数据为基础,通过Python详细的介绍了数据分析中的数据清洗阶段各种技巧和方法。

2019 Python开发者日-培训

本次活动将秉承“只讲技术,拒绝空谈”的理念,邀请十余位身处一线的Python技术专家,重点围绕Web开发、自动化运维、数据分析、人工智能等技术模块,分享真实生产环境中使用Python应对IT挑战的真知灼见。此外,针对不同层次的开发者,大会还安排了深度培训实操环节,为开发者们带来更多深度实战的机会。

apache-jmeter-5.1.1(Requires Java 8+).zip

。Apache JMeter 5.1.1 (Requires Java 8+),需要jdk8以上的版本。

数通HCNP中文理论全套教材.rar

内涵HCNP-IENP中文理论书-内文,

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

图书管理系统(Java + Mysql)我的第一个完全自己做的实训项目

图书管理系统 Java + MySQL 完整实训代码,MVC三层架构组织,包含所有用到的图片资源以及数据库文件,大三上学期实训,注释很详细,按照阿里巴巴Java编程规范编写

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

2021考研数学张宇基础30讲.pdf

张宇:博士,全国著名考研数学辅导专家,教育部“国家精品课程建设骨干教师”,全国畅销书《张宇高等数学18讲》《张宇线性代数9讲》《张宇概率论与数理统计9讲》《张宇考研数学题源探析经典1000题》《张宇考

专为程序员设计的数学课

<p> 限时福利限时福利,<span>15000+程序员的选择!</span> </p> <p> 购课后添加学习助手(微信号:csdn590),按提示消息领取编程大礼包!并获取讲师答疑服务! </p> <p> <br> </p> <p> 套餐中一共包含5门程序员必学的数学课程(共47讲) </p> <p> 课程1:《零基础入门微积分》 </p> <p> 课程2:《数理统计与概率论》 </p> <p> 课程3:《代码学习线性代数》 </p> <p> 课程4:《数据处理的最优化》 </p> <p> 课程5:《马尔可夫随机过程》 </p> <p> <br> </p> <p> 哪些人适合学习这门课程? </p> <p> 1)大学生,平时只学习了数学理论,并未接触如何应用数学解决编程问题; </p> <p> 2)对算法、数据结构掌握程度薄弱的人,数学可以让你更好的理解算法、数据结构原理及应用; </p> <p> 3)看不懂大牛代码设计思想的人,因为所有的程序设计底层逻辑都是数学; </p> <p> 4)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; </p> <p> 5)想修炼更好的编程内功,在遇到问题时可以灵活的应用数学思维解决问题。 </p> <p> <br> </p> <p> 在这门「专为程序员设计的数学课」系列课中,我们保证你能收获到这些:<br> <br> <span> </span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">①价值300元编程课程大礼包</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">②应用数学优化代码的实操方法</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">③数学理论在编程实战中的应用</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">④程序员必学的5大数学知识</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">⑤人工智能领域必修数学课</span> </p> <p> <br> 备注:此课程只讲程序员所需要的数学,即使你数学基础薄弱,也能听懂,只需要初中的数学知识就足矣。<br> <br> 如何听课? </p> <p> 1、登录CSDN学院 APP 在我的课程中进行学习; </p> <p> 2、登录CSDN学院官网。 </p> <p> <br> </p> <p> 购课后如何领取免费赠送的编程大礼包和加入答疑群? </p> <p> 购课后,添加助教微信:<span> csdn590</span>,按提示领取编程大礼包,或观看付费视频的第一节内容扫码进群答疑交流! </p> <p> <img src="https://img-bss.csdn.net/201912251155398753.jpg" alt=""> </p>

DDR5_Draft_Spec_Rev05c.pdf

DDR5 spec

Java面试史上最全的JAVA专业术语面试100问 (前1-50)

前言: 说在前面, 面试题是根据一些朋友去面试提供的,再就是从网上整理了一些。 先更新50道,下一波吧后面的也更出来。 求赞求关注!! 废话也不多说,现在就来看看有哪些面试题 1、面向对象的特点有哪些? 抽象、继承、封装、多态。 2、接口和抽象类有什么联系和区别? 3、重载和重写有什么区别? 4、java有哪些基本数据类型? 5、数组有没有length()方法?String有没有length()方法? 数组没有length()方法,它有length属性。 String有length()方法。 集合求长度用

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

Python界面版学生管理系统

前不久上传了一个控制台版本的学生管理系统,这个是Python界面版学生管理系统,这个是使用pycharm开发的一个有界面的学生管理系统,基本的增删改查,里面又演示视频和完整代码,有需要的伙伴可以自行下

2019数学建模A题高压油管的压力控制 省一论文即代码

2019数学建模A题高压油管的压力控制省一完整论文即详细C++和Matlab代码,希望对同学们有所帮助

4小时玩转微信小程序——基础入门与微信支付实战

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

实现简单的文件系统

实验内容: 通过对具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 要求: 1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简

NS2与网络仿真模拟实验教程

文档时ppt格式,从各个层面,结合具体事例解释说明了个NS2模块中的各部分功能与编译技巧、说明等。

Java 最常见的 200+ 面试题:面试必备

这份面试清单是从我 2015 年做了 TeamLeader 之后开始收集的,一方面是给公司招聘用,另一方面是想用它来挖掘在 Java 技术栈中,还有那些知识点是我不知道的,我想找到这些技术盲点,然后修复它,以此来提高自己的技术水平。虽然我是从 2009 年就开始参加编程工作了,但我依旧觉得自己现在要学的东西很多,并且学习这些知识,让我很有成就感和满足感,那所以何乐而不为呢? 说回面试的事,这份面试...

相关热词 c#中如何设置提交按钮 c#帮助怎么用 c# 读取合并单元格的值 c#带阻程序 c# 替换span内容 c# rpc c#控制台点阵字输出 c#do while循环 c#调用dll多线程 c#找出两个集合不同的
立即提问