Универсално дистанционно, IR управление
Здравейте скъпи професионалисти и любители! Продължавам да изграждам универсален контролен панел. В последната част се опитах да накарам arduino да работи като стабилизатор за увеличаване. Принуден, но резултатът не ме задоволи. Затова купих готови стабилизатори от www.pololu.com и организирах трансплантация на мощност за arduino.
На следващия етап внедрих IR предавател (IR LED).
Ако някой мисли, че това е просто, той дълбоко се лъже. Първо, библиотеките, прикачени към безброй примери от Интернет, са напълно повредени или специално коригирани, за да не работят. Работната библиотека IRremote.h е на официалния ресурс arduino.cc. Но и той няма да работи правилно, тъй като софтуерът Arduino избира библиотеки според някакъв мистериозен алгоритъм. Бъдете внимателни и първо премахнете старите версии на библиотеките.
И сега истинският въпрос. Библиотеката IRremoteInt.h поддържа предавателния светодиод на 3pin и 9pin arduino nano, uno и т.н., но те вече са взети в моя проект. Трябва да го прехвърлим на 11pin, който също има таймер и PWM. За съжаление, библиотеката IRremoteInt.h е написана с помощта на мистериозни оператори и променливи, команди и нотация. Няколко часа се опитвах да разбера сам, главата започна да ме боли. Пих лечебна бира и сега главата не ме боли, но просветлението не идва. Може би няма достатъчно бира? В библиотеката таймерите се управляват от следните команди: // Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano и т.н. #else //#define IR_USE_TIMER1 // tx = pin 9 #define IR_USE_TIMER2 // tx = pin3 --------------------------------------------------------------------------------------------------------------------------------
#define TIMER_RESET #define TIMER_ENABLE_PWM (TCCR2A = _BV(COM2B1)) #define TIMER_DISABLE_PWM (TCCR2A &=
(_BV(COM2B1))) #define TIMER_ENABLE_INTR (TIMSK2 = _BV(OCIE2A)) #define TIMER_DISABLE_INTR (TIMSK2 = 0) #define TIMER_INTR_NAME TIMER2_COMPA_vect ========================= ==== ====================== Промених стойностите: #define TIMER_ENABLE_PWM (TCCR2A = _BV(COM2B1)) на TCCR2A = _BV(COM2A1) #define TIMER_DISABLE_PWM (TCCR2A &=
(_BV(COM2B1))) към TCCR2A &=
(_BV(COM2A1)) Но очевидно нещо се е объркало, пин 3 спря да работи и 11 не стартира. Прочетох листа с данни на ATmega168/328, докато не мога да пия толкова много, че очите ми се наблъскват от контракции.
Моля, кажете ми как да стартирам ШИМ на пин 11 и как да прехвърля IR предавател към него. Ще добавя връзка към РАБОТЕЩА библиотека. codeload.github.com/z3t0/…duino-IRremote/zip/master В него има два свързани файла, IRremote.h дефинира кодирането IR И всъщност, което се опитвам да редактирам - IRremoteInt.h създава режимите на работа на контролера.
Благодаря предварително за разумния отговор.
Коментари 58
Управление на китайския играч. Написано за вас. Може би трябва да ... Прочетох протокола и кодовете на бутоните от IR приемника. Имам списък с желания в моя блог.