Світлодіодна ялинка
Неділя вечір, до нового року залишилося всього пару днів, і настав час зібрати собі ексклюзивну ялинку. Бажання зібрати таку ялинку з'явилося після того, як побачив картинку з іншою світлодіодною ялинкою. Якраз ще знайшов схему пілікалки на МКPIC16F628 з вихідними джерелами. У вихідниках більше мінія описана як що міняти. Колись горів бажанням записати звуки в мікроконтролер, і тепер моя мрія збулася. Але оскільки мені ведмідь на вухо настав, я не зміг сам скласти мелодію, хоч і спробував. Ну гаразд, почнемо проект LED ялинки. Після невдалого аналізатора спектру (швидше за все плата крива або сама схема тому що багато разів заливав прошивки та змінював МК не заробив) у мене залишилося багато світлодіодів, які не знав куди пристосувати.

На їх основі запланував зробити конструкцію. Особливої уваги складання світлодіодів у ялинку приділяти не буду, тут і так все зрозуміло і кожен зробить на скільки вистачить фантазії.

Усі світлодіоди спаяні паралельно.

На схемі є ще світлодіоди, які самі блимають. Ось із ними було найбільше труднощів. Стовбур у моєї ялинки зроблений з товстого дроту діаметром 1,5 мм. Цей ствол у мене «МІНУС» харчування. Відповідно до схеми припаюємо світлодіоди до мінуса у тих місцях, де ми хочемо. А до «ПЛЮС» світлодіодів припаюємо дроти і опускаємо їх вщент ялинки.
Принципова схема LED ялинки на МК

Резистори які йдуть до світлодіодів у мене все по 1к. Динамік звичайний паперовий 4 Ом підключений через резистор 100 Ом.

Перейдемо до вмісту МК. Якщо ви просто хочете залити прошивку в МК, то особливо нічого не потрібно, крім програматора. Якщо вам мало того, що є в готовій прошивці, її можна змінити. Для цього знадобитьсясередовище розробкиMPLab.

Так виглядає це середовище розробки. Завантажуємо наш вихідник, будь-який, але краще elka2.asm це остання і просунута прошивка.Увага ! Програма не підтримує українські назви у вказівці шляху до файлу, тому краще просто кинути цей вихідник у папку з програмою, інакше помиляться.

Так виглядає наша прошивка на асемблері. Знаходимо розділ «Константи». Я його підправив, але це не страшно. У МК кілька світлових ефектів, світлодіоди по-різному блимають. Трохи повернемося до схеми, при подачі живлення світлодіоди блимати починають, при натисканні на кнопку «МУЗИКА» запускається перша мелодія і далі грають мелодії в автоматичному режимі, якщо не натискати кнопку музика не гратиме.
Напис «через скільки світлових ефектів грати мелодію вперше після включення ». Тут ставив 0, тобто. після натискання на кнопку музика грає одразу. Якщо поставити 1, то після натискання кнопки пройде 1 цикл миготіння світлодіодів – заграє музика. 2 - заграє музика після 2 зміни циклу і т.д.
Напис «через скільки світлових ефектів гратиме мелодію в процесі роботи ». Тут поставив 1. Тобто після кожної зміни комбінації світлодіодів грає музика у процесі роботи. Ставимо 2 – музика грає після кожного другого циклу.
Опускаємося нижче за кодом та зупиняємось на розділі «Підпрограма декодування тривалості» та «Підпрограма декодування ноти». Саме ці дані потрібні для створення мелодій. Тривалість виражена секундах, тобто. 1/8 = 0,125 с, 1 / 4 = 0,250 с, 1 / 2 = 0,5 с і т.д. Цим тривалостям відповідають коди у двійковій системі обчислення. Наприклад "HHHHH000" = 1/8. Де HHHHH - це звук певної частоти (про нього пізніше), 000 - тривалість цього звуку,даному випадку 1/8 секунди.

Далі у нас йде декодування ноти. Тут трохи не зрозумілий алгоритм, за яким виставляється частота, тому частоти привласнюйте на око). Я не помітив жодних ознак закономірності та залежності частоти від коду. Рахунок йде приблизно так (тим хто знайомий з двійковим кодом складності не складе). Починається з:
00000DDD (DDD-тривалість, про це говорилося вище) 00001DDD
Далі продовжимо рахунок у двійковому коді (писатиму без DDD)
00010 00011 00100 00101 00110 00111 01000
І так далі до кінця переліку частот. Щоб не плутатися, можна писати в самій програмі, ставимо крапку з комою і пишемо, що хочемо, це програма не сприймає, але для нас це служить орієнтиром.

Начебто розібралися з нотами та тривалостями нот. Тепер можна і написати мелодію, але не все так просто, принаймні мені не вдалося підібрати тривалість і в мене нічого не вийшло. Мелодію взявjingle bells, на сайті дитячих пісеньок знайшов цю мелодію розкладену на ноти:
мі-мі-мі, мі-мі-мі мі-соль-до-ре-мі фа-фа-фа, фа-мі-мі-мі мі-ре-ре-мі- ре, сіль
мі-мі-мі, мі-мі-мі мі-сіль-до-ре-мі фа-фа-фа, фа-мі-мі-мі сіль сіль фа ре до
до-фа-мі-ре-до до-до-соль-фа-мі-ре ре-соль-фа-мі-ля-ля-ля сі-ля-соль-сі- до (верх)
Знайшов таблицю з частотами та нотами:

Почав писати пісеньку в двійковому коді:
Ось що в мене вийшло
Пам'ять мікроконтролера не велика, тому не варто надто довгі мелодії записувати. Особисто я видалив одну мелодію, а її місце поставив свою. Зберігаємо,file>save as >зберегти (не змінюючи назви, але можна і змінити) > замінити (якщо незмінювали ім'я файлу). Пів-справи зроблено, залишилося відкомпілювати у НІХ. Для цього заходимо в папку із встановленим середовищем розробки шукаємо папкуMPASM Suite, у цій папці запускаємоMPASMWIN.exe.

Вибираємо кнопкоюBrowse наш файл і тиснемоAssemble. Якщо все вдало – вилізе віконце:

У папці де лежав вихідний з'явиться кілька файлів з різними розширеннями, але назвоюelka2. Знаходимо ялинку з розширенням НЕХ це і буде наша прошивка для МК, залишається тільки залити її. Тепер начебто все розповів.

Відео роботи LED ялинки
Відео вже готової ялинки, все збирав навісом, МК в панельку, до панелі все інше). Забув про другу кнопку, це кнопка скидання, запускає МК спочатку, тобто просто світлові ефекти без музики, якщо натиснути «МУЗИКА» заграє музика. Всі робочі файли для мікроконтролерної ялинки скачайте тут.


Харчування краще потужніше взяти, у мене зарядка від мобіли 5В 0,5А і її явно не вистачає, світлодіоди ледь світять. Успіхів усім і щасливого Нового Року! ))[)еНіС.