| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| мултифункционален бутон + PWM http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=8966 |
Страница 1 от 5 |
| Автор: | pachuka [ Сря Юни 22, 2011 12:06 am ] | |||||||||
| Заглавие: | мултифункционален бутон + PWM | |||||||||
от няколко седмици се боря да направя един контролер за 2 RGB лампи и една и една обикновенна за целата ми трябва да направя бутон който да различва click, double click and hold работа с MPLAB под С това е кода до който стигнах последно но така не работи бутона изобщо не засича. Тръгнал съм да го правя със инттерупт защото искам да вкарам и функция която да превърта плавно цветовете .
много съм го закъсал , вече направих кутия за трафа и за контролера , направих и дистанционно което да го ползвам за бутон, направих и водоустоичивите лампи. Мислех че кода няма да ми е толквоа проблем но уви.... та моля някой да даде едно рамо , че немошах да си намеря протеус зада ги тествам направо на машината и трябва постоянно да свалям и закачам което направо вече ме побърква. Чипа е 16f627a |
||||||||||
| Автор: | michev [ Сря Юни 22, 2011 12:20 am ] | |||||||||
| Заглавие: | ||||||||||
Не съм ти гледал целия код, и не съм се мъчил да разбирам какво си правил, но на пръв поглед виждам в прекъсването, че
|
||||||||||
| Автор: | pachuka [ Сря Юни 22, 2011 12:42 am ] |
| Заглавие: | |
даа бе защо съм ги оставил там а не при другите , още утре ще пробвам как ще е като ги извадя от там. Но изобщо в правилна насока ли съм , някой правил ли е енещо подобно, по много техники се наблюдават такива бутони |
|
| Автор: | bkulev [ Сря Юни 22, 2011 9:31 am ] |
| Заглавие: | |
Колега, тази тема е за "Академия". И аз не съм ти гледал подробно кода, но мога да ти дам някои насоки, които така да се каже са общи при работа с бутони: - Трябва да разпознаваш натискането и отпускането на бутона, т.е. преходите от едното в другото състояние, обикновенно се постига с прости логически функции приложени към текущото и предишното състояние - Трябва да приложиш техника против трепкане на контактите, защото всички бутони повече или по малко го правят - Има различни техники в прекъсване или не, но ако приложението ти не е сложно, не е необходимо да правиш прекъсване. В този случай имай предвид, че сканирането на бутоните се прави с ниска честота, т.е. рядко, защото не е необходимо да е бързо, все пак това е човешки интерфейс |
|
| Автор: | pachuka [ Съб Юни 25, 2011 4:54 pm ] |
| Заглавие: | |
на теория ми е ясно как трябва да стане , но писането на кода ми куца. |
|
| Автор: | tolstolob [ Нед Юни 26, 2011 12:48 am ] | |||||||||
| Заглавие: | ||||||||||
Koпи & пейст (с допълнението за double-click) от друга подобна тема. Не гарантирам тръгване от раз, щото е нахвърляно набързо. Само трябва да измислиш как да викаш OneButtonTask() циклично.
edit: Опс, намерих грешка. По-добре е таймерите в случая да са с 2 стейта. |
||||||||||
| Автор: | relsys [ Нед Юни 26, 2011 10:38 am ] |
| Заглавие: | |
@tolostolob +1 Все едно аз съм го писал тоя код. Като покажа на някой обаче код написан в такъв стил, нещо не могат да го разберат. Толкова ли е сложно и неразбираемо? Според мен, стейт машините са най-разбираемия начин за описване на дадена задача. |
|
| Автор: | tolstolob [ Нед Юни 26, 2011 1:19 pm ] |
| Заглавие: | |
Е, точно в тоя му вид не бих го ползвал в мой код, но за илюстрация - става. @relsys, виждам, че работиш с пикове основно, ако искаш добави разните му там честоти, инициализации, фюзове и т.н. и да стикнем темата, че като гледам половината въпроси тук са за бутони |
|
| Автор: | pachuka [ Вто Юни 28, 2011 2:13 am ] | ||||||||||||||||||
| Заглавие: | |||||||||||||||||||
@tolstolob благодаря много ако го бях видял по рано твоя отговор щях да си спестя доста нерви. Но успях да се спрява и сам с бутона
НО сега ми идва другия проблем. За да е всичко готово ми се иска там където е "mode==3" да се пускат да се връткат всички възможни цветове едновременно и на двата RGBta демек RA2=RB1= зелено RA3=RB2= червено RB0=RB3 = синьо та моляви дайте едно бързо рамо че съм си дал срок до петък да е готово всичко и да ги монтирам PIC а е 16f627a че това със пулса не съм го рпавил досега и тези настройки са доста мътни пробвах следния код но промлема е че така само светва плавно свето диода , а неиска да се изгася плавно
|
|||||||||||||||||||
| Автор: | pachuka [ Сря Юни 29, 2011 3:52 am ] |
| Заглавие: | |
искам да постигна този ефект. някой можели поне да разясни малко как трябва да стане защото миголяма мешавица в главата . вече имам прекъсване на с него мисля да увеличвама честотата, как да задам тази стойност да светка постепенно или да изгася постепенно даден пин. |
|
| Автор: | ToHu [ Сря Юни 29, 2011 7:38 am ] |
| Заглавие: | |
Мммм какво конкретно те мъчи, трябват ти 3 PWM, аз не бих изпрал точно пик за целта но при тебе вече е факт. Остава ти въпроса с преливането на цветовете което може да стане по два начина, по сложния да измислиш алгоритъм който да мени едновременно трите PWM в желаната от теб комнинация, другия по лесен ако си решил да имаш примерно 64 стъпки на промяна да си зададеш табличните стойности и да ги въртиш. може и нещо междинно, да се движиш по таблични стойности, но да апроксимираш между тях, така ще имаш повече стъпки и плавност. Тук апроксимацията трябва да с епомисли дали винаги ще е линейна, или по скоро дали винаги ще е един тип функция без значение линейна или не. Като знам колко много флаш имат тия пикове може и да не ти стигне |
|
| Автор: | valioman [ Сря Юни 29, 2011 9:22 am ] |
| Заглавие: | |
Що бе Тони ако иска точно това от картинката .. ми то се вижда алгоритъма ..колко флаш ще иде за пускане на един таймер и в прекъсването му според зададените стойности да клатиш 3 те крака . Май Цецо преди беше се бъзикал с един пикльо 12-ка на тази тема. Е ако имаше 3 PWM щеше да е прекалено лесно ама нали за това сме пикоборци .. да ни е трудно |
|
| Автор: | RM [ Сря Юни 29, 2011 9:34 am ] | |||||||||||
| Заглавие: | ||||||||||||
Правих и аз нещо за RGB ... ама не се сещам вече за какво беше и как изглеждаше. Спомням си че плавно се смесваха цветовете, и имаше условие да не с включват трите диода заедно, нещо пазене на батерииката ... . Мисля че основното беше това :
|
||||||||||||
| Автор: | ToHu [ Сря Юни 29, 2011 12:41 pm ] | |||||||||
| Заглавие: | ||||||||||
Е ако иска точно това от картинката нещата са прости, там се мени само едният ШИМ, но не знам какво преливане би се получило, иначе по тоя начин може д астане мног опо плавно значително по лесно, може и 10 битов да е ШИМ. |
||||||||||
| Автор: | pachuka [ Сря Юни 29, 2011 4:25 pm ] |
| Заглавие: | |
точно това искам от катинката, преливане само най голямата яркост на цветовете. гледам че му викат дъга или rainbow само къде аз искам да има и бяло. във youtybe е пълно със готови таквиа проекти с пикчета 12фххх таймера ми е на лице не е проблем да вкарам в него една променлива "x" която да се мени от 0до 255 за желано от мен време. но как да задам на самия пин тая стойност ако напиша RB1=255; и RB2=120; свети само с максимална мощност RB2 та май това ми е проблема алгоритъма ще го измисля за връткането, но дори и таблично да го направя както предлага тони пак незнам как да задам да свети примерно наполовина единия лед. |
|
| Страница 1 от 5 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|