Ищу кодера для несложной программки для Ардуино. "Нажималка" кнопки.
- Войдите на сайт для отправки комментариев
Доброго всем дня. Ищу исполнителя для написания программки для Arduino pro mini (на мой взгляд задачка простая, поправьте, если не прав). Интересует - за сколько российских денег можно написать такой скетч? Если кому любопытно - для чего это надо ;) - Программка для переключения режимов фонарика. У этого фонарика есть режимы "Ярко-Тускло-Мигание-Выкл." (назову их 1-2-3-0). Они переключаются "по кругу" последовательным нажатием одной и той же кнопки на фонарике. Хочу попробовать, добавив отдельную кнопку, включать режим "Мигание" из любого режима, который был включен до этого. Для этого надо измерять напряжение на светодиоде (он питается ШИМ-сигналом), обычный тестер показывает это:
0 В = Выкл (режим 0)
3,3 В = Ярко (режим 1)
2,5 В = Тускло (режим 2)
= Мигание(режим 3 - мигание - отследить, используя измерение напряжения напрямую, не получится - напряжение "скачет" от 0 до 3,3В)
Запомнив режим (и периодически проверяя его) ждем нажатия нашей" кнопки. По этому нажатию - отправляем серию "виртуальных нажатий" основной кнопки - там нужно контакт притягивать к земле (0В).
Алгоритм и схему подключения придумал (там все просто, могу разместить здесь - на закидывание помадорами)), а вот перевести этот алгоритм в код нужен программер :) Так как сам разбираться буду долго )))
Фонарик сделан уже из ардуины, или в нём китайская платка?
Сколько вообще кнопок? (судя по тексту вроде две)
Желательно не Nano а Pro mini на 8 МГц, но зависит от батарейки. Если три штуки AA (4-4.5 V) то можно Nano. Если литий (3.7 V) то pro mini.
Какая почта? Моя hcorwin собака яндекс.
Если обсуждать количество аддены, то можно начать с 700.
Да, задачка простая, тут достаточно будет какой-нибудь tiny13. Кода строчек на 50, так что денег даже брать как-то неловко за такое)
Фонарик не на Абдурино :) Обычный китайский за 300руб. В них во всех одна-единственная кнопка, которая перебирает режимы по кругу. Arduino и вторую кнопку как раз хочу добавить сам )
Да, задачка простая, тут достаточно будет какой-нибудь tiny13. Кода строчек на 50, так что денег даже брать как-то неловко за такое)
На одном известном обучающем сайте мну тоже так сказали)) Ну я считаю, что труд должен оплачиваться ))) Тут пол-часа или час придется потратить - ну а сколько стоит час своего времени - каждый решает сам. Весь трабл в том, что рисовать, распаивать детальки отдельного микроконтроллера (как мне кажется) гораздо дольше и сложнее, в т.ч. и для проектировщика. Чем "накодить" 50 строчек под Абдурину. И получить свой, пусть и небольшой, но заслуженный гонорар))
Если есть знание алгоритмики и языка написания программ на Ардуино - добро пожаловать.
С меня - премия :)
bryaq, думаете измерять скважность входящего сигнала с какого-то чужеродного драйвера фонарика -это простая задачка? "Обычный тестер" у ТС имеет аналоговый чип, который показывает среднеквадратичное значение. В ардуино ничего подобного нет, придётся анализировать сигнал, отлаживать. Либо городить интегрирующую цепь, и всё равно отлаживать. Работы минимум на целый день, соответссно стоимость такой работы ни как не менее 5000р.
Вам бы к Анатолию Борисовичу (Чубайсу) в РосНано, там любят выкатывать ценник и при этом не гарантировать результат :) Или (по-американски) ручки для космоса за 1000000долларов разрабатывать. "А русские используют карандаш" )))
Ардуина успешно определяет 3 режима из 4 (не определяется только режим мигания, который необходимо включать и как раз не нужно детектировать:) Проверено на копии опыта с Амперки. (расчет среднего напряжения по нескольким замерам с небольшими паузами все-таки придется делать)
И подсказка по написанию алгоритма на 50 строчек:) "Размышляя на тему как максимально экономить батарейку в проектах где основная задача выполняется по нажатию кнопок (как в пультах ДУ) в голову пришла очень простая и эффективная схема. Ее достоинство состоит в том, чтобы на кнопку возложить не только задачу вызывать ту или иную функцию, но и подавать питание на микроконтроллер. Таким образом потребление схемы в режиме ожидание падает до нуля (!), так как батарейка оказывается полностью отключенной от схемы." Дополнить схему питания Абурины конденсатором для задержки отключения питания (на нужное время) и "развязать" этот конденсатор диодом от входа кнопки справлюсь как-нибудь сам :)
Или (по-американски) ручки для космоса за 1000000долларов разрабатывать. "А русские используют карандаш" )))
Незачёт, этот миф уже давно развенчан.
http://www.factroom.ru/facts/10319
http://inosmi.ru/world/20121118/202319832.html
https://ru.wikipedia.org/wiki/Space_Pen
Спасибо за ссылки, некоторые из которых противоречат сами себе (напр-р про стружки от затачиваемых карандашей в то время, как сами пишут про использование механических карандашей с выдвижным грифелем). Ну и (если Вы доверяете своим ссылкам) хитрые русские купили по 2 бакса 100 ручек (это 200 долларов), а не потратили на их разработку 1 000 000. Это - по-нашему ))) Так что - зачёт! Зачёт нашим! )))
А по теме есть что? :)
Часть идеи привел выше в сообщении о карандаше.
Остается дополнить, что осталось написать текст программки для измерения напряжения с 1-го входа, ожидания нажатия кнопки - посылки серии "импульсов" на один выход, затем ожидание отпускания кнопки и посылки еще серии "импульсов". Это так сложно?
smartbsv, по теме самое мудрое решение -выдрать родной драйвер, и с ноля написать новую прошивку для ардуины или тиньки и вживить её заместо родного. Будет генерить шим с любым количеством градаций, будут все ваши хотелки. Будет крепкий сон и пробуждение по нажатию на кнопку. Думаю это тоже день работы, но зато всё по уму, а не через задний двор...
по теме самое мудрое решение -выдрать родной драйвер, и с ноля написать новую прошивку для ардуины или тиньки
Наверно это самый оптимальный вариант! Но:
1. Плата Pro Mini великовата для "запихивания" в корпус мини-фонарика!
2. Чтобы запрограммировать ATTiny нужно:
- либо писать прогу на С/C++, ассемблере или другом языке
- либо использовать ATTiny с прошитым бутлоадером! А для того, чтобы его прошить нужен ещё и программатор (или хотя бы другая плата Arduino)!
Впрочем есть вариант попроще - Digispark! Его китайский вариант ещё дешевле чем Arduino Pro Mini! А по размеру меньше наверно не бывает, особенно с учетом того, что в плате ещё и USB коннектор!
Кстати я уже "прикрутил" эту плату к Arduino IDE, попробовал прошить простейший скетч! Работает!
Будет генерить шим с любым количеством градаций, будут все ваши хотелки. Будет крепкий сон и пробуждение по нажатию на кнопку.
prosto_andriy, я дижиспарки по 80руб покупал пару месяцев назад, оказалось дешевле купить всю плату, чем одну микросхему на радиорынке :) Спать можно отправлять напрямую прогрмаммируя регистры, или подцепить #include <avr/sleep.h> и подавать более наглядные команды, типа sleep_cpu().
Друзья, спасибо за предложения, но конечный вариант уже определен :) Arduino Pro Mini уже куплена и лежит-дожидается скетча :) Выкидывать готовый драйвер никто не будет - он работает от любого напряжения от 5 до 20В. (Или еще предложите разработать "за пару дней и за 10000руб новый драйвер? :)
По компоновке и размещению платы - предоставьте, пожалуйста, решать мне. - Там тоже уже есть решение :)
От пректировщика требуется только код, ничего больше :)
- нажатием кнопки одновременно подается питание на Ардуино и "замыкается" один вход
- проводится несколько (можно сделать цикл 3-5) измерений напряжения, вычисляется среднее
- в зависимости от вычисленного напряжения отправляется нужное количество (от 1 до 3-х) "виртуальных нажатий кнопки"
- ожидается отпускание кнопки - и выдается соответствующая предвключенному режиму серия "виртуальных нажатий кнопки" , остановка цикла ... ВСЁ! 5000 руб. за написание этого кода - было!, 700руб. - было :)
Работы на час (ну и мозгами пошевелить придется ))) Если готовы - я жду Ваших предложений :)
Ну что тут поделать? У драйвера есть PWM вход? Если нет, то можно и выкинуть, даже если другие так не делают. Как сказал Бонд в "Человеке с золотым пистолетом": Вы знаете, карликов я никогда не убивал, но всё должно когда-то начинаться.
Впрочем, у меня есть мысль. Скорее всего там есть восьминогая микруха с надписью 34063. Её пятый вывод - вход компаратора, который прицеплен в таких драйверах к делителю из резисторов. Можно отцепить и через фильтр гнать PWM. Тогда можно будет делать совместно с ардуиной интересные вещи, типа мигать плавно. Родной контроллер в этом случае не понадобится.
По-идее правильно, только кое что советую учесть: вы таки думаете что МК в фонарике так и ждёт, как бы ему дали серию включений/выключений? А вот и нифига. Во-первых, там есть система подавления дребезга, и конденсатор в сотни пФ-единицы нФ. Он должен успеть разрядиться. И этого не произойдёт за десятки микросекунд, что ему планируется давать в цикле. Во-вторых, ещё может быть программный порог в самом контроллере.
Короче, надо быть морально готовым к ощутимой задержке перед срабатыванием второй кнопки.
У драйвера нет микрухи 34063. Есть LEDA 1403 (6 ножек) и микруха со спиленной маркировкой (8 ножек) и транзистор в корпусе sot23. Поэтому во избежание неожиданного накрытия этой конструкции внутрь не лезу, ограничившись предложенной схемой работы. Которая вполне работоспособна - серию из нескольких быстрых нажатий фонарик воспринимает "как надо" - переключаясь моментально через 1 и через 2 режима :) Походу, он настолько простой, что лишних защит и конденсаторов в нем нет. Зато для предложенного варианта - подходит идеально :)
- проводится несколько (можно сделать цикл 3-5) измерений напряжения, вычисляется среднее
- в зависимости от вычисленного напряжения отправляется нужное количество (от 1 до 3-х) "виртуальных нажатий кнопки"
А можно ведь сделать попроще! Без всяких измерений, если подключить Arduino параллельно старому драйверу!
Единственное, что понадобится - это добавить парочку полевых транзисторов! Попробую объяснить принцип действия!
1. Старая плата подключается не напрямую, а через полевик! Его затвор подключен к Arduino - в обычном состоянии полевик открыт!
2. Когда нажимается вторая кнопка (назовем её BLINK) - напряжение на заданном выходе Arduino меняется и закрывает полевик - старый драйвер отключается!
Arduino генерирует импульсы для подачи на второй полевик, через который запитывается светодиод!
Отпускаете кнопку BLINK и полевик, через который подключена старая плата, опять открывается! В итоге фонарик работает в обычном режиме!
P.S.: Вначале я подумал, что вместо двух полевиков можно использовать сборку типа 8205, но теперь сомневаюсь, подойдет ли она, ведь выводы Drain (сток) у её транзисторов соединены вместе!
prosto_andriy, тоже сначала думал так. Пока не задумался о том, чем же "питать" светодиод, пока родной драйвер отключен от светодиода. Напомню: питание должно быть любым напряжением от 5 до 20В. Если слабенького стабилизатора (на какой-нибудь LM) для питания Ардуины будет более чем достаточно, то питать 10-ваттный светик нужен полноценный импульсный драйвер (который как раз есть в "отключаемой" полевиком от светодиода родной схеме фонарика))).
Формировать ШИМ из входного напряжения (5...20В) будет посложней задачка.
Проще моей схемы - ничего не придумаете :) Не пытайтесь :) Лучше подскажите, как написать программку :)
smartbsv, меня вот удивляет. С одной стороны вы пишите, что не программист. С другой стороны совершенно уверены, что работы на час. Так откуда такая уверенность, чем она обоснована? И кстати я не предлагал удалять всю схему. Только управляющий элемент, в простых фанариках это чип-"капля", в вашем видимо одна из двух микросхем о которых вы упоминали.
Для человека "знающего" не составит труда написать (а, возможно, и скомпилировать из готовых примеров) скетч для выполнения:
- нажатием кнопки одновременно подается питание на Ардуино и "замыкается" один вход
- проводится несколько (можно сделать цикл 3-5) измерений напряжения, вычисляется среднее
- в зависимости от вычисленного напряжения отправляется нужное количество (от 1 до 3-х) "виртуальных нажатий кнопки"
- ожидается отпускание кнопки - и выдается соответствующая предвключенному режиму серия "виртуальных нажатий кнопки" , остановка цикла ... ВСЁ! Конец цикла, на конденсаторе падает напряжение, и схема отключается до нового включения :)
кнопка на мигание - фиксируемая ( НЗ + НР контакты )
при нажатии штатный драйвер ( независимо от режима ) отключается и мигаем через дополнительный драйвер от 555
- не фиксируемая - всё вышесказанное запускаем от тиньки13 ( повторное нажатие - возврат к работе штатного драйвера )
и вопрос :
как ведёт сибя фонарик при длительном удержании кнопки режима ( более 1 сек ) ?
...это к тому что можно обойтись , может быть , одной штатной кнопкой и тинькой13 ?
....."захват светодиодов" :)
короткие нажатия штатной кнопки - перебор режимов
удержание штатной кнопки более 1 сек = вкл/выкл мигания с возвратом в предРежим
Хочу попробовать, добавив отдельную кнопку, включать режим "Мигание" из любого режима, который был включен до этого. Для этого надо измерять напряжение на светодиоде
...срочное-приоритетное включение "мигания" ?
миня тоже вымораживает перебор режимов на "шахтёрском" фонарике :)-
...и не надо измерять напряжение на светодиоде
и вопрос :
как ведёт себя фонарик при длительном удержании кнопки режима ( более 1 сек ) ?
...это к тому что можно обойтись , может быть , одной штатной кнопкой и тинькой13 ?
....."захват светодиодов" :)
короткие нажатия штатной кнопки - перебор режимов
удержание штатной кнопки более 1 сек = вкл/выкл мигания с возвратом в предРежим
Хорошее предложение - самое простое. С удовольствием бы так сделал. Но отсутствие запасного драйвера под конкретный светодиод (и возможная смена фонарика на другой с другим светодиодом) вынуждает делать решение на Ардуине и кнопке, как наиболее простое из оставшихся.
Длительное (1сек++) удержание кнопки переключения режимов ведет (там хитрая система:)
- в случае, если светодиод погашен (режим 0), происходит включение в 5-режимном варианте работы "Ярко-средне-тускло-мигание-сигнал SOS"
- в случае, если фонарик светит в каком-то из режимов - происходит выключение, и при следующем включении фонарик продолжает работу в том режиме, из которого его выключили.
Так что длительное удерживание "родной" кнопки использовать нельзя :(
...срочное-приоритетное включение "мигания" ?
Да, и меня тоже вымораживает перебор режимов "по кругу" одной кнопкой.
Нужно "экстренное включение моргалки" по удержанию отдельной кнопки как наиболее естественной реакции на неожиданность.
тады как выше говорил народ - убрать всё , кроме драйвера-ключа светодиодов , одна кнопка , одна тинька.....
...короткие нажатия ( яркость ) , длинные ( SOS )
Длительное (1сек++) удержание кнопки переключения режимов ведет (там хитрая система:)
...можно вычислить время удержания кнопки чобы тинька перехватила это нажатие раньше контроллера штатного ( 0,478 mS )
нет ?
Длительное (1сек++) удержание кнопки переключения режимов ведет (там хитрая система:)
...можно вычислить время удержания кнопки чобы тинька перехватила это нажатие раньше контроллера штатного ( 0,478 mS ) , а чо там сибе подумает штатный контроллер - не по фиг ли ?
тинька до него включит SOS !
...вот только возврат из SOS будет не в туда наверное :(
НО - это же не важно !?
нет ?
ой....
...короткие нажатия ( яркость ) , длинные ( SOS )
Вот в этом случае меня точно ждут намного большие изменения.
1. Если выкидывать только родную "микросхему с логикой", то надо разбираться с разводкой родной платы (датащита - нет в интернете). Это время. Сдуть и запаять новую микросхему - нет оборудования (кроме обычного паяльника:) Программа в этом случае будет уже не такой простой, т.к. нужно будет придумывать ШИМ, несколько режимов, делать зависимость ШИМа от входного напряжения, чтобы не спалить светодиод... и возможно много того, чего даже не предполагаю.
2. Если выкидывать все, кроме силового ключа (а там еще катушка на сердечнике зачем-то?), то надо делать: а) новую плату, б) новую (большую и обширную) программу, в) тестировать - проверять и отлаживать.
Времени и денег оба варианта съедят немерянно:)
фота внутренностей чЮдо-фонарика есть ?
...можно вычислить время удержания кнопки чобы тинька перехватила это нажатие раньше контроллера штатного ( 0,478 mS ) , а чо там сибе подумает штатный контроллер - не по фиг ли ?
тинька до него включит SOS !
...вот только возврат из SOS будет не в туда наверное :(
НО - это же не важно !?
нет ?
Да как-то все-таки удобнее возврат к последнему включенному режиму, чем перебирать заново все режимы.
варианты 1 и 2 из #26 приведут тибя к варианту 37-Ц , в котором "Времени и денег обобщённый вариант съест Умерянно :) "
...можно вычислить время удержания кнопки чобы тинька перехватила это нажатие раньше контроллера штатного ( 0,478 mS ) , а чо там сибе подумает штатный контроллер - не по фиг ли ?
тинька до него включит SOS !
...вот только возврат из SOS будет не в туда наверное :(
НО - это же не важно !?
нет ?
Да как-то все-таки удобнее возврат к последнему включенному режиму, чем перебирать заново все режимы.
а это как воспримет ШтатКонтр длитНажатие , которое перехватит тинька !
тинька же обрубит питание штатного....
....штатный - отработает его или нет ?
надо опыты изучать.....
Можно, конечно, и заново фонарик спроектировать :)
А чем не устраивает вариант, предложенный в самом первом сообщении темы? :) Конкретное решение под конкретную задачу.
изучением-исследованием того чо кто-то там напаял и запрограммировал :(
....для того чобы туда вклиницца
Конкретное решение под конкретную задачу.
ещё никто не знает чем это прощееееее :)-
даже ты , автор :)
фотку выложи ! в отпуске будет про чо подумать.....
Вроде не про схемотехнику тема :) Но уж раз просите - пожалуйста! :) (надеюсь, что можно картинки выкладывать)
самая большая микросхема не имеет маркировки (спилена?)
интересснее перепрограммить тиньку штатную под свою логику управления ( нажатия ) , чем пристраивать ещё одну.....
smartbsv, очень похоже, что so8 -это МК, so23-6 это драйвер тока светодиода. Через R7 возможно как раз выходит шим.
Нужно схему срисовать и выпаять микросхему, если она совпадает по подключению с тинькой и тогда впаять свою со своей программой. На С программу написать вообще не проблема для фонарика за адекватные деньги которые были озвучены, 700 руб. Только сделайте схему. Лепить еще один мк глупо. А тиньку 85 как раз с дигиспарка возьмете предварительно там же и прошив.
Срисовать схему не смогу, т.к. нужными знаниями не обладаю. Выпаивать и впаивать заново микросхему нечем. А если тинька не подойдет по подключению? Делать "лишние движения" смысла нет.
Другие варианты предлагать бессысленно (хотите - делайте сами, мне советовать - лишнее).
Задача озвучена (выше). Кому интересно (и по силам) - жду предложений :)
Срисовать схему не смогу, т.к. нужными знаниями не обладаю. Выпаивать и впаивать заново микросхему нечем. А если тинька не подойдет по подключению? Делать "лишние движения" смысла нет.
То что выше описано по силам тут многим, просто горбатого лепить не позволяет чувство прекрасного:-) Схему срисовать с микросхемы с 8мью ногами особого дара не нужно, только мультиметр. А как проверить подходит ли тинька? да как раз по тому что вы срисуете, какая нога "пищит" на - питания, какая на +, какая на кнопку, какая на транзистор через микруху мелкую. По идее там всего нужных ног 5 штук, прозвонить их мультиметром и все.
Но раз не хотите по нормальному сделать, могу и по плохому, только не скейтч, а хекс файл дать для ардуино, написаный в атмел студио, т.к. сама программа ардуино... Хекс заливается без програматора через XLoader. Давайте схему подключения которую вы придумали и одобрили и будте готовы залить программу несколько раз для отладки, т.к. с осознанием режима могут быть проблеммы, т.к. 0 В = Выкл (режим 0), 3,3 В = Ярко (режим 1), 2,5 В = Тускло (режим 2) на самом деле проще всего измериь добавив RC цепочку перед АЦП, т.к. надежность 3-5 измерений будет никакая.
Срисовать схему не смогу, т.к. нужными знаниями не обладаю. Выпаивать и впаивать заново микросхему нечем. А если тинька не подойдет по подключению? Делать "лишние движения" смысла нет.
То что выше описано по силам тут многим, просто горбатого лепить не позволяет чувство прекрасного:-) Схему срисовать с микросхемы с 8мью ногами особого дара не нужно, только мультиметр. А как проверить подходит ли тинька? да как раз по тому что вы срисуете, какая нога "пищит" на - питания, какая на +, какая на кнопку, какая на транзистор через микруху мелкую. По идее там всего нужных ног 5 штук, прозвонить их мультиметром и все.
Но раз не хотите по нормальному сделать, могу и по плохому, только не скейтч, а хекс файл дать для ардуино, написаный в атмел студио, т.к. сама программа ардуино... Хекс заливается без програматора через XLoader. Давайте схему подключения которую вы придумали и одобрили и будте готовы залить программу несколько раз для отладки, т.к. с осознанием режима могут быть проблеммы, т.к. 0 В = Выкл (режим 0), 3,3 В = Ярко (режим 1), 2,5 В = Тускло (режим 2) на самом деле проще всего измериь добавив RC цепочку перед АЦП, т.к. надежность 3-5 измерений будет никакая.
Спасибо за советы. Честно. Но зачем сразу "по-хорошему" и "по-плохому"? То, что удобно и хорошо для одного человека, может быть не совсем удобно и хорошо для другого, так не считаете? Понимаю Ваше чувство прекрасного и солидарен с ним. Но здесь именно нужен такой "колхозный вариант"(если интересно - для чего, то готов объяснить).
smartbsv, Давайте свою почту или иной вид связи.
GFX, nik_gmp(сoбaка)mail.ru
остальные результат увидят ?
А есть интерес?
а то !!!!!!!!!!! :)-
...такая лепнина - интерессна , да !
а то !!!!!!!!!!! :)-
...такая лепнина - интерессна , да !
Тогда страдайте, т.к. результата тут не будет ;-)