Мазмуну:

Музыкалык жомоктор: 6 кадам (сүрөттөр менен)
Музыкалык жомоктор: 6 кадам (сүрөттөр менен)

Video: Музыкалык жомоктор: 6 кадам (сүрөттөр менен)

Video: Музыкалык жомоктор: 6 кадам (сүрөттөр менен)
Video: Табышмактар //КЫЙЫН БОЛСОН ТААП КОР 2024, Ноябрь
Anonim
Image
Image

By IanCummingFollow Дагы автордун:

Arduino интервалометр
Arduino интервалометр
Жөн эле бир саат таймер эмес
Жөн эле бир саат таймер эмес
Жөн эле бир саат таймер эмес
Жөн эле бир саат таймер эмес
Бир пикселдик термометр
Бир пикселдик термометр
Бир пикселдик термометр
Бир пикселдик термометр

Жөнүндө: Мен ракетадан электроникага чейин нерселерди жасаганды жакшы көрөм. IanCumming жөнүндө көбүрөөк маалымат »

Баарына кош келиңиз

Бул дээрлик майрам мезгили жана көптөгөн дүкөндөр майрамдык декорацияларын чыгара баштады, мен музыкалык перилердин жарыгын курууга ылайыктуу убакыт келди деп ойлодум!

1 -кадам: Колдонулган бөлүктөр

Колдонулган бөлүктөр
Колдонулган бөлүктөр

Мен төмөнкүлөрдү колдоном:

  • 12 LED
  • 12 Учурдагы чектөөчү резисторлор
  • 1 ULN 2803 Darlington Transistor Array
  • Кээ бир Jumper Wires
  • Пьезо спикери
  • A Breadboard жана
  • бир Arduino
  • Перилердин чырагын жасоо үчүн Ethernet кабелинен 5 зым колдондум

2 -кадам: Код

// GLOBAL VARS int barTime = 1200; // 8/8 = 1000ms байт nrLEDS = 4; // 4 Негизги Светодиоддор, Сиз көптөгөн параллель байт леддерди кошо аласыз = {3, 4, 5, 6}; байт спикери = 11; байт patternLength = 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}; // Түзүм - бул Note Number, анда // NoteLength 8th const байт үлгүсүндөгү = {// Үлгү маалыматы 0b0001, 0b0010, 0b0100, 0b1000, // Bits 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) {// Convert a Note Nr. Frequency float freq = 440 * (pow (1.059463094359, эскертүү-21)); // -21 сизге C3те 1 эскертме берет (мен ойлойм) return int (freq); // Натыйжалар 1Гц} жараксыз LED (байт PORT_X) {// Control LEDдин абалы үчүн так (int q = 0; q

Мен ээ болгон эки функция төмөнкүлөрдү аткарат:

  • Укуруктагы тон функциясы үчүн жыштыкты эсептеңиз
  • LED'ди күйгүзүү же өчүрүү функцияга берилген наркка жараша

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

void setup () {// setup OUTPUT pins pinMode (баяндамачы, OUTPUT); for (int t = 0; t <nrLEDS; t ++) {pinMode (leds [t], OUTPUT); }}

Орнотуу функциясында мен керектүү казыктарды OUTPUT деп койдум.

Loop Function

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); // Жаркыраган жарыктар! lightLEDs (үлгү [t % patternLength]); кечигүү (узундугу); } // Silence Loop int randomSilence = random (1000, 5000); үчүн (int t = 0; t

Менде Main Loop функциясында 2 цикл бар. Ыр укуругу жана унчукпоо цикли

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

Ыр укуругу болот,

  • Ыр массивиндеги маалыматтарды окуу,
  • Анда обонду колдонуу менен нотаны ойнотуңуз
  • Жарык берүүчү диоддорду, үлгү массивин жарык кылыңыз.

Silence циклинде

светодиоддор гана күйөт

Arduino'ду сайыңыз жана кодду жүктөңүз. (Андан кийин аны сууруңуз)

3 -кадам: Районду баштоо

Circuit баштоо
Circuit баштоо
Circuit баштоо
Circuit баштоо
Circuit баштоо
Circuit баштоо
Circuit баштоо
Circuit баштоо

Мен свет линиясынан баштайын деп жатам

  • Мен Ethernet кабелинен зым колдондум жана 3 LEDди 4 жолу параллель кылып, LED диаметри болжол менен 2 метрден ашпашын камсыз кылдым
  • Мен ар бир анодду бир зымга коштум.
  • Андан кийин ар бир LEDдин катоду 4 өзүнчө зымга. Албетте, резистор менен
  • Мен бул жараянды 3 жолу кайталап, 12 светодиодду алдым жана 5 зымдын аягына төөнөгүчтөрдү койдум.

Позитивдүү жана жер тилкелерин нан тактасына туташтырыңыз

4 -кадам: ULN2803

ULN2803
ULN2803
ULN2803
ULN2803
ULN2803
ULN2803

ULN2308 чипин нан тактасына коюңуз

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

  • Бул 1 -пин 18 -пин "ON" күйгүзүүчү киргизүү
  • 2 -пин 17ге чыгат. Жана башкалар.
  • Pin 9 жер
  • Чиптин 9 -пинин жер темир жолуна туташтырыңыз
  • Позитивдүү темир жолду терминалдын тилкесине туташтырыңыз, 18 -пиндин үстүндө бир тилке (Анын себебин бир мүнөттө көрөсүз)
  • Чиптин 1 -пинти Arduino 3 -пинге туташтырыңыз
  • 2 4кө барат
  • Чиптин 3 5 жана барат
  • 4 Arduino 6 -пинге барат
  • LED тилкесин нан тактасына коюңуз. Жалпы анод зымы 5 вольтко туташкан тилкеге туташкан жерде. Калган перилердин жарык төөнөгүчтөрү чиптин 18, 17, 16 жана 15 -пинлерине өтүшү керек.

5 -кадам: Үн кошуу

Үн кошуу
Үн кошуу
  • Piezo колонкасын 2 терминал тилкесине туташтырыңыз
  • Пьезо элементтин терс уюлун жерге туташтырыңыз жана
  • Динамиктин экинчи учу 11 -пин

6 -кадам: Жыйынтык

Жыйынтык
Жыйынтык
Жыйынтык
Жыйынтык

Менде майрамдык мезгил экенин эстетүү үчүн туш келди коңгуроолорду ойното турган жарыктар бар.

Сунушталууда: