循迹小车原理图和部分程序
前 言编辑站长网()
编辑站长网()
其实循迹原理很简单,如下图,就是红外反射照到黑线上方时光都被黑线吸收了
(注意要调节好反射管到地面慕容九 的距离),接着反入射模块就输出一个低电平给控制
器(单片机),然后单片机就根据这个低电平执行动作(左转或者右尼采经典语录 转)
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar front;
void delayus(uint us)
{while(us)us--;}
/*一毫秒的延时*/
void delay(uint i)
{
unsigned int a, b;
for (a = 1; a < i; a++)
{
for (b = 1; b<1141; b++)
{
;
}
}
}
/******************世界文学史 * 一毫秒的延时**********************/
void delayms(uint ms)
{
uint i,j;
for(i=0;i for(j=0;j<1141;j++); } /**********************小车停车函数***************************/ void stop() { OCR1A=0;OCR1B=0; PORTD&=~BIT(PD0);PORTD&=~BIT(PD1);PORTD&=~BIT(PD2);PORTD&=~BIT(PD3); } /*****************小车向前向后函数*****************/ void go(uchar speed) { OCR1A=speed; OCR1B=speed; if(front==1) { PORTD&=~BIT(PD0);PORTD&=~BIT(PD1);PORTD|=BIT(PD2);PORTD|=BIT(PD3 ); } el { OCR1A=200; OCR1B=200; PORTD&=~BIT(PD0);PORTD&=~BIT(PD1);PORTD|=BIT(PD2);PORTD|=BIT(PD3); } } /**************小车向左向右的函数*******************/ void l_r(uchar p) { switch(p) { ca 'r' : {PORTD&=~BIT(PD0);PORTD&=~BIT(PD6);PORTD|=BIT(PD1);PORTD|=BIT( PD7); OCR1A=200;OCR1B=0;break;} ca 'l' : {PORTD&=~BIT(PD0);PORTD&=~BIT(PD6);PORTD|=BIT(PD1);PORTD|=BIT( PD7); OCR1A=0;OCR1B=200;break;} } } vo感恩议论文
id main() { uchar temp,active; DDRA=0X00; DDRB=0X00; PORTB = 0xFF; DDRC = 0xFF; PORTC = 0x03; DDRD = 0xFF; PORTD = 0xFF;/*端口设置*/ TCCR1A=0xA1; TCCR1B=0x03;/*8位相位修正PWM,64分频*/ TCNT1H=0xFF; TCNT1L=0XFF; delay(300); while(1) { front=1; temp=PINB&0XFF; if(temp!=0XFF) { switch(temp)//////这就是根据反射模块传给单片机的信号进行各动作 { ca 0b11111110:{l_r('r')尊重劳动
;break;} ca 0b11111101:{l_r('l');break;} ca 0b11111011:{l_r('r');break;} ca 0b11110111:{l_r('l');break;} ca 0b11101111:{l_r('r');break;} ca 0b11011111:{l_r('l');b店铺转让协议
reak;} ca 0b10111111:{stop();delay(1000);break;} default: go(80); } } } } 循迹小车原理图和部分程序 编辑:robotain 来源:网络 2009-12-08 发表评论 其实循迹原理很简单,如下图,就是红外反射照到黑线上方时光都被黑线吸收了 (注意要调节好反射管到地面的距离),接着反入射模块就输出一个低电平给控制 器(单片机),然后单片机就根据这个低电平执行动作(左转或者右转) #include #include #define uchar unsigned char #define uint unsigned int uchar front; void delayus(uint us) {while(us)us--;} /*一毫秒的延时*/ void delay(uint i) { unsigned int a, b; for (a = 1; a < i; a++) { for (b = 1; b<1141; b++) { ; } } } /中秋诗句
******************* 一毫秒的延时**********************/ void delayms(uint ms) { uint i,j; for(i=0;i for(j=0;j<1141;j++); } /**********************小车停车函数***************************/ void stop() { OCR1A=0;OCR1B=0; PORTD&=~BIT(PD0);PORTD&=~BIT(PD1);PORTD&=~BIT(PD2);PORTD&=~BIT(PD3); } /*****************小车向前向后函数*****************/ void go(uchar speed) { OCR1A=speed; OCR1B=speed; if(front==1) { PORTD&=~BIT(PD0);PORTD&=~BIT(PD1);PORTD|=BIT(PD2);PORTD|=BIT(PD3 ); } el { OCR1A=200; OCR1B=200; PORTD&=~BIT(PD0);PORTD&=~BIT(PD1);PORTD|=BIT(PD2);PORTD|=BIT(PD3); } } /**************小车向左向右的函数*******************/ void l_r(uchar p) { switch(p) { ca 'r' : {PORTD&=~BIT(PD0);PORTD&=~BIT(PD6);PORTD|=BIT(PD1);PORTD|=BIT( PD7); OCR1A=200;OCR1B=0;break;} ca 'l' : {PORTD&=~BIT(PD0);PORTD&=~BIT(PD6);PORTD|=BIT(PD1);PORTD|=BIT( PD7); OCR1A=0;OCR1B=200;break;} } } void main() { uchar temp,active; DDRA=0X00; DDRB=0X00; PORTB = 0xFF; DDRC = 0xFF; PORTC = 0x03; DDRD = 0xFF; PORTD = 0xFF;/*端口设置*/ TCCR1A=0xA1; TCCR1B=0x03;/*8位相位修正PWM,64分频*/ TCNT1H=0xFF; TCNT1L=0XFF; delay(300); while(1) { front=1; temp=PINB&0XFF; if(temp!=0XFF) { switch(temp)//////这就是根据反射模块传给单片机的信号进行各动作 { ca 0b11111110:{l_r('r');break;} ca 0b11111101:{l_r('l');break;} ca 0b11111011:{l_r('r');break;} ca 0b11110111:{l_r('l');break;} ca 0b11101111:{l_r('r');break;} ca 0b11011111:{l_r('l');break;} ca 0b10111111:{stop();delay(1000);break;} default: go(80); } } } }
本文发布于:2023-04-26 17:37:10,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/82/515851.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |