Главная » Статьи » Proton PICBasic

Создаем музыку на PIC (+видео)

Вот так мы и учимся. Методом проб и ошибок. Например, мелодию подбирал на слух. Менял длительности между звуками и подбирал. Зато теперь вот она - мелодия. Бери и пользуйся. В общем, идея такая: мелодия играет только тогда, когда засвечен фоторезистор, подключенный к PORTB.0. Через него на порт поступает логическая 1 от источника питания. И пока он засвечен, играет мелодия. Ничего сложного. 

Вот схема:

 сама программа:

'-------------------------- Описание проекта ---------------------------------
'Проект : birthday

'Автор :
'
'Версия : 1.0.0 от 10.09.2010
'
'-------------------------- Опции компилятора --------------------------------


Declare SHOW_SYSTEM_VARIABLES = OFF ' При симуляции в Proteus не показывать внутренние переменные
Declare FSR_CONTEXT_SAVE = OFF ' Не заботиться о сохранении содержимого регистра FSR
Declare Reminders = OFF ' Выключить напоминания компилятора
Declare Warnings = OFF ' Выключить предупреждения компилятора
Declare Optimiser_Level 3 ' Включить оптимизацию программы

;-------------------------- Общие настройки------------------------------------


Device = 16F628A ' Используемый микроконтроллер
Xtal = 4 ' Частота осциллятора 4 МГц

'-------------------------- Конфигурация программирования --------------------


Config BODEN_OFF, BOREN_OFF, CP_ON, DATA_CP_ON, PWRTE_ON, WDT_OFF, LVP_OFF, MCLRE_OFF, INTRC_OSC_NOCLKOUT

'-------------------------- Настройки портов ---------------------------------

PortB_Pullups = OFF ' Выключить подтягивающие резисторы на PORTB
Declare All_Digital = On ' Установить все порты цифровыми входами/выходами

'-------------------------- Начало -------------------------------------------
' Это таблица нот, скопированная из интернета. Константы соответствуют частоте звучания

Symbol R = 0
Symbol C = 82
Symbol _DB = 85
Symbol D = 87
Symbol Eb = 89
Symbol E = 92
Symbol F = 94
Symbol Gb = 95
Symbol G = 97
Symbol Ab1 = 99
Symbol A1 = 73
Symbol Bb1 = 76
Symbol BE1 = 79
Symbol C1 = 82
Symbol _DB1= 85
Symbol D1 = 87
Symbol Eb1 = 89
Symbol E1 = 92
Symbol F1 = 94
Symbol Gb1 = 95
Symbol G1 = 97
Symbol Ab2 = 99
Symbol A2 = 101
Symbol Bb2 = 102
Symbol BE2 = 104
Symbol C2 = 105
Symbol _DB2 = 106
Symbol D2 = 108
Symbol E2 = 110
Symbol F2 = 111
Symbol Gb2 = 112
Symbol G2 = 113
Symbol Bb3 = 115
Symbol Bm3 = 116
Symbol C3 = 117
Symbol D3 = 118
Symbol PIN =PORTB.1 'Вывод на пищалку
Symbol FOT = PORTB.0 'Вход фотоэлемента
Symbol LED = PORTB.3 'Выход управления светодиодом
TRISB = 1 'PORTB.0 - на вход

'-------------------------- Главная программа -------------------------

MainProgram:
DelayMS 1000 'Задержка для того, чтобы по окончании мелодии, она начиналась не сразу
If FOT = 1 Then 'Если фотоэлемент засвечен, то
LED = 1 'Зажжем светодиод
GoSub Sound_1 'Играем первый фрагмент
GoSub Sound_2 'Играем второй фрагмент
DelayMS 1000 'Задержка
GoSub Sound_1 'Опять играем первый фрагмент
GoSub sound_3 'Играем третий фрагмент
Else
LED = 0 'Погасим светодиод
EndIf
GoTo MainProgram

Sound_1:
Sound PIN,[C,30,C,15,D,40,C,40,F1,40, E1,60, R, 40, C,30,C,15,D,40,C,40,G1,40, F1,60, R, 40, C,30,C,15,C2,45, A2,40,F,40,E,40,D,40]
Return

Sound_2:
Sound PIN, [R,50,Bb2,30,Bb2,20,A2,40,F1,40,G1,40,F1,50]
Return

sound_3:
Sound PIN,[R,70,Bb2,50,Bb2,30,A2,50,F1,50,G1,80,F1,140]
Return

Вот что из всего этого получилось. При открывании крышки, засвечивается фоторезистор и играет мелодия:


Исходники вы можете скачать здесь.

 




Категория: Proton PICBasic | Добавил: ADMIN (05.06.2011)
Просмотров: 7222 | Теги: PROTON, PIC, музыка | Рейтинг: 5.0/4
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]