программа для робота для соревнований "кегельринг"

программа для робота для соревнований "кегельринг"

Сообщение chernyshovnikita » 28 янв 2013, 11:44

Здравствуйте! Хотелось бы получить помощь от знающих людей, вопрос является немного "нубским", но все же:
написал с друзьями программу на AVR studio, робот построен на мк atmega16a, но при пробе программы она отказалась работать, вот сама программа:
Код: Выделить всё
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#define IN_SEN1 PB2
#define IN_SEN2 PB4
#define enable_m PB3
#define enable_m2 PA0
#define motor4 PA1
#define motor3 PA6
#define motor2 PA5
#define motor1 PA2
#define speed_v 100

void set_forward()
{
   //OCR0 = speed_v;
   PORTB|=_BV(enable_m);
   PORTA&=~_BV(motor2);
   PORTA|=_BV(motor1);
}

void set_back()
{
   //OCR0 = speed_v;
   PORTB|=_BV(enable_m);
   PORTA&=~_BV(motor1);
   PORTA|=_BV(motor2);
}

void right()
{
   PORTA|=_BV(enable_m2);
   PORTA|=_BV(motor3);
   _delay_ms(300);
   PORTA&=~_BV(enable_m2);
}

void left()
{
   PORTA|=_BV(enable_m2);
   PORTA|=_BV(motor4);
   _delay_ms(300);
   PORTA&=~_BV(enable_m2);
}

void stop()
{
   //OCR0 = 0;
   PORTB&=~_BV(enable_m);
}

int main()
{
   DDRB &= ~_BV(IN_SEN1) | ~_BV(IN_SEN2);
   //PORTB|= _BV(IN_SEN1) | _BV(IN_SEN2);
   DDRA |= _BV(motor1) | _BV(motor2) | _BV(motor3) |_BV(motor4) | _BV(enable_m2);
   PORTA&=(~_BV(motor1)) | (~_BV(motor2));
   DDRB |= _BV(enable_m);
   //TCCR0 |=(1<<CS00) | (1<<COM01) | (1<<WGM00) | (1<<WGM01);
   while(1)
   {
      if (!(PINB & (1<<IN_SEN1)))//Если спереди нет чёрной линии, то..
      {
         set_forward();//..едем вперёд
      }else //Если наткнулись на линию
      {
         stop();//Останавливаемся
         right();//Выворачиваем колёса вправо
         set_back();//Отъежаем
         //if(PINB & (1<<IN_SEN2))//Если встретим сзади чёрную линию, то..
         //{
         //   stop();//..Остановимся
         //   left();//Выровняем колёса, повернув их в лево
         //   set_forward();//Поедем вперёд
         //}
      }
   }
   return 0;
}

В отладчике проверил - вроде, все норм, но не работает в итоге, помогите, пожалуйста в данном вопросе
chernyshovnikita
 
Сообщения: 2
Зарегистрирован: 28 янв 2013, 11:33
programming: c? c++

Re: программа для робота для соревнований "кегельринг"

Сообщение chernyshovnikita » 28 янв 2013, 11:49

при попадании света на фототранзистор IN_SEN1, робот, как и надо, едет вперед, но в противном случае он встает, выворачивает колеса и все, больше ничего не происходит, назад он не отъезжает
chernyshovnikita
 
Сообщения: 2
Зарегистрирован: 28 янв 2013, 11:33
programming: c? c++


Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron
© 2009-2019 |  О проекте  |  Политика Конфиденциальности  |