роботы робототехника микроконтроллеры


 Страниц (4): « 1 2 3 [4]   

> Без описания
rgsv Post Id


Капитан


Сообщений всего: 52
Дата рег-ции: Сент. 2012  



Нашел вариант, печать на глянцевой фотобумаге.
Результат вроде ничего. Травить не буду. Потому что плата потеряла актуальность с переходом на I2c
 
 Top
rgsv Post Id


Капитан


Сообщений всего: 52
Дата рег-ции: Сент. 2012  



Вот пока что получилось.
https://lh3.googleusercontent.co...045/DSC_0009.jpg

На серву ставится Ультразвуковой дальномер.
 
 Top
nestandart Супермодератор Post Id



Супер-модератор


Сообщений всего: 1490
Дата рег-ции: Сент. 2010  



УЗ дальномер для робота не подходит . Слишком тормозит программу. Так же не видит препятствия, расположеные к нему, под острым углом.
 
 Top
rgsv Post Id


Капитан


Сообщений всего: 52
Дата рег-ции: Сент. 2012  



nestandart пишет:
УЗ дальномер для робота не подходит . Слишком тормозит программу. Так же не видит препятствия, расположеные к нему, под острым углом.


По углам , будут TSOP стоять. Дальномер видеть стены и крупные предметы ,
До установки сервы дальномер был направлен просто вперёд, не плохо катался, ни на что не натыкался.
И почему он тормозит программу ?
 
 Top
nestandart Супермодератор Post Id



Супер-модератор


Сообщений всего: 1490
Дата рег-ции: Сент. 2010  



Цитата:
И почему он тормозит программу ?


Как вы его опрашиваете ?

Нужно время чтобы отправить сигнал, так же нужно времямя чтобы дождаться его ответа.

Если программа простая то проблем нет а если большая и сложная проблемы появляются серьезные.
 
 Top
rgsv Post Id


Капитан


Сообщений всего: 52
Дата рег-ции: Сент. 2012  



nestandart пишет:
Цитата:
И почему он тормозит программу ?


Как вы его опрашиваете ?

Нужно время чтобы отправить сигнал, так же нужно времямя чтобы дождаться его ответа.

Если программа простая то проблем нет а если большая и сложная проблемы появляются серьезные.



Стибрил кусок кода ,с внешним прерыванием.
По нарастающему фронту включает таймер, по спадающему , считает дистанцию исходя из длины импульса.
 
 Top
nestandart Супермодератор Post Id



Супер-модератор


Сообщений всего: 1490
Дата рег-ции: Сент. 2010  



Покажите этот кусок.
 
 Top
rgsv Post Id


Капитан


Сообщений всего: 52
Дата рег-ции: Сент. 2012  



Да извините , этот кусок я выпил как не рабочий.
Сейчас.
Ожидаю наличия сигнала в while
врубаю таймер и ожидаю конца сигнала в while.

Однако интересно , почему не работает от внешнего прерывания.
Суть была такова.
Прерывание настроено на изменение уровня.
Если в прирывании в порте 1 нулится счётчик таймера. если в порту 0 . Расчитываеться результат и записывался во внешнюю переменную .
 
 Top
nestandart Супермодератор Post Id



Супер-модератор


Сообщений всего: 1490
Дата рег-ции: Сент. 2010  



Цитата:
Ожидаю наличия сигнала в while
врубаю таймер и ожидаю конца сигнала в while.


Вот вот. Это ваше "ожидаю" и тормозит программу.
 
 Top
rgsv Post Id


Капитан


Сообщений всего: 52
Дата рег-ции: Сент. 2012  



nestandart пишет:
Цитата:
Ожидаю наличия сигнала в while
врубаю таймер и ожидаю конца сигнала в while.


Вот вот. Это ваше "ожидаю" и тормозит программу.

Это я понимаю , но вы не ответили почему не работает на прерывании.
Вообще наверное цепану датчик на tiny, и буду опрашивать по i2c, если прерывание не раздолбаю
 
 Top
nestandart Супермодератор Post Id



Супер-модератор


Сообщений всего: 1490
Дата рег-ции: Сент. 2010  



Цитата:
но вы не ответили почему не работает на прерывании


Какой МК ? Какой язык ?
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



rgsv пишет:
почему не работает на прерывании.

например по тому что прерывания не включены
если включены, вставте мигнуть диодом прямо внутри обработчика, потом уберете (или не уберете, красивее будет, ехать и мигать Улыбка )
 
 Top
rgsv Post Id


Капитан


Сообщений всего: 52
Дата рег-ции: Сент. 2012  



Mk Mega8 на стенде Mega32 на роботе. Язык С.

Значит , обработку ответа от датчика SR-04 можно повесить на прерывания. И не работало только по какой то ошибке в коде?.
Окей , закончу с синезубом вернусь к датчикам , напишу этот кусок кода сам изходя из текущих знаний которые несомненно подросли с тех пор
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



rgsv пишет:
знаний которые несомненно подросли с тех пор
надеемся
 
 Top
rgsv Post Id


Капитан


Сообщений всего: 52
Дата рег-ции: Сент. 2012  



Ну наконец я вернулся к работе Улыбка
Код для датчика расстояния SR40 На прерывании в Ардуино версии.
Выглядит так.

CODE:

int led = 13;
int trig = 3;

volatile int distance = 0;
volatile unsigned long sonic_time=0;
volatile unsigned long echo_time = 0;
volatile bool sonic_busy = false;

// the setup routine runs once when you press reset:
void setup() {
Serial.begin(9600);
pinMode(led , OUTPUT);
pinMode(trig, OUTPUT);
}


void loop() {

Sonic_trig();
Serial.print("distance = ");
Serial.print( distance );
Serial.print("\n\r");
while ( sonic_busy )
delay(5);
}

void Sonic_trig(){
if ( sonic_busy )
return;
sonic_busy = true;
digitalWrite(trig, HIGH);
delay(10);
digitalWrite(trig, LOW);
attachInterrupt(0, Sonic_interrupt_start, RISING );
}
void Sonic_interrupt_start () {
sonic_time = micros();
attachInterrupt(0, Sonic_interrupt_end, FALLING );
digitalWrite(led, HIGH);
}

void Sonic_interrupt_end () {
distance = ( micros() - sonic_time) / 29 / 2;
digitalWrite(led, LOW);
sonic_busy = false;
}

(Отредактировано автором: 18 Марта, 2013 - 15:11:35)

 
 Top
Страниц (4): « 1 2 3 [4]
« Делаем роботов »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru