Печка для сауны с управлением на Ардуино Нано (Проект новичка)
- Войдите на сайт для отправки комментариев
Ср, 29/07/2015 - 22:21
Всем доброго времени суток!!
Предпосылки к созданию проекта:
У соседа в сауне финская электропечка, дом в деревне, а наши татарские электрики любят жестоко шутить над населением. Вот после очередной шутки отказал блок управления:
как показал разбор, сгорел PIC контроллер, ключи управления релюшками, диоды на плате реле. заменить все не трудно, проблема с программой для пикушки. А поскольку меня давно привлекала тема ардуино, решил попробовать.
Состав проекта:
Ардуино нано
MAX7219 и то, что осталось живым на плате управления.
схему собрать было не сложно, даже в протеусе нарисовал все, а вот скетч меня озадачил:
На сей момент есть отображение информации с датчика температуры Dallas DS18B20, работают кнопка включения и подсветки
И как говорится, на этом ступор!
Уважаемые гуру программирования! Пожалуйста, помогите с составлением меню, перерыл весь инет, перепробовал массу комбинаций, не получается решить простой алгоритм (не для меня простой) :
Есть четыре кнопки: ТЕМПЕРАТУРА, ВРЕМЯ, UP, DOWN.
Надо реализовать: при нажатии на кнопку ТЕМПЕРАТУРА кнопками UP & DOWN выставляется значение температуры и заносится в память после нажатия кнопки ТЕМПЕРАТУРА и такой же алгоритм со временем, при Нажатии на кнопку ВРЕМЯ кнопками UP&DOWN выставляется время и заносится в память после нажатия кнопки ВРЕМЯ.
Пожалуйста, помогите хотя бы ссылку на аналогичный алгоритм, сосед уже заел, я с этой темой два месяца колупаюсь.
хотел выложить фотографии и схемы, но тут не грузится больше одной фотки или я чего то не пойму...
Спасибо заранее!!!
Ну а вопрос то в чем?
Сделать Вам проект? Поругать Ваших электриков?
Решили попробовать - пробуйте! Будут конкретные вопросы - формулируйте, Вам обязательно помогут.
Но начинать с печки, я бы не советовал......
вопрос в меню из трех кнопок, не смог найти ни одного примера, хотябы в какую сторону копать подскажите, а может есть кусок кода?
Я извиняюсь, а может кто подскажет, почему больше одной фотки не грузится, здесь ограничение по размеру или по количеству стоит?
вопрос в меню из трех кнопок, не смог найти ни одного примера, хотябы в какую сторону копать подскажите, а может есть кусок кода?
Копвйте гугл, там этих меню как грязи
Ребят, я понимаю, вам кажется на вскидку вопрос выеденного яйца не стоит, но поверьте, месяц уже рою, в такой простой комплектации, когда кнопки напрямую подключены к цифровым пинам, а индикация идет через MAX7219 на семиразрядник нигде нет, ни у кого не видел, наверное это очень просто, но я программирование занялся месяца два назад, и этот раздел для меня китайская грамота, кроме того, если получится, я думаю, много таких, как я будут благодарны. Подскажите плиз!
(Показывает средний палец)
Что тут еще можно показать? Тоска зеленая, берете тетрадку и карандаши и рисуете алгоритм. Переносите его в код.
/sites/default/files/u5748/sauna.png
так выглядит схема, я думаю, так понятнее, чего я хочу?
Ну что тут скажешь, остается надеяться, что остались еще отзывчивые люди в земле русской...
А Вы знаете, вот этот палец из ступора то и вывел, карандаш и бумага помогли!!! пошел спать, завтра выложу результат, СПАСИБО!!!!!!!
Ну что тут скажешь, остается надеяться, что остались еще отзывчивые люди в земле русской...
в земле русской остались лентяи и халявщики... вас таких тут каждый день очередь собирается. .. взывающих к земле, взаимопомощи, сознательности и тд... но не желающих даже пальцем шевельнуть... расказывающих что каждый должен заниматься своим делом и что вот если бы кому то понадобилось корову подоить, то вы бы с радостью за бесплатно любого быка бы довели до иступления...
хотите учиться, начните с построения алгоритмов,
хотите халявы , ждите когда там кто то с земли вам поможет
Таварисч дарагой . Поможет Вам линейное меню , запихнутое в сетуп и отзывающееся после ресета.
На системные вопросы, свидетельствующие об отсутствии всего , типа "вот вам всё моё (или чьётто еще -код, схема и комменты), скажите что тут не так ( херегознаеткак)" , скорее всего Вы ответ не получитe.
Правильный вопрос пишется так: я делал так ( код) , так (код) , еще так и так (многа правильно выложеннога кода) , после анализа ( тотто и тотто ) мне предполагается, что проблема в строках (...) , что скажет СТАЯ? :)
" психолог на больничном, по всем вопросам обращаться к участковому гинекологу :)"
Ну что тут скажешь, остается надеяться, что остались еще отзывчивые люди в земле русской...
Это, попросил бы не обобщать.
Это, попросил бы не обобщать.
Ой,остальных настолько мало, что их количеством можно принебречь. :)
...
Уважаемые гуру программирования! Пожалуйста, помогите с составлением меню, перерыл весь инет, перепробовал массу комбинаций, не получается решить простой алгоритм (не для меня простой) :
Есть четыре кнопки: ТЕМПЕРАТУРА, ВРЕМЯ, UP, DOWN.
Надо реализовать: при нажатии на кнопку ТЕМПЕРАТУРА кнопками UP & DOWN выставляется значение температуры и заносится в память после нажатия кнопки ТЕМПЕРАТУРА и такой же алгоритм со временем, при Нажатии на кнопку ВРЕМЯ кнопками UP&DOWN выставляется время и заносится в память после нажатия кнопки ВРЕМЯ.
Пожалуйста, помогите хотя бы ссылку на аналогичный алгоритм, сосед уже заел, я с этой темой два месяца колупаюсь.
хотел выложить фотографии и схемы, но тут не грузится больше одной фотки или я чего то не пойму...
Спасибо заранее!!!
Сосед тоже за "Спасибо заранее!!!" заел? :)
Можно посоветовать, как культурно послать соседа. )))
Здесь кусочек с меню, адаптируйте под себя.
Здесь кусочек с меню, адаптируйте под себя.
Уверен что твоё меню ровно для его количества кнопок? Почитай, проблема не в примерах меню, а в том что не знает куда кнопки девать. :)
Здесь кусочек с меню, адаптируйте под себя.
Ну, если и функцию key() под себя переписать не сможет, тады я пас((((
Узкое место у Вас установка значений температуры и чего то там еще.
Начните действительно с Алгоритма. Попробуйте его макимально упростить. Сделайте тестовый пример, чем меньше тем лутчше, тогда Вам проще будет помочь. Напишиите что не получается. Тогда больше шансов что Вам помогут, в любом коде что бы разобраться, найти ошибки и еще и подсказать нужно время. И чем больше код тем больше времени на это требуется, тем меньше участников форума Вам сможет помочь и тем лутчше разберетесь сами, и проблема возможно рассосется......
Расскажу свой пример. Код порядка двух сотен строк. Не работает адекватно. Все вроде просто, но виснит. Первый посыл - написать на форуме, помогите, баг компилятора. Но прежде чем обращаться к Ув. сообществу решил выделить проблему и сократить код до минимума, дабы четко обозначить проблему. И когда осталось уже десяток строк, сам обнаружил что в функции объявлена переменная которую я считал глобальной. Написал лишний int ( должно было быть: GlobalP = 25; я автоматом написал int Global25 = 25)......
Ну и еще по Вашему вопросу. Быть может проще будет реализовать такой алгоритм, параметр меняется при нажатии соответствующей кнопки, удерживаете кнопку температура и нжимаете UP или Down - соответственно меняется температура. удерживаете кнопку время - меняете параметр время. А в память заносите когда отпускаете соответсвующую кнопку.
Уважаемый Bobrov.Anatoliy, у меня есть муфельная печь в которой я обжигаю детали определенное время, так что задача похожая на Вашу. Я тоже хотел сделать меню, кнопки, память но потом решил сделать по другому, и как для меня то удобней.
Взял 4 переменных резистора и установил на переднюю панель сюда же сегментник, сверху 1 кнопка для старта/остановки таймера.
2 резистора для установки температуры (Шкала 1я - 0,100,200, и.тд до 1000) (Шкала 2я - 0,10,20, и.тд до 90), точность 10 градусов меня устраивает.
2 резистора для установки таймера (шкала 1я - 0,1м,2м и.тд до 10мин) (шкала 2я - 0,10с,20с и.тд до 50сек) точность 10 секунд меня устраивает, (разбить можно и по другому)
Преимущества, на мой взгляд такие - Не нужно лезть в меню, заносить в память, считывать с памяти, Достаточно посмотреть на лицевую панель и видно по шкале заданную температуру, по сегментнику текущую и при желании изменить, покрутив ручку.
Тоже самое и с таймером можно менять значение даже при его работе.
Подумайте, может и соседу будет проще регулировать таким образом
Может из утюга выковырять регулятор и на печку его. Ваще никаких ардуино.
==
Уважаемый Bobrov.Anatoliy, у меня есть муфельная печь в которой я обжигаю детали определенное время, так что задача похожая на Вашу. Я тоже хотел сделать меню, кнопки, память но потом решил сделать по другому, и как для меня то удобней.
Взял 4 переменных резистора и установил на переднюю панель сюда же сегментник, сверху 1 кнопка для старта/остановки таймера.
2 резистора для установки температуры (Шкала 1я - 0,100,200, и.тд до 1000) (Шкала 2я - 0,10,20, и.тд до 90), точность 10 градусов меня устраивает.
2 резистора для установки таймера (шкала 1я - 0,1м,2м и.тд до 10мин) (шкала 2я - 0,10с,20с и.тд до 50сек) точность 10 секунд меня устраивает, (разбить можно и по другому)
Преимущества, на мой взгляд такие - Не нужно лезть в меню, заносить в память, считывать с памяти, Достаточно посмотреть на лицевую панель и видно по шкале заданную температуру, по сегментнику текущую и при желании изменить, покрутив ручку.
Тоже самое и с таймером можно менять значение даже при его работе.
Подумайте, может и соседу будет проще регулировать таким образом
Спасибо большое за совет, но тут уже пошло дело принципа, понимаете, доказать себе что могу, да, есть простые варианты, более удобные, но как то так сложилось, сначала не хотелось менять лицевую панель, да и казалось, куда проще, выпаять один микропроцессор и вставить другой.
Долго писал код, подбирал куски из программ, для себя, для души, ведь это такое удовольствие, когда он выполняется так, как ты задумал! Сейчас подошел к стадии, когда забрезжил свет в конце проекта, а тут ступор, ну так бывает, нужен толчек, вот я и решился выложить на форум.
Ну Вы видите, люди разные, конечно, неприятно, когда на тебя наезжают, казалось бы не хочешь помочь, не пиши ничего, пройди мимо, обидно, но с другой стороны, есть и такие как Вы, просто добрый совет или подскажут, что я не так пишу или спрашиваю, да даже тот, что флудит распальцовкой Puhlyaviy, или Looka
и тоже полезного дал, из ступора вывел, я взял листок, написал блок схему и по ней состряпал код, конечно корявый, но работает. Только после таких что-то не хочется больше ничего спрашивать.
Спасибо большое всем, кто хотя бы с поддержкой подумал о моих потугах, спасибо за ваше время и советы!!!
С кнопками попробуйте вот так
хз поможет или нет. но у меня на двух кнопках. у тебя соответственно на 3 и надо будет переделать
в лупе
нужно сделать несколько функций, отвечающих на каждый экран, плюс экран с выбором нужного экрана
вот например пару экранов
а управляется просто. есть переменные, в которые записываются значения текущие на конкретном экране
плюс переменные которые изменяются в меню и текст например для меню, для экономии памяти. плюс можно хранить во флеше
Фига тут дядя наехал... он не знал про карандаш и бамагу.. а теперь у него душнвная травма и куча комплексов?
хочется обнять крепко и спросить шепотом:
- КАК ЖЕ ТЕБЕ ТЯЖКО ЖИВЕТСЯ С ТВОМИ КОМПЛЕКСАМИ.
Ну Вы видите, люди разные, конечно, неприятно, когда на тебя наезжают, казалось бы не хочешь помочь, не пиши ничего, пройди мимо, обидно, но с другой стороны, есть и такие как Вы, просто добрый совет или подскажут, что я не так пишу или спрашиваю, да даже тот, что флудит распальцовкой Puhlyaviy, или Looka
А в каком месте я Вас задел или чем обидел?
В чем флуд-то, своим опытом аоделился?
В каком месте я на Вас наехал-то?
А в каком месте я Вас задел или чем обидел?
В чем флуд-то, своим опытом аоделился?
В каком месте я на Вас наехал-то?
привыкай.
Ты учишь их решать проблемы. А они научившись кидают в тебя какашками и уходят.
Когда какашки летят прицельно это еще пол-беды. Беда это когда их на вентилятор накидывают, стоя позади него во всем белом .
а сама плата сейчас с установленной наной и MAX7219 так:
LOOKA подсказал мудрую вещь:ну и еще по Вашему вопросу. Быть может проще будет реализовать такой алгоритм, параметр меняется при нажатии соответствующей кнопки, удерживаете кнопку температура и нжимаете UP или Down - соответственно меняется температура. удерживаете кнопку время - меняете параметр время. А в память заносите когда отпускаете соответсвующую кнопку.
Блок схему составил по этому алгоритму, вот только с привязкой к ней операторов сложно, подскажите комментарии мои верны?:
Как вы понимаете, у меня не стыкуется переход к кнопкам UP и DOWN и еще, правильно ли идет печать или ее делать в большом цикле?
вот общий код со вставкой кода выбора меню:
Заранее спасибо!!!!
по первой кнопке у меня приблизительно так. но там не все. лень было рисовать
Дык вон же универсальную штуку написал 999й про кнопочки в соседней ветке. Ток вставляй и радуйся.
ЖЕКА, я такое меню делал на двухстрочном LCD, тут дело другое, сам видишь, трехразрядный семисегментник и три кнопки, выбор режима и UP DOWN, там через ISP интерфейс и шилд с кнопками прикручен к экрану, кода на эту тему море, а вот то что мне надо есть в примерах а вживом проекте нет, а сам я не допру никак как вставить кнопки в пример:
Пыжусь, прописываю, но косяк на косяке:
не понимаю, как после проверки кнопки установки температуры вызвать кнопку UP, да чтобы она еще и прибавила мне температуру. А с семисегментником вообще код разрастается, попробую его печать в библиотечку засунуть.
какая разница какой дисплей если ты принцип уже знаешь
Жека, скажу иными словами, твой код меню слишком крут для моей печки, мне надо тремя кнопками выставить температуру и все. Кроме того, весьма проблематично индицировать пункты меню на семисегментнике, согласись, чтобы написать на трехэлементном семисегментнике "МЕНЮ" или "ДАННЫЕ" надо извернуться..., но за пример кода спасибо, конструкция изящная, и компактно решает проблему.
какая разница какой дисплей если ты принцип уже знаешь
Знать и понимать это разные вещи.
3 знака.
Первый можно использовать для обозначения что за переменная, оставшиеся 2 для температуры.
Жмакаем кнопку режим она меняет переменную например TYPE по кругу
Типа
1 нижняя температура
2 верхняя температура
3 время
4....
Дальше вообще просто каждый раз обнаружив нажатие up/down проверяем переменную режим и увеличиваем или уменьшаем связаную с этим режимом переменную.
А дисплей вообще отображаем проверяя чему там TYPE щас равна.
Честно говоря утомили уже своими соплями.
а чего семисегментный? возьми 1602. намного себе упростишь жизнь
а чего семисегментный? возьми 1602. намного себе упростишь жизнь
Ты изыскано издеваешься? Проблема с 3 кнопками меню сделать. Хотя проще только меню с 2 кнопками. А там вообще труба будет.
Сбежал он. Как обычно. Получил ответ и тихо смылся
хорош прикалываться, я же сказал изначально такая задача: заменить PIC ушку на плате управления печкой сауны, чтобы не менять дизайн панели управления:
Пухлый, сгинь, иди паркет свой "ручной работы" натирай!
у меня в черновике остался вариант с обработкой кликов более двух раз - нужно наказать новичков многокликовым однокнопочным меню.
Пухлый, сгинь, иди паркет свой "ручной работы" натирай!
Гыыы тоесть предложеный выше алгоритм в пяток строк слишком прост? Вас теперь смущает его очевидность? Или то что сами не смогли до него додуматься?
я не вижу никакого дисплея, если конечно он через красную полоску не просвечивает
разделять просто, уставнока температуры через значок градусы, и т.д.
а что настраивается вообще?
Во! научился картинки вставлять, схема устройства в протеусе:
у меня в черновике остался вариант с обработкой кликов более двух раз - нужно наказать новичков многокликовым однокнопочным меню.
да на твоем скече однокнопочное меню реализуется за 2 минуты.
Долго держишь меняется режим.
Короткие нажатия увеличивают температуру по кругу.
нет - навичок должен страдать, поэтому не менее пятикликовое управление должно быть
про "долго держишь" не совсем ясно - у меня честная кнопка: одно событие - один такт.
нет - навичок должен страдать, поэтому не менее пятикликовое управление должно быть
да он уже утомил нытьем. Я ему вон выше расписал как в пяток строк его меню сделать из 3 кнопок. Но он делает вид что не заметил.
патамушта ты пратииивный!
даблкликом удобнее режимы переключать.
патамушта ты пратииивный!
даблкликом удобнее режимы переключать.
это все потому что рано с больничного вышел. Нуна еще пару недель побалдеть.