Помоите пожулуйста с простым кодиком.

Fuego
Offline
Зарегистрирован: 18.01.2012

 

Fuego
Offline
Зарегистрирован: 18.01.2012

я так понимаю как то через Millis?

извиняюсь за орфографию) клава глючила.

 

carduino.ru
Offline
Зарегистрирован: 06.12.2011

Правильно поставленный вопрос увеличивает шанс на правильный ответ 

Fuego
Offline
Зарегистрирован: 18.01.2012

Я фото приложил вроде?

На порт 11 поступает HI на произвольное время(тумблер) - По фронту импульса срабатывает дватаймера на 12 и 13 порту! - По спаду импульса (когда кто нибуть обратно тумблер) таймеры еще раз срабатывают И ЖДУТ НОВОГО ФРОНТА.

step962
Offline
Зарегистрирован: 23.05.2011

Fuego пишет:

Я фото приложил вроде?

"И чо?" (c)

"Все гадалки в отпуске" (с)

Цитата:

На порт 11 поступает HI на произвольное время(тумблер) - По фронту импульса срабатывает дватаймера на 12 и 13 порту! - По спаду импульса (когда кто нибуть обратно тумблер) таймеры еще раз срабатывают И ЖДУТ НОВОГО ФРОНТА.

state=LOW
while (1) { // бесконечный цикл опрса порта 11
  if (digital(Read(11)!=state) { // если состояние порта отличается от состояния в предыдущем цикле опроса, то начинаем работать
    state=digitalRead(11);       // но прежде всего запомним текущее (измененное) состояние опрашиваемого порта
    digitalWrite(12,HIGH);
    digitalWrite(13,HIGH);
    delay(СколькоТоТамМиллиИлиПростоСекунд);
    digitalWrite(12,LOW);
    delay(СколькоТоТамМиллиИлиПростоСекунд);
    digitalWrite(13,LOW);
  }
}

 

 

Это если попрошше. Себе я такого кода не поставил бы.

Fuego
Offline
Зарегистрирован: 18.01.2012

Я нарисовал график! Вопрос изложил!  что еще ?  

на графике ясно что таймеры в разное время включаются! и выключаются!

delay - нельзя

step962
Offline
Зарегистрирован: 23.05.2011

Fuego пишет:

Я нарисовал график! Вопрос изложил!  что еще ?  

Получили порцию ответа в полном соответствии с изложенным вопросом.

Цитата:

на графике ясно что таймеры в разное время включаются! и выключаются!

"И чо?" (с)

Цитата:

delay - нельзя

Об этом вы изволили сообщить в своем третьем (или уже четвертом?) сообщении.

"Все гадалки в отпуске" (с)

Реплика Carduino.ru - "Правильно поставленный вопрос увеличивает шанс на правильный ответ." - приобретает невиданную доселе актуальность. Я бы дополнил ее еще одним словом - "резко".

Так что, пока нет практически никакой конкретной информации о том, что вам нужно, дам еще один совет:

"семафорьте" или изучайте управление таймерами.

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

 

Fuego
Offline
Зарегистрирован: 18.01.2012

step962 - не хотите помочь.. хвалитесь своей саркастической чушью в другом месте.

Тут есть люди которые умеют читать и могут помочь?

На порт 11 поступает HI на произвольное время(тумблер) - По фронту импульса срабатывает дватаймера на 12 и 13 порту! - По спаду импульса (когда кто нибуть обратно тумблер) таймеры еще раз срабатывают И ЖДУТ НОВОГО ФРОНТА.

 

(12 включается на 8 секунд) (13 на 0,5 секунд) Первым срабатывает 12, а через 3 секунды 13.

Delay не должно быть как я уже понял.

 

 

Fuego
Offline
Зарегистрирован: 18.01.2012

 Видимо тут нужно добавлять к постам(положу 300 рэ на телефон)

step962
Offline
Зарегистрирован: 23.05.2011

Fuego пишет:

step962 - не хотите помочь.. хвалитесь своей саркастической чушью в другом месте.

1) "Юпитер, ты сердишься, значит ты не прав" (с)

2) Форум - это такое место, где я могу находиться без вашего на то разрешения.

Цитата:

Тут есть люди которые умеют читать и могут помочь?

Чтобы прочитать и помочь, необходимо иметь, что читать. 

Что же вам надо, вы так и не объяснили. Например, пишете "на графике ясно что таймеры в разное время включаются! и выключаются!". А ясно ли из графика, в какое время таймеры включаются? С какой точностью требуется отсчитывать время? Как часто изменяется уровень сигнала на входе и что делать если этот уровень изменится во время генерации высокого уровня на выходах?

Тут еще много разных неясностей. А без прояснения этих непоняток дать оптимальный ответ НЕВОЗМОЖНО.

