⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 migong.txt

📁 走迷宫 自动绕行 红外线导航 遇到障碍物自动避开
💻 TXT
字号:
#include<avr/BoeBot.h>
#include<avr/usta.h>
int PC0_state(void)
{
	return (PINC&0x01)?1:0;
}
int PC1_state(void)
{
	return (PINC&0x02)?1:0;
}
void Forward(void)
{
	PORTC|=_BV(PC3);
	delay_nus(1700);
    PORTC&=~_BV(PC3);
	PORTC|=_BV(PC2);
	delay_nus(1300);
	PORTC&=~_BV(PC2);
	delay_nms(20);
}
void Left_Turn(void)
{
    for(uint16_t i=1;i<=30;i++)
	{
		PORTC|=_BV(PC3);
		delay_nus(1300);
        PORTC&=~_BV(PC3);
		PORTC|=_BV(PC2);
		delay_nus(1300);
		PORTC&=~_BV(PC2);
		delay_nms(20);
	}
}
void Right_Turn(void)
{
    for(uint16_t i=1;i<=45;i++)
	{
		PORTC|=_BV(PC3);
		delay_nus(1700);
        PORTC&=~_BV(PC3);
		PORTC|=_BV(PC2);
		delay_nus(1700);
		PORTC&=~_BV(PC2);
		delay_nms(20);
	}
}
void Backward(void)
{
    for(uint16_t i=1;i<=9;i++)
	{
		PORTC|=_BV(PC3);
		delay_nus(1300);
        PORTC&=~_BV(PC3);
		PORTC|=_BV(PC2);
		delay_nus(1700);
		PORTC&=~_BV(PC2);
		delay_nms(20);
	}
}
int main(void)
{
	usta_Init();
	int irDetectLeft;
	int irDetectRight;
	DDRD|=_BV(PD6)|_BV(PD7);
	DDRC|=_BV(PC2)|_BV(PC3);
	printf("Program Running!");	
	for(uint16_t counter=1;counter<=6000;counter++)//开始/复位信号
	{
	    PORTD|=_BV(PD7);
		delay_nus(166);
		PORTD&=~_BV(PD7);
       	delay_nus(166);
	}
	while(1)
	{
		for(uint16_t counter=0;counter<11.5;counter++)
		{
			PORTD|=_BV(PD6);
			delay_nus(13);
			PORTD&=~_BV(PD6);
		    delay_nus(13);
		}
		irDetectLeft=PC0_state();
		irDetectRight=PC1_state();
		if((irDetectLeft==0)&&(irDetectRight==0))//两边同时接收到红外线
		{
			Backward();
			Left_Turn();
			
		}
		else if(irDetectLeft==0)//只有左边接收到红外线
		{
			Backward();
			Right_Turn();
		}
		else if(irDetectRight==0)//只有右边接收到红外线
		{
			Backward();
			Left_Turn();
		}
		else 
			Forward();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -