首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于atmega8的直线跟随式机器人

基于atmega8的直线跟随式机器人
EN

Stack Overflow用户
提问于 2014-02-03 11:59:27
回答 2查看 4.7K关注 0票数 0

我是AVR编程的新手。我正在尝试建立一个使用atmega8的直线跟随器机器人,它可以在两个红外传感器检测到黑色时自动停车。我的传感器连接到PORTD2PORTD3,我的电机连接到PORTB0PORTB4。我打算跑起来,然后把马达延迟3秒,然后关掉它们,但是机器人已经开始随意地工作了。请帮我找出我的代码出了什么问题。

代码语言:javascript
复制
#include<avr/io.h>
#include<util/delay.h>
int main()
{
    DDRD=0b00000000;
    DDRB=0b11111111;
    uint8_t sensor;
    uint8_t A= 0b00000000;
    while(1)
    {
        A=0b00000000;
        sensor = PIND;
        A= sensor|0b11110011;
        switch(A)
        {
        case 0b11110011:
            PORTB=0b00010001;
            _delay_ms(3000);
            PORTB=0b00000000;
            break;
        case 0b11111011:
            PORTB=0b00000001;
            break;
        case 0b11110111:
            PORTB=0b00010000;
            break;
        case 0b11111111:
            PORTB=0b00010001;
            break;
        }
    }
    return 0;
} 
EN

回答 2

Stack Overflow用户

发布于 2014-02-03 12:16:05

您可以尝试将传感器声明为易失性:

volatile uint8_t sensor;

票数 0
EN

Stack Overflow用户

发布于 2014-02-04 00:42:19

如果您使用任何优化进行编译,则延迟函数不能正常工作。

否则,它看起来很简单,这取决于传感器和马达的细节。这种行为有什么不稳定之处?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21519435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档