Слишком много вариантов. И вы таки не поверите - у участников этого форума время может стоить денег.  

Цитата:

 И ЖДУТ НОВОГО ФРОНТА.

 

Отлично реализуется с помощью delay(). Или все-таки не ЖДУТ НОВОГО ФРОНТА, а делают что-то еще? (естественно, имеется в виду микроконтроллер в целом).

Цитата:

Delay не должно быть как я уже понял.

Обоснуйте.

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

Короче, будет нормальное ТЗ - будем посмотреть. Нет - продолжим отбирать конфетки у обиженного карапуза.

Цитата:

Тут есть люди которые {...] могут помочь?

Помогли уже два раза:

1) Помогли с "простым кодиком".

2) Указали, в каком направлении (в каких направлениях) можно копать в зависимости от того, что конкретно требуется.

Или вам, как Вовке из тридевятого царства, за вас еще и пальцы загибать надо?

Fuego
Offline
Зарегистрирован: 18.01.2012

 

"А ясно ли из графика, в какое время таймеры включаются?(включаются по фронту вх сигнала я писал) С какой точностью требуется отсчитывать время?(в милисекундах) Как часто изменяется уровень сигнала на входе и что делать если этот уровень изменится во время генерации высокого уровня на выходах?"(раз в день человеческий организм подойдет ногами к выключателю, включит его наверх(ПАЛЬЦЕМ ВТОРОЙ РУКИ) а через минут 20 ВЫКЛЮЧИТ) (Я писал что срабатывают таймеры по фронту соответственно логично было бы дать им закончить желательно два раза но не принципиально)Контроллер делает что то еще(Да возможно проэкте, а Делей будет подвешивать его)

Я так понимаю "Мигаем светодиодом без delay()" это мой случай нопока не разобрался в этом

этой информации достаточно?

step962
Offline
Зарегистрирован: 23.05.2011

Это

Цитата:

С какой точностью требуется отсчитывать время?

в милисекундах

и это

Цитата:

Как часто изменяется уровень сигнала на входе

раз в день человеческий организм подойдет ногами к выключателю, включит его наверх(ПАЛЬЦЕМ ВТОРОЙ РУКИ) а через минут 20 ВЫКЛЮЧИТ) 

абсолютно не стыкуется. От того, что человеческий организм подойдет к выключателю на час раньше обычного или на тридцать секунд позже, видимо, ничего в поведении системы не изменится. Так зачем ловить миллисекунды?

Цитата:

Контроллер делает что то еще

Да возможно проэкте, а Делей будет подвешивать его

О помехах, которые создает такой нагруженной программе delay(), можно будет подумать, когда для мк появятся еще какие-нибудь дела, кроме слежения за одним входом. К этому моменту стоит подготовиться, погоняв и попробовав оптимизировать хоть какой-нибудь код, написанный собственноручно. В конце концов и то, что наваяно под титулом "мигаем светодиодами без dcelay()", тоже не верх программерского искусства.

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

Кстати, все заинтересованные лица так и не узнали от вас, какова там задержка. И из приведенного графика это тоже не видно.

 

 

 

Fuego
Offline
Зарегистрирован: 18.01.2012

Это у вас что то не стыкуется, "там" и не только  написано Any Time!  По спаду импульса! Когда организм захочет тогда и будет спад импульса!

Этот контроллер уже управляет несколькими каналами там и так много ДЕЛЕЕВ. 

Вы мне тут терады строчите, вам это  помогает чувствовать себя богом? или ваше время не стоит денег как у остальных?или сами как и я кроме Делеев не знаете?) п.с вопрос риторический..

 

 

whoim
Offline
Зарегистрирован: 03.11.2011

собсно, написать нечего. Избавиться от delay как уже говорили - в примере мигания. в начале "сеанса" запоминаем значение millis(), в цикле программы отнимаем запомненное от текущего millis(), таким образом выясняя сколько времени прошло с начала "сеанса". Если достаточно, то выполняем действия. Куда уж проще то? Или я что то не понимаю?

step962
Offline
Зарегистрирован: 23.05.2011

 

Цитата:

раз в день человеческий организм подойдет ногами

Этот контроллер уже управляет несколькими каналами там и так много ДЕЛЕЕВ.

Какое из этих утверждений не соответствует действительности?

И что нового о задаче мы еще узнаем из ваших дальнейших откровений?

Цитата:

Это у вас что то не стыкуется, "там" и не только написано Any Time!

Arduino IDE позволяет и в микросекундах время отмерять. Почему выбраны миллисекунды?

Что произойдет, если реакция произойдет не одновременно с изменением состояния на входе, а, предположим, на 1.35 миллисекунды позже? Или на 0.012?

Цитата:

произвольное время(тумблер)

человеческий организм подойдет ногами к выключателю, включит его наверх(ПАЛЬЦЕМ ВТОРОЙ РУКИ)

Сколько времени длится процесс переключения тумблера? Сколько кратковременных импульсов мы получим на входе? Как будем их отрабатывать - как изменения уровня входного сигнала или как недостойный внимания дребезг контактов?

Цитата:

или ваше время не стоит денег как у остальных?

Иногда хочется отдохнуть от зарабатывания денег. Разввлечься  "отбиранием конфетки у обиженного карапуза". Или помочь кому-нибудь советом, информацией, примером кода - при условии, что задача поставлена достаточно четко и вызывает интерес.

Цитата:

или сами как и я кроме Делеев не знаете?

Несколько возможных вариантов решения проблемы уже называл:

""семафорьте" или изучайте управление таймерами.

А также читайте о мутексах, барьерах, условных переменных, ... Ну тут много вариантов."

whoim тоже вам один из простейших вариантов решения подсказал - ближе к условным переменным. Вполне возможно, что он вам подойдет - если все-таки не требуется точность до миллисекунды.

Давать более конкретные советы трудно, не зная, что же конкретно требуется. Я не о цвете тапочек у "человеческого организма". И не о том каким именно пальцем ВТОРОЙ РУКИ (инвалид?) он будет переключать тумблер. Я о взаимодействии между происходящими событиями и запускаемыми процессами. И об ограничениях, накладываемых на эти взаимодействия.

Есть много инструментов для решения того круга задач, к которому относится ваша. От тупого использования delay() - а от вас еще так и не последовало достаточно убедительного обоснования невозможности такого варианта в вашей конкретной задаче - до подключения механизма прерываний и таймеров. Пытаться с помощью перочинного ножа вырезать ял - бессмысленно. Доставать микроскоп, чтобы расколоть пару орехов - микроскоп жалко.

Так что - перечитайте еще раз реплику carduino.ru и сформулируйте задачу в соответствии с поставленными перед вами вопросами. А то ведь ничего пока не остается, кроме как "чувствовать себя богом".

Fuego
Offline
Зарегистрирован: 18.01.2012

Был некоторое время в Индонезии так вот по возвращению, сразу бросается в глаза кретинизм русских обиженых жизнью, таможенник вместо одного слова "проходите" развел скандал на пол часа, и так каждый второй.

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

step962 - Спасибо за ответы, далее без вашей "помощи" думаю разберусь.

 

whoim - вот на сайте есть приверы (мигание обычное) (тактовая кнопка) (мигание без делалай) и было бы супер для начинающих (тактовая кнопка без делай) я бы тогда и не спрашивал и разобрался не отвлекая гениев от ихвысоких дел)) 

Alexander
Offline
Зарегистрирован: 25.04.2010

на правах модератора:

давайте будем приветливей и терпимей друг другу.

Fuego, Вам всего лишь указали на то, что из Ваших первых сообщений не очень был понятен вопрос. Наверно, не стоит так резко реагировать.

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

В этой теме я писал прогу http://arduino.ru/forum/programmirovanie/svetofor

без единого delay моргает и работает одновременно;)   

Fuego
Offline
Зарегистрирован: 18.01.2012

 Alexander - Окей я понял, если с первого поста все не поняли то смысла объяснять уже нет, странно.. ну ладно)

Adessit - Спасибо буду разбираться)

 

Spaik
Offline
Зарегистрирован: 20.01.2012

"Окей я понял, если с первого поста все не поняли то смысла объяснять уже нет"

Вовсе нет. Просто существует огромное количество вариантов как реализовать этот алгоритм: с использованием программных задержек или с помощью таймеров, с постоянным опросом кнопки или с помощью прерываний при изменении логического уровня на входе. Я могу написать вариантов 10 - 20 кода. Но лично у меня нет никакого желания писать десять вариантов одного и того же чтобы узнать какой именно устроит вас.
 

step962
Offline
Зарегистрирован: 23.05.2011

 "А-а-аналогично" (с)

Fuego
Offline
Зарегистрирован: 18.01.2012

 Spaik 

в вашем сообщении всего два вопроса, хоть я писал но всеже повторюсь "использованием программных задержек" - нет.      "с постоянным опросом кнопки или с помощью прерываний" - не важно как, главное когда вход возвращается в low__ таймеры повторили тоже что при старте и  успокоились. у вас от этого появится желание что нибуть написать? 

..не понятно чем график зависимости не угодил, по моиму все удобочитаемо, ведь таблицу истинности для микросхемм стандартной логики тоже придумали для удобства - ну не суть..

 

whoim
Offline
Зарегистрирован: 03.11.2011

 Вот развели....

Автор, напиши что нибудь по своему разумению и выкладывай сюда с конкретными вопросами. Так будет проще всем.