Рулонные шторы на ардуино.
- Войдите на сайт для отправки комментариев
Вс, 11/11/2018 - 20:27
Пытаюсь сделать руллоные шторы своими руками, но застрял на одном месте, когда на датчик попадает свет мотор делает 1 оборот, а когда нет крутится туда сюда. Помогите пожалуйста.
Здравствуй жопа новый год http://arduino.ru/forum/programmirovanie/vypolnenie-tsikla-1-raz-do-izmeneniya-parametrov. Я же сказал, пока вы не освоите программирование через цифровой автомат, у вас будут косяки лететь стаями.
Вы бы вставили перед каждым if комментарий, где словами было бы написано что именно делается. Только в терминах задачи (типа "если попал свет, то включаем на подъём") а не пересказом того же if.
И сам может поймёте проблему, и нам легче будет.
Хорошо, попробую освоить.
Тем более CustomStepper Это тоже цифровой автомат
При использовании этого кода, выдаёт последовательно LIGHT DARK LIGHT DARK.
Это нормально?
При использовании этого кода, выдаёт последовательно LIGHT DARK LIGHT DARK.
Это нормально?
При использовании этого кода, выдаёт последовательно LIGHT DARK LIGHT DARK.
Это нормально?
Так происходит даже если отключить датчик.
Выведите значения raw в Serial, проверьте, что датчик подключен именно к A0.
Квон еще до гистеререзиса не доучил, хотя попытку сделал. Так что если raw болтается около 400ед, то так и будет флапать.
Выведите значения raw в Serial, проверьте, что датчик подключен именно к A0.
Квон еще до гистеререзиса не доучил, хотя попытку сделал. Так что если raw болтается около 400ед, то так и будет флапать.
Да, подключен к A0. Если вывести в serial с этим скетчем, то просто пишет 14 14 14 и т.д, а с другими всё ок.
IVoxelI, ну, вставьте же Вы наконец комментарии и выложите код с ними! Вас что, умолять надо? Ну, вот непонятно что Вы там имели в виду, а объяснять Вы отказываетесь!
IVoxelI, ну, вставьте же Вы наконец комментарии и выложите код с ними! Вас что, умолять надо? Ну, вот непонятно что Вы там имели в виду, а объяснять Вы отказываетесь!
Так лучше?
Так лучше?
Честно говоря не совсем, но хоть догадываться можно.
когда на датчик попадает свет мотор делает 1 оборот, а когда нет крутится туда сюда.
Я пока не могу понять причину такого поведения и потому предлагаю Вам оттрассировать программу. И кстати, всегда так поступайте, когда поведение программы непонятно. Это можно сделать примерно вот так.
Только делайте всё быстро, поскольку трасса будет печататься с огромной скоростью.
Если после изучения трассы Вам не станет легче, то выложите трассу сюда.
И да, кстати, к Вашей текущей проблеме это не относится, но имейте в виду, что эту библиотеку лучше не изсользовать. Она написана достаточно безграмотно.
когда на датчик попадает свет мотор делает 1 оборот, а когда нет крутится туда сюда.
Я пока не могу понять причину такого поведения и потому предлагаю Вам оттрассировать программу. И кстати, всегда так поступайте, когда поведение программы непонятно. Это можно сделать примерно вот так.
Только делайте всё быстро, поскольку трасса будет печататься с огромной скоростью.
Если после изучения трассы Вам не станет легче, то выложите трассу сюда.
И да, кстати, к Вашей текущей проблеме это не относится, но имейте в виду, что эту библиотеку лучше не изсользовать. Она написана достаточно безграмотно.
Вы так пошутили? Надеюсь, что нет, иначе ... мне не нравится, когда надо мною так шутят.
Скорость порта в строке 10 и в нижнем правом углу монитора порта одинаковую выставьте. Жолжен выводиться нормальный текст.
Вы так пошутили? Надеюсь, что нет, иначе ... мне не нравится, когда надо мною так шутят.
Скорость порта в строке 10 и в нижнем правом углу монитора порта одинаковую выставьте. Жолжен выводиться нормальный текст.
Нет, не шутил. Теперь выводится так :
millis()=216946; raw=207; x=1; y=0; stepper.isDone()=0
[
Нет, не шутил. Теперь выводится так :
millis()=216946; raw=207; x=1; y=0; stepper.isDone()=0
а по-моему все-таки шутите. Причем злобно.
Зачем вы выкладываете трассу спустя почти 4 минуты после рестарта системы? (после 216 сек) . По коду и так очевидно, что если система попала в состояние raw=200; x=1; y=0; stepper.isDone()=0 - то система в нем застрянет навечно. Вам-то важно знать, как она в это состояние попала! Интересными являются разве что первый десяток проходов loop() , в вы выложили примерно 40тысячный оборот... смеетесь7
Трасса нужна сначала.
Трасса нужна сначала.
Ну, Вы место на сервере экономите? Побольше нельзя?
Ладно, скажите хоть stepper.isDone()=0 - всегда 0? Она должна иногда становиться 1 и я должен видеть это. Если уж сильно много, ну зипните и положите на файлообменник
Ну, Вы место на сервере экономите? Побольше нельзя?
Ладно, скажите хоть stepper.isDone()=0 - всегда 0? Она должна иногда становиться 1 и я должен видеть это. Если уж сильно много, ну зипните и положите на файлообменник
Просто нет смысла, т.к. дальше строчки одинаковые
Это ответ на мой вопрос? stepper.isDone()=0 больше никогда не становится 1 - проверьте внимательно! Это очень странно
Ага, понятно. Вы библиотеку отсюда скачивали? https://playground.arduino.cc/Main/CustomStepper ?
Если отсюда, isDone у Вас никогда не станет истинной. Он там становится истинной только после создания объекта и в методе disable.
Потому у Вас ничего и не делается. что все условия в if'ах всегда ложны.
Если не оттуда скачивали, что скажите откуда.
Ага, понятно. Вы библиотеку отсюда скачивали? https://playground.arduino.cc/Main/CustomStepper ?
Если отсюда, isDone у Вас никогда не станет истинной. Он там становится истинной только после создания объекта и в методе disable.
Потому у Вас ничего и не делается. что все условия в if'ах всегда ложны.
Если не оттуда скачивали, что скажите откуда.
Да, отсюда. Мне поменять библиотеку?
Не знаю, это Ваше дело.
Вы проверяете isDone(), я посмотрел в текст (можете и Вы посмотреть) и увидел, что истиной она бывает только в двух случаях: сразу в самом начале и после исполнения метода disable(). Если Вы выполнили хоть одну операцию rotate или rotateDegrees, она будет ложью пока не исполните disable.
Сами думайте, менять Вам библиотеку или disable вызывать. Это Ваше решение.