Мазмұны:

Музыкалық ертегілер: 6 қадам (суреттермен)
Музыкалық ертегілер: 6 қадам (суреттермен)

Бейне: Музыкалық ертегілер: 6 қадам (суреттермен)

Бейне: Музыкалық ертегілер: 6 қадам (суреттермен)
Бейне: Сергіту сәтіне қолданыңыз! 2024, Қараша
Anonim
Image
Image

IanCummingFollow автордың толығырақ:

Arduino интервалометрі
Arduino интервалометрі
Тек сағаттық таймер емес
Тек сағаттық таймер емес
Тек сағаттық таймер емес
Тек сағаттық таймер емес
Бір пиксельді термометр
Бір пиксельді термометр
Бір пиксельді термометр
Бір пиксельді термометр

Мен туралы: Мен зымырандардан электроникаға дейін заттар жасағанды ұнатамын. IanCumming туралы толығырақ »

Барлығына қош келдіңіз

Бұл мереке мезгілі дерлік және көптеген дүкендер өздерінің мерекелік әшекейлерін шығара бастады, мен музыкалық ертегі шамдарын жасаудың дәл уақыты келді деп ойладым!

1 -қадам: қолданылатын бөлшектер

Қолданылатын бөлшектер
Қолданылатын бөлшектер

Мен келесілерді қолданамын:

  • 12 жарықдиодты шамдар
  • 12 Ағымдық шектеу резисторлары
  • 1 ULN 2803 Darlington транзисторлық массиві
  • Кейбір секіргіш сымдар
  • Пьезо спикері
  • Нан тақтасы және
  • және Arduino
  • Ертегі шамдарын жасау үшін Ethernet кабелінен 5 сымды қолдандым

2 -қадам: Кодекс

// GLOBAL VARS int barTime = 1200; // 8/8 = 1000ms байт nrLEDS = 4; // 4 негізгі жарықдиодты шамалар, параллельді түрде көптеген байттарды қосуға болады = {3, 4, 5, 6}; байт динамигі = 11; байт үлгісіLength = 64; // үлгі Length байт songLength = 51; const байттық ән = {// Jingle Bells деректері 29, 2, 29, 2, 29, 4, 29, 2, 29, 2, 29, 4, 29, 2, 32, 2, 25, 3, 27, 1, 29, 8, 30, 2, 30, 2, 30, 3, 30, 1, 30, 2, 29, 2, 29, 2, 29, 1, 29, 1, 29, 2, 27, 2, 27, 2, 29, 2, 27, 4, 32, 4, 29, 2, 29, 2, 29, 4, 29, 2, 29, 2, 29, 4, 29, 2, 32, 2, 25, 3, 27, 1, 29, 8, 30, 2, 30, 2, 30, 2, 30, 2, 30, 2, 29, 2, 29, 2, 29, 1, 29, 1, 32, 2, 32, 2, 30, 2, 27, 2, 25, 8}; // Құрылым - бұл Ескерту нөмірі, содан кейін // NoteLength 8 -ші const байт үлгісінде = {// Үлгі деректері 0b0001, 0b0010, 0b0100, 0b1000, // биттер Leds -ке 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b0001, 0b0010, 0b0100, 0b1000, 0b1000, 0b1100, 0b0100, 0b0110, 0b0010, 0b0011, 0b0001, 0b1001, 0b1000, 0b1100, 0b0100, 0b0100, 0b0100 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1010, 0b0101, 0b1100, 0b0011, 0b0000, 0b1100, 0b1100, 0b0000 0b0011, 0b1100, 0b0011, 0b1100, 0b0011,};

Біріншіден, мен айнымалыларды жариялаймын, олардың ең қызықтысы - ән мен өрнек.

  • Ән әуенді сақтайды; бұл жағдайда бұл Jingle қоңыраулары.
  • Үлгі массивтің мәндерінің биттерінде қосу және өшіру позицияларын сақтайды.

Арнаулы функциялар

// FUNCTIONS int noteToHz (int note) {// Ескертпені Nr түрлендіру. to Жиілік өзгермелі жиілік = 440 * (pow (1.059463094359, ескерту-21)); // -21 сізге C3 -те 1 ескерту береді (Менің ойымша) return int (freq); // Нәтижелер 1Гц} жарықты емес жарық диодтарына дәл (байт PORT_X) {// Басқару диодының күйі (int q = 0; q

