Общение

russian-robots@conference.jabber.ru - Чат, в котором можно поболтать об электронике, создании роботов и программировании.
Как мне зайти в чат?

 Обсуждение

Не стесняйтесь оставлять комментарии, мне интересно и важно ваше мнение!
  • Wadimka: Подскажу где взять недорого строчники, идете/едите в любую контору которая ...
  • Vladimir: Об этом датчике я тоже знаю, хотелось с чегото начать изучать МК, а не слеп ...
  • Vladimir: Спсиба
  • Евгений: Стоит поставить инфракрасный датчик движения и не городить ничего :) Литера ...
  • Vladimir: Добрый день Евгений. Это мне для дома в кладовку. При входе на двери стоит ...
  • Евгений: Фотобарьер? По подробнее расскажите.
  • Vladimir: Добрый день. Прошу вас помочь в реализации пректа фотобарер на Tiny45, со с ...
  • Евгений: С таким кодом даже http://caxapa.ru/codebook/?search=BLSH ничего не находит ...
  • Пример использования дальномера Sharp GP2D12

    18th Июнь 2010 | Метки:

    Эксперименты с дальномером продолжаются :-)

    Сегодня закрепил его на роботе (это временный вариант) и провел первые испытания.

    Для проверки я сделал так, чтобы робот отъезжал от предметов  если приблизится на ~30 см и разворачивался.

    Программа

    Поскольку дальномер аналоговый, то обрабатывать данные с него будем при помощи аналогово – цифрового преобразователя (АЦП или ADC).

    Код программы:

    //Микроконтроллер тактируется от кварца на 14.3 МГц
    #include <mega16.h>
    #include <delay.h>
    #define new_adc(); ADCSRA=0b11001110;
    double adc_result;
    unsigned int adc_data;
    interrupt [ADC_INT] void adc_isr(void)
    {
    adc_data=ADCW;
    }
     
    double voltage(void)
    {
    new_adc();
    return ((adc_data*2.56)/1024);
    }
     
    void forward()
    {
    if(PINB!=0b00000101)
    PORTB = 0b00000101;
    }
    void backward()
    {
    if(PINB!=0b00001010)
     PORTB =0b00001010;
    }
    void right()
    {
    if(PINB!=0b00000110)
    PORTB=0b00000110;
    }
    void left()
    {
     if(PINB!=0b00001001)
     PORTB = 0b00001001;
    }
    void stop()
    {
     PORTB = 0x00;
    }
     
    void main (void)
    {
    ADMUX=0b11000001;
    ADCSRA=0b10001110;
    #asm("sei");
    while(1)
    {
     forward();
     if(voltage() >1.7) //если напряжение на дальномере больше 1.7 вольт (~30см для дальномера Sharp GP2D12)
     {
     backward(); //едем назад
     delay_ms(500);
     right(); //поворачиваем направо
     delay_ms(500);
     }
    }
    }

    Дальномер подключен к PA1.

    Драйвер двигателей я использовал L293D и подключил его вот так:

    Input 1 – PB0

    Input 2 – PB1

    Input 3 – PB2

    Input 4 – PB3

    Enable1, 2 подключить к + 5в.

    Понравилась статья? Нажмите на любую из кнопок:

    0
    1. Саша
      12th Январь 2012 в 16:22

      К сожалению видео не работает :( «удалено пользователем»(((((

      Thumb up 0 Thumb down 0

      [Ответить]

      Евгений Reply:

      Оно было в ужасном качестве и не особо интересное.

      [Ответить]

    :D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: