И в чем проблема присвоить таймеру 0?
Зачем???
Послушайте, когда вас просят засечь по часам 10 минут - вы что, часы на ноль переводите? - все нормальные люди просто запоминают текущее время и все!
Вот и в вашем коде нужно просто показания таймера запомнить, вместо того чтоб всю ардуину перезапускать. Причем у вас в коде уже это запоминаете есть - строка 16.
А этот jmp 0
- просто дурость.
еще один… нухуа???
Ему же обнулить нужно. Он ребутит мк, а зачем?
Это он так думает, что нужно обнулить. А на самом деле не нужно.
Так зачем вникать в его потребности? Сказал обнулить, так обнуляй. Ну не понимает человек ваще ничего, пусть бы поучился сначала. А ты ему сразу высокие материи. Ведь сейчас спросит, как время запомнить ))
Через контактор 3-х фазный на 500А можно ардуину перезапускать.
Это не шутка??? Так сейчас модно запускать ядерный реактор и только потом идти в первый класс решать “2 яблока плюс 3 яблока будет сколько яблок?” ??? Не, ребята, ардуино это зло вселенского масштаба. У меня нет слов. Напоминает фильм “Идиократия”.
Хороший пример. Только представьте, что мне нужно засекать время постоянно и это время постоянно изменяется. Если я уберу jmp 0 то в порту я увижу:
получен сигнал
1
2
3
4
следующий сигнал
5
6
7
8
и т.д. А мне нужно для расчетов чтобы таймер перезапускался и заново начинал расчет.
Что там за расчёты такие, что нужно в порт выводить 1234…? Что измерять? С какой частотой?
Давайте начнем с того, что с кодом из сообщения 1 вы ничего подобного не увидите - в коде просто нет вывода в порт. Поэтому начните с того, что выложите АКТУАЛЬНЫЙ код, а не бессмысленный набор строк.
Что вообще такое эти цифры в выводе? Что они значат?
Но в любом случае jmp 0 - вам не нужно. ДАЖЕ НЕ ВИДЯ вашего настоящего кода - я уверен в этом. Применение подобной конструкции - признак человека, который ровно ничего не понимает в работе микроконтроллера. Обнуление таймера - если даже оно вам требуется, хотя я так не думаю - можно выполнить без перезапуска всей программы.
Измеряем время от одного сигнала до другого, а конкретно tim. измерять нужно постоянно.
О каких скоростях вращения идёт речь ???
частота = 1000000.0/(pulsein(HIGH)+pulsein(LOW))
Только надо проверять не прислали ли pulsein 0 в качестве результата …
И зачем тут перезапуск программы?
Почему нельзя выставить переменную счетчика на ноль после получения очередного сигнала?
Поймите, ваш подход неверный. Примите это.
Если вы хотите, чтобы вам помогли - опишите свою задачу в подробностях. А если проект “секретный”, то не тратьте свое и чужое время, разбирайтесь сами.
В коде не хватает одной строчки, а именно Serial.println(tim). Означают они время прошедшее от одного сигнала до другого.
Вот вывод значений при отсутствии jmp 0. Сигнал датчик ловит, но изменений 0:
А вот с jmp 0. Сигнал датчик ловит и таймер перезапускается:
И я нашел решение проблемы. Есть библиотека для таймеров. И там есть команда restart().
Не забудь себе поставить “Решено”.
А то опять тут все дураки, не понимают ничего в программировании.
Почему вы печатаете tim? -вы должны печатать разницу с прежним отсчетом, то есть sg
Идиотское решение несуществующей проблемы?
Скажите, зачем вы пришли в форум, если не желаете никого слушать?
Я выставлял на ноль, но изменений не было.
КирилЛ, вы правда идиот или прикидываетесь?
Во-первых, выложите код полностью. У вас в коде не хватает строки и есть примерно два десятка вариантов, куда ее можно в этом коде вставить.
Во-вторых, изложите задачу подробно.
Пока я вижу, что вы просто в цикле печатаете значение микрос. Это не программа, а бред.
Да ладно вам, видно же человек болезный, не знает чего хочет и не может двух слов связать. Какие-то сигналы ловит… Тут может, и без Ардуино сигналов хватает.
А зачем мне sg? У меня же tim время полуоборота. Я вас слушаю, но пока я услышал только то что jmp 0, что я и знал