Менде бар екі функция келесі әрекеттерді орындайды:

  • Циклдегі тон функциясының жиілігін есептеңіз
  • функцияға берілген мәнге байланысты жарықдиодты шамдарды қосыңыз немесе өшіріңіз

Орнату функциясы

void setup () {// орнату OUTPUT түйреуіштері pinMode (динамик, OUTPUT); for (int t = 0; t <nrLEDS; t ++) {pinMode (leds [t], OUTPUT); }}

Орнату функциясында қажетті түйреуіштерді OUTPUT күйіне қойдым.

Цикл функциясы

void loop () {// Music Loop for (int t = 0; t <songLength; t ++) {// Notes, Length және әуенді ойнату int note = noteToHz (ән [t * 2]); int length = ((ән [(t * 2) +1] * barTime) / 8); тон (динамик, нота, ұзындық - 50); // Жарқыраған шамдар! жеңіл жарық диодтары (үлгі [t % patternLength]); кешіктіру (ұзындығы); } // Silence Loop int randomSilence = random (1000, 5000); үшін (int t = 0; t

Менде Main Loop функциясында 2 ілмек бар. Ән циклы мен үнсіздік циклы

Ән циклы ән массивіндегі деректерді оқиды, тон функциясын қолдана отырып, нотаны ойнатады

Ән циклы болады,

  • Ән массивіндегі деректерді оқыңыз,
  • Жазбаны әуен функциясын қолданып ойнатыңыз
  • Жарықдиодты, оқу үлгісінің массивін жарықтандырыңыз.

Silence циклінде

тек светодиодтар жанып тұрады

Arduino -ны қосыңыз және кодты жүктеңіз. (Содан кейін оны ажыратыңыз)

3 -қадам: схеманы іске қосу

Циклды бастау
Циклды бастау
Циклды бастау
Циклды бастау
Циклды бастау
Циклды бастау
Циклды бастау
Циклды бастау

Мен шамдардың тізбегінен бастаймын

  • Мен Ethernet кабелінен сымды қолдандым және 3 жарықдиодты параллель төрт рет дәнекерледім.
  • Мен әр анодты бір сымға дәнекерледім.
  • Содан кейін әр жарық диодты катод 4 бөлек сымға қосылады. Әрине, резистормен
  • Мен 12 светодиодты алу үшін бұл процесті 3 рет қайталадым және 5 сымның соңына тақырып түйреуіштерін қойдым.

Позитивті және жердегі рельстерді тақтаға қосыңыз

4 -қадам: ULN2803

ULN 2803
ULN 2803
ULN 2803
ULN 2803
ULN 2803
ULN 2803

ULN2308 чипін нан тақтасына салыңыз

ULN2308 - транзисторлы массив чипі; мәліметтер парағынан мен көре аламын

  • Бұл 1 -ші түйреуіш 18 -ші істікті «ON» -ға айналдыратын кіріс болып табылады.
  • 2 -түйреуіш 17 -ге қосылады. Т.б.
  • 9 -түйреуіш жерге тұйықталған
  • Чиптің 9 түйреуішін жер рельсіне жалғаңыз
  • Позитивті рельсті 18 -істікшенің үстіндегі бір жолақты терминал жолағына жалғаңыз (мұның себебін бір минуттан кейін көресіз)
  • Чиптің 1 түйреуішін Arduino 3 істігіне қосыңыз
  • 2 4 -ке өтеді
  • Чиптің 3 -і 5 және
  • 4 Arduino 6 -штырына өтеді
  • Жарық диодты жолақты тақтаға қойыңыз. Жалпы анодты сым 5 вольтке қосылған жолаққа қосылған жерде. Қалған ертегілердің түйреуіштері чиптің 18, 17, 16 және 15 түйреуіштеріне өтуі керек.

5 -қадам: дыбысты қосу

Дыбыс қосу
Дыбыс қосу
  • Piezo динамигін 2 терминал жолағының арасына қосыңыз
  • Пьезо элементінің теріс полюсін жерге қосыңыз
  • Динамиктің екінші ұшы 11 -ші пинге бекітіледі

6 -қадам: Қорытынды

Қорытынды
Қорытынды
Қорытынды
Қорытынды

Менде мерекелік маусым екенін еске түсіру үшін кездейсоқ қоңырау соғатын жарық тізбегі бар.

Ұсынылған: