Помогите в написании простейшей программы, я запутался!
- Войдите на сайт для отправки комментариев
Здравствуйте, дорогие эксперты всея форума, купил ардуино 7 дней назад, активно учусь, пытаюсь творить,но увы все встречаются с проблемами... Так вот, первый мой проэкт который я пытаюсь вывести на белый свет - доводчик для двери. Зачем, я рассказывать не буду, но для этого есть очень весомые причины. Расскажу о простейшем механизме, на двери есть контакт, который замыкается когда дверь закрывается, и двигатель, который медленно (специально) подтягивает дверь к закрытию...
Я пишу программу, и никак не могу сделать то что мне надо, попробую объяснить:
Если контакт разошёлся(тобишь LOW)
Подождать 15 секунд.
После уже ПОДАВАТЬ HIGH НА ДВИГАТЕЛЬ ПОКА, КОНТАКТЫ НЕ СОЙДУТСЯ (ТОБИШЬ HIGH).
Я понимаю, просто, но одно условие есть, после того как дверь замкнёт контакт двигатель СРАЗУ должен прекратить работу, а у меня получается так, что программа ждет 15сек включает двигатель и опять 15сек ждёт (дверь то уже давно закрылась) двигатель продолжает работу, начинает грется и т.д. потом после задержки он проверяет условие и выключает уже...
Я перепробовал все функции))) Как-то даже приплетал for(;;;) и т.д. Я сейчас пишу с планшета, ибо невтерпёж, прейду на комп кому ндо будет пришлю макет программу...
исходничек свой покажите
Секунду, я живу в ХРЕНЗНАЕТГДЕНСКЕ поэтому интернет тут 32кб\сек...
Я слишком неопытный наверн)))
Ладно, раз никто не отвечает, я уйду, ответите - мне придёт оповещение и я вернусь...
Лучше было сделать проверку по низкому уровню на входе и, как вывод, осуществление действий (задержка 15 сек и работа движка до полного закрывания). Если на датчике HIGH, то ничего делаться не будет.
Во-первых,вход с неопределённым значением (датчик в Вашем случае) лучше подтянуть к земле резистором на 10кОм - иначе,при возикновении наводок на входе у вас получится случайное срабатывание.Далее, у вас ошибочка в коде) Надо так:
Ярик датчик это обычный контакт, все сделано на брэдборде и подтянуто...
Во-первых,вход с неопределённым значением (датчик в Вашем случае) лучше подтянуть к земле резистором на 10кОм - иначе,при возикновении наводок на входе у вас получится случайное срабатывание.Далее, у вас ошибочка в коде) Надо так:
Сейчас я попробую... В моем случае задержка перед началом закрывания двери обязательна... секунду...
Функция do...while сначала делает,потом проверяет условие,то есть хотя бы один раз она что-то сделает.А функция из моего поста сначала проверяет,потом делает.
Для задержки пихните внутрь while delay() или через millis считайте....
Спасибо, ребят, то что надо! обожаю вас! Оказывается я не правильно писал условие команды while я писал вместо 0 и 1 HIGH и LOW, кстати почему мой вариант неверный?
вот это работает как помаслу теперь!!!!!!
осталось примочек добавить, ну там чтобы пьеза издавала звук и тд... но это совсем уже другая история! СПА-СИ-БО!!
1 = HIGH,0 = LOW