Официальный сайт компании Arduino по адресу arduino.cc
Помогите осуществить проект с 3-мя таймерами.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вс, 08/10/2017 - 13:09
В машине есть автономный отопитель. Мы с товарищем сделали всю элетрическую часть, для работы всех задействованных узлов. Надо сделать управление. Управляющие сигналы на три выхода. У нас есть arduino pro mini. Нужен скетч.
w-вебасто. n-насос. p-печка
|
t |
start |
w |
t |
knopka |
n |
t+2 |
knopka+1min |
p |
t+5 |
Knopka+7min |
1. При включении Arduino pro mini включается канал w, на время t(min).
2. Спустя 1 минуту(knopka+1min) запускается канал n, и работает он ещё 2 минуты, после окончания сигнала w (t+2).
3. Спустя 7 минуту(knopka+7min), после запуска канала w, запускается канал p, и работает он ещё 5 минуты, после окончания сигнала w (t+5).
4. После выполнения данных условий, сигналы просто исчезают из всех портов.
1На что вы надеетесь. Кто-то нарисует код, код заработает и все будет жвачка. Ну вы же взрослые люди.
2) Есть код- это скетч. Есть контент это то что скетч делает. Вроде они должны быть одинаковы. Ведь придумали люди такую вещь как алгоритм. Но бывают и разочарования. Если вам программу писать через совпадение кода и контента, то это через delay() в несколько строк. А если код и контент не совпадают, то здесь идет millis().
И то и то за деньги.
Я знаю азы С#. Под Arduino надо с или с++. Да еще и портами как-то управлять надо. я в этом не селен(((
Если я не ошибаюсь то, задуманое можно вместить в 20-30 строк кода. Несколько циклов и проверок. Тут же не громоздкий проект.
управление портами
функция millis() - отсчет интервала
А пойдет сюда и delay. Тогда можно школьника заставить написать за беляш.
Я знаю азы С#. Под Arduino надо с или с++. Да еще и портами как-то управлять надо. я в этом не селен(((
Если я не ошибаюсь то, задуманое можно вместить в 20-30 строк кода. Несколько циклов и проверок. Тут же не громоздкий проект.
Так начни сам, чего ноешь-то? Тем более - "знаешь азы до-диеза", в чём проблема? Почитать статейки, как на пинах уровни в дуньке устанавливать?
Лёня Голубков, сдаётся мне, что ты таки халявщик :)
Я знаю азы С#. Под Arduino надо с или с++. Да еще и портами как-то управлять надо. я в этом не селен(((
Если я не ошибаюсь то, задуманое можно вместить в 20-30 строк кода. Несколько циклов и проверок. Тут же не громоздкий проект.
Так начни сам, чего ноешь-то? Тем более - "знаешь азы до-диеза", в чём проблема? Почитать статейки, как на пинах уровни в дуньке устанавливать?
Лёня Голубков, сдаётся мне, что ты таки халявщик :)
Не, меня Саня зовут. Понимаешь, есть желание изучить Arduino, и изучение будет. Но дел в том, что в наличии ща только ардуина про мини. И заливать туда код не чем(( надо дергать чела у которого программатор есть, не удобно будет перед ним.. если вдруг косяки будут. Я себе планирую взять набор. Там и проекты есть готовые... и шить можно будет с компа. Там Mega в комплекте.
Не, меня Саня зовут. Понимаешь, есть желание изучить Arduino, и изучение будет. Но дел в том, что в наличии ща только ардуина про мини. И заливать туда код не чем(( надо дергать чела у которого программатор есть, не удобно будет перед ним.. если вдруг косяки будут.
И что дальше? дергать чела с программатором неудобно, а просить написать код - удобно? И, кстати, косяки будут обязательно. Не бывает кода без косяков...
Если ты знаешь любой диалект Си - не важно С. С++, С# - то для начального освоения другого диалекта тебе нужно потратить пару часов. Купи вторую ардуину(например Нано за 200р) и начни изучение сразу.
Кстати - имея вторую плату, ты сможешь прошить свою про мини без программатора. А "набор с мегой" - это выкинутые деньги.
Не, меня Саня зовут. Понимаешь, есть желание изучить Arduino, и изучение будет. Но дел в том, что в наличии ща только ардуина про мини. И заливать туда код не чем(( надо дергать чела у которого программатор есть, не удобно будет перед ним.. если вдруг косяки будут.
И что дальше? дергать чела с программатором неудобно, а просить написать код - удобно? И, кстати, косяки будут обязательно. Не бывает кода без косяков...
Если ты знаешь любой диалект Си - не важно С. С++, С# - то для начального освоения другого диалекта тебе нужно потратить пару часов. Купи вторую ардуину(например Нано за 200р) и начни изучение сразу.
Кстати - имея вторую плату, ты сможешь прошить свою про мини без программатора. А "набор с мегой" - это выкинутые деньги.
Закидали меня вчера нехорошими комментами ))) ну и ладно )) надо когда то начинать, и этот день сегодня ))) вот мой первый код под Arduino. Прошу указать на ошибки.
весь код - ошибка.
Я знаю азы С#. Под Arduino надо с или с++. Да еще и портами как-то управлять надо. я в этом не селен(((
слушай, ну как так получается, что я не знаю ни одного языка и в управлении портами(какими, блин, портами? ху из бин "п'ортъ"?) не рублю, но я в этом селен(с)? [ху из бин мист'ер "селен", йопта?]
#28 О_О
Я знаю азы С#. Под Arduino надо с или с++. Да еще и портами как-то управлять надо. я в этом не селен(((
слушай, ну как так получается, что я не знаю ни одного языка и в управлении портами(какими, блин, портами? ху из бин "п'ортъ"?) не рублю, но я в этом селен(с)? [ху из бин мист'ер "селен", йопта?]
#28 О_О
В верху товарищ, подсказал как управлять портами. Если я правильно его понял
В верху товарищ, подсказал как управлять портами. Если я правильно его понял
ок. спроси у товарища вверху, ху из бин "селен"?
Напишите словами в левый столбик:
включить 1
подождать
выключить 1
включить 2
подождать
и т.п.
В правый аналоги команд из языка Ардуино.
Закидали меня вчера нехорошими комментами ))) ну и ладно )) надо когда то начинать, и этот день сегодня ))) вот мой первый код под Arduino. Прошу указать на ошибки.
Молодец!
А теперь напиши простыми словами, чего ты хотел добиться в цикле for (строка 22). Судя по всему. переменные a-d - это задержки в мс. Но с чего ты их сравниваешь с j в цикле - я не понял
В правый аналоги команд из языка Ардуино.
он не знает изика Дуино - только Си
Закидали меня вчера нехорошими комментами ))) ну и ладно )) надо когда то начинать, и этот день сегодня ))) вот мой первый код под Arduino. Прошу указать на ошибки.
Молодец!
А теперь напиши простыми словами, чего ты хотел добиться в цикле for (строка 22). Судя по всему. переменные a-d - это задержки в мс. Но с чего ты их сравниваешь с j в цикле - я не понял
Догреватель(w) работает 15 мин(переменная a), но после его печка(p) работает еще 7 минут (переменная b). Исходя из этого весь цикл у меня длинною a+b. Переменную j завел что бы цикл сделать возростающим. Можно было сделать и a+b;a+b>=0;(a+b)-1000, но начал путаться с условиями.
Догреватель(w) работает 15 мин(переменная a), но после его печка(p) работает еще 7 минут (переменная b). Исходя из этого весь цикл у меня длинною a+b. Переменную j завел что бы цикл сделать возростающим. Можно было сделать и a+b;a+b>=0;(a+b)-1000, но начал путаться с условиями.
я не об этом. С чего ты взял. что переменная j у тебя равна времени в миллисекундах?
добавлю - чтобы не изобретать велосипед, посмотри описание функции millis()
Напишите словами в левый столбик:
включить 1
подождать
выключить 1
включить 2
подождать
и т.п.
В правый аналоги команд из языка Ардуино.
Вот как должно все выглядеть на графике:
всё время a+b.
w стартует срузу и длина управляющего сигнала = a (15 min) if (j<=a)
n стартует спустя одну минуту, после старта w. Но он длинее w, на 2 минуты((j>=e) && (j<=a+d) )
P стартует спустя пять минуту, после старта w. Но он длинее w, на 7 минуты(j>=c )
w -----------------------------------
n ------------------------------------
p ----------------------------------------
-------------------------------------------------- (a+b)
Догреватель(w) работает 15 мин(переменная a), но после его печка(p) работает еще 7 минут (переменная b). Исходя из этого весь цикл у меня длинною a+b. Переменную j завел что бы цикл сделать возростающим. Можно было сделать и a+b;a+b>=0;(a+b)-1000, но начал путаться с условиями.
я не об этом. С чего ты взял. что переменная j у тебя равна времени в миллисекундах?
добавлю - чтобы не изобретать велосипед, посмотри описание функции millis()
Ну если весь цикл равен (a+b)=900+420=1320 сек. Я цикл уменьшаю на 1000 т.е на 1с. делаю проверки. где все норм появляется синал на порту с задержкой в 1 сек.
Ща буду смотреть функцию millis().
Вот как должно все выглядеть на графике:
всё время a+b.
w стартует срузу и длина управляющего сигнала = a (15 min) if (j<=a)
n стартует спустя одну минуту, после старта w. Но он длинее w, на 2 минуты((j>=e) && (j<=a+d) )
P стартует спустя пять минуту, после старта w. Но он длинее w, на 7 минуты(j>=c )
Я даже не знаю, что с вами делать. Вот так для вас логика прослеживается?
pinW -> HIGH
delay(1m)
pinT -> HIGH
delay(4m)
pinP -> HIGH
delay(15m - 4m - 1m)
pinW -> LOW
...
Вот как должно все выглядеть на графике:
всё время a+b.
w стартует срузу и длина управляющего сигнала = a (15 min) if (j<=a)
n стартует спустя одну минуту, после старта w. Но он длинее w, на 2 минуты((j>=e) && (j<=a+d) )
P стартует спустя пять минуту, после старта w. Но он длинее w, на 7 минуты(j>=c )
Я даже не знаю, что с вами делать. Вот так для вас логика прослеживается?
pinW -> HIGH
delay(1m)
pinT -> HIGH
delay(4m)
pinP -> HIGH
delay(15m - 4m - 1m)
pinW -> LOW
...
Теперь понял. Колличество строк кода будет наверное зашкаливать ))
Догреватель(w) работает 15 мин(переменная a), но после его печка(p) работает еще 7 минут (переменная b). Исходя из этого весь цикл у меня длинною a+b. Переменную j завел что бы цикл сделать возростающим. Можно было сделать и a+b;a+b>=0;(a+b)-1000, но начал путаться с условиями.
я не об этом. С чего ты взял. что переменная j у тебя равна времени в миллисекундах?
добавлю - чтобы не изобретать велосипед, посмотри описание функции millis()
Вот так ???
А не проще машину состояний сделать? Все действия последовательны. Типа этого на три шага, но можно расширять. Главное расписать все состояния и времена. Тогда сделав что то идём к следующему шагу.
Предлагаю линейную задачу с тремя вкл/выкл решить через классы и колбэки!
Предлагаю линейную задачу с тремя вкл/выкл решить через классы и колбэки!
Лучше RTOS :)
Предлагаю линейную задачу с тремя вкл/выкл решить через классы и колбэки!
На сколько я помню класс -это пользовательский тип данных. Если сказать еще проще, то это собрание обектов. Которые являются экземплярами этого класса. Переменные-это поля класса. Методы-функции. Тут один метод, зачем все усложнять.
Предлагаю линейную задачу с тремя вкл/выкл решить через классы и колбэки!
а, вечером в кабак с девками и цыганами на тройке!
Как то так, но с вашими минутами я не разобрался.
Как то так, но с вашими минутами я не разобрался.
Спасибо сударь, суть ясна))) можно подправить условия и использовать )))