как сделать повторяющиеся действие?
- Войдите на сайт для отправки комментариев
Чт, 16/02/2012 - 17:55
Нужно попеременно подавать сигнал с некоторой частотой на два выхода сначала на один потом на другой, но по мимо этого нужно выполнять другие действия например моторами управлять, тоесть начинаем мигать поочередно светодиодами и в это время еще двигаемся по заданому пути
помогити с когодом. как осуществлять такое?
вот то что пока получилось но это совсем другое
void loop() { GoForward(); //едем вперед tone(LedLeftPin, 38000); // генерируем 36кГц на левый светодиод delay(30); if(digitalRead(TsopPin)==LOW) { povorot=random(300,1200);//случайно выбираем время завершения поворота Stop(); delay(800); GoReverse(); delay(1000); MotorRightReverse(); MotorLeftForward(); delay(povorot); Stop(); delay(2000); } noTone(LedLeftPin); tone(LedRightPin, 38000); //генерируем на правый светодиод delay(30); if(digitalRead(TsopPin)==LOW) { povorot=random(300,1200); Stop(); delay(800); GoReverse(); delay(1000); MotorLeftReverse(); MotorRightForward(); delay(povorot); Stop(); delay(2000); } noTone(LedRightPin); }
помогит, зарание спасибо!
http://arduino.ru/tutorials/BlinkWithoutDelay
тут описано как обходится без delay
а как осуществить перемигивание двумя светодиодами?
Так же, как мигание одним - только когда этот один загорается, другой надо гасить.
И наоборот.
boolean state = false;
юзаем таймер, например, flexitimer
...
digitalWrite(led1pin, state);
digitalWrite(led2pin, !state);
//если сменить
state = !state;
----
все это есть в примерах, уроках всевозможных, описаниях русскоязычных. В гугле есть все!
>>povorot=random(300,1200);//случайно выбираем время завершения поворота<<
Знакомая строчка.
Вот вам мигалка будет работать почти со всеми функциями.
Переменной val регулируйте частоту мигания.
>>povorot=random(300,1200);//случайно выбираем время завершения поворота<<
Знакомая строчка.
=)) у вас очень хороший проект)
мой чемто похож,(способ определения препятствия), только я тсоп не поварачиваю а просто попеременно включаю левый и правый светодиод. естественно с нужной частотой пачки. у вас постоянно вращается серва а мне нужно чтоб светодиоды переключались, и можно было бы еще что то делать. пока не знаю как это можно сделать
>>чтоб светодиоды переключались, и можно было бы еще что то делать. пока не знаю как это можно сделать<<
Лучше поставить три TSOPа.
Лево , право , прямо.
И опрашивать в цикле.Все же один (неподвижный) TSOP , при ширине платформы 10 и более см , не всегда сможет рассмотреть препятствие.
>>у вас постоянно вращается серва<<
Это называется телемеханическая развертка (эффект множества датчиков).
>>пока не знаю как это можно сделать<<
Я предоставил вам пример.
Он будет конфликтовать (некорректно работать) с функцией pulseIn.
В остальных случаях (если другие программные модули не будут использовать эти светодиоды) должно работать нормально.
Можно попробовать так.
Должно работать (не проверял).
>>чтоб светодиоды переключались, и можно было бы еще что то делать. пока не знаю как это можно сделать<<
Лучше поставить три TSOPа.
Лево , право , прямо.
И опрашивать в цикле.Все же один (неподвижный) TSOP , при ширине платформы 10 и более см , не всегда сможет рассмотреть препятствие.
у меня тестовая платформа( колеса с макетной платой ) шириной 20см препятствия определяет очень хорошо на растоянии до 40+ см.
нет другие модули не используют эти светодиоды. Как перемигивать светодиодами я понял спасибо но меня поставило в тупик как на них еще и частоту генерировать в тот момент когда он горит.
Прошу меня извинить за глупые вопросы)
Спасибо большое, работает))))))))
В моем примере важно чтобы все остальные программные блоки находились внутри первого if.
Иначе может быть некорректная работа программы.
Хотя это все индивидуально.
>>у меня тестовая платформа( колеса с макетной платой ) шириной 20см<<
Это что за платформа такая ?
Круглая ?
Есть еще такой вариант.
Выдаем частоту на один выход (постоянно)
Плюсы светодиодов подключены к перекидной релюшке.
На среднюю ногу релле подаете частоту.
А катушкой релле делаем вкл/выкл С определенной периодичностью.
Т.е. выдача частоты идет попеременно то на один светодиод , то на другой.
Получается так что одна нога МК "мигает" релюшкой , другая выдает частоты , третья (тсоп) принимает сигнал.
Программно так проще.
Можно так же сделать такой драйвер на транзисторах.
нет, взял дава редуктора склеил их вместе, сверху от старого конструктора плоские пластины что бы крепить что нить, на них сейчас стоит обычная макетка для безмаечного мантажа на ней и собрана схема.
на скорую руку собирал :D
можно и так. я думал о таком ( только не на реле а на транзисторах)
сначала думал сделать так: через один выход на два светодиода подаем частоту а через другие две подаем землю . но подавать частоту на разные ноги оказалось проще =/