Нужен регистратор потока данных от Ардуино к компьютеру через USB
- Войдите на сайт для отправки комментариев
Пт, 26/08/2016 - 13:05
Я – начинающий.
Моя проблема.
Сделал на ардуино электронный термометр с регистрацией по USB на Terminal19b. Запрограммировал циклический опрос с интервалом полсекунды. В среде ардуино отладил, загрузил – поток от термометра идет нормально. И на монитор Ардуино, и на Terminal.
Вышел из ардуино, переткнул термометр, подсоединил Terminal… Скорость термометра уменьшилась на порядок.
Что я не знаю?
Заранее спасибо
То есть у вас время исполнения скетча замедлилось?
Медленно приходят данные по серийному порту, я так понял?
А куда переткнули?
Какая разница во времени
Скопинцев, Вам в предыдущей теме уже намекнули, что без описания конструкции и без выкладки скетча (http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii) что-либо советовать затруднительно.
Скетч работает так: измеряет по циклу температуру, потом через интервал persta переключает режим нагрева. И далее по циклу.
1. Время исполнения скетча замедлилось
2. Очень вероятно, что медленно приходят данные по серийному порту...
3. Переткнул: вынул из USB и снова воткнул.
4. Точно не измерял. Где-то в 6-10 раз...
Я понимаю, что такими вопросами мало кто задается. И вряд ли могут объяснить.
Может быть посоветуете, какой-то другой регистратор такого простого циклического потока?
А может быть проблема в while? Скрипт по идее виснет когда значение больше 100 и цикл будет дооооолго работать пока не cтанет меньше ста. Может стоит изменить на IF? Тогда будет работать весь скрипт и не повиснет на цикле. Ага он сразу после обнаружения persta > 100 ставиться на ноль. А смысл тогда цикла, if самое то.
Еще
static
unsigned
long
previousMillis = 0; объявлен в loop. Насколько помниться в примере да и я так делал он объявляется еще до void setup()
В начале кода он что сбрасывется на ноль? Или ошибаюсь. Если так то тогда это неправильно чтоли.
Переделал на свой лад могу ошибаться
ПОставил. Проверил Эффект тот же.
Как-то не верится, что для задачки "просто записать данные в текстовый файл" нет простого решения... (((((
Задал INTERVAL 50UL После всех описанных манипуляций получил нужные значения периода опроса.????
Среда ардуина гадит? Или что-то зашито в ардуино рro micri?
С версией delay вместо millis() - такое же замедление.
Поискать, боюсь, что позже. Время подпирает. Учебный год начинается, а это - лабораторная работа (((
Я бы интервал указал не через define
а int INTERVAL=500; как переменную.
Что равняется 500 миллисекунд. Почему вы через define делали я не знаю. Я таким не пользовался может и так можно.
А еще в коде где я делал на свой лад стоило написать так
Спасибо! Закончил эксперименты, результат хороший, хоть и не понимаю, почему так.
Будет время - разберусь...)))
Почему вы через define делали я не знаю. Я таким не пользовался может и так можно.
При компиляции INTERVAL (определенный define) просто заменяется на 500L, поэтому так можно, а иногда и нужно.
Да, спасибо!
Дело в том, что задача научиться программировать передо мной не стояла. Я - разработчик классических электронных устройств. Так сложилось, что аналоговую технику я понимаю и разрабатываю лучше значительно многих.
А для Ардуино внезапно применился мой опыт прикладной работы с FORTRANом и Паскалем (Бейсиком). Я и не углублялся в оптимизацию программ. Работает - и ладушки. Если не будет хватать памяти в микроконтроллере - разберусь с минимизацией.)))
Еще раз спасибо за обсуждение
Я тихо съехиваю...
15 минут назад, примерно в 7-30 по Москве я написал #13. И вижу время публикации 05:58.
Мы где сейчас находимся, а? В какой параллельной реальности?
Сейчас на моих часах - 07:57
Я тихо съехиваю...
15 минут назад, примерно в 7-30 по Москве я написал #13. И вижу время публикации 05:58.
Мы где сейчас находимся, а? В какой параллельной реальности?
Сейчас на моих часах - 07:57
Сургут, ёпта - родина-мать русских слонов.