福建船政交通学院
右边传感器检测到黑线时,主控芯片控制前轮电机正转,车体向右边修正;当黑线在车体的中间,中间的传感器一直检测到黑线,这样小车就会沿着黑线自动循迹。主程序流程如图3-6所示。
图3-6 循迹车程序流程图
3.2.2 本系统编译器
本设计采用C语言来编译程序。模块化结构程序的设计,可以使系统软件便于调试与优化,也使其他人更好地理解和阅读系统的程序设计。因此,软件的设计上,运用了模块化程序的结构对软件进行设计,使得程序变得更加直观易懂。
随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,ARDUINO IDE软件是目前Arduino专用开发的软件,界面清晰整洁,编程简便。.
ARDUINO IDE开发系统可用于编辑C。由编译器编译可以生成目标文件(.ino)。
13
Arduino循迹小车 3.2.3 实物展示
图3-7
小车全景图
14
福建船政交通学院
3.4 部分程序展示 unsigned int p_1=22; unsigned int p_2=24; unsigned int p_3=26; unsigned int p_4=28; unsigned int p_5=30; unsigned int p_6=32; #define l 1 #define r 2 #define rl 3 unsigned int num,co,c=0,mum,d=0; int t; void setup() { pinMode(2,OUTPUT);//lift back pinMode(3,OUTPUT);//lift go pinMode(4,OUTPUT);//right back pinMode(5,OUTPUT);//right go for(t=22;t<=52;t++)
{ pinMode(t, INPUT); } } void stop (unsigned char m) { switch(m) { case r : analogWrite(5,0); analogWrite(4,0); case l : analogWrite(3,0); analogWrite(2,0); case rl : analogWrite(5,0); analogWrite(4,0); analogWrite(3,0); analogWrite(2,0); default : break; } } void FOLL_FINE(unsigned int ti) 15 Arduino循迹小车 { while(1) { num=0; p_1=digitalRead(22); p_2=digitalRead(24); p_3=digitalRead(26); p_4=digitalRead(28); p_5=digitalRead(30); p_6=digitalRead(32); if(p_1) num++; if(p_2) num++; if(p_3) num++; if(p_4) num++; if(p_5) num++; if(p_6) num++; if(num>3) { //for(co=0;co<200;co++); num=0; p_1=digitalRead(22); p_2=digitalRead(24); p_3=digitalRead(26); p_4=digitalRead(28); p_5=digitalRead(30); p_6=digitalRead(32); if(p_1) num++; if(p_2) num++; if(p_3) num++; if(p_4) num++; if(p_5) num++; if(p_6) num++; if(num>3) { c=c+1; } if(c==ti) { analogWrite(2,0); analogWrite(4,0); analogWrite(3,40); analogWrite(5,40); delay(350); 16
相关推荐: