Orodha ya maudhui:

NeckCrusher (Gitaa Iliyowekwa Athari ya Kanyagio): Hatua 6 (na Picha)
NeckCrusher (Gitaa Iliyowekwa Athari ya Kanyagio): Hatua 6 (na Picha)

Video: NeckCrusher (Gitaa Iliyowekwa Athari ya Kanyagio): Hatua 6 (na Picha)

Video: NeckCrusher (Gitaa Iliyowekwa Athari ya Kanyagio): Hatua 6 (na Picha)
Video: Trial Bike Epic Stunts Gameplay 🎮📲🏍 Part 2 2024, Novemba
Anonim
NeckCrusher (Gitaa Iliyowekwa Athari ya Kanyagio)
NeckCrusher (Gitaa Iliyowekwa Athari ya Kanyagio)

Dale Rosen, Carlos Reyes na Rob Koch

DATT 2000

Hatua ya 1: Shida

Shida
Shida

Vinjari vya gitaa humzuia mwanamuziki kwenye jukwaa la kanyagio. Suluhisho: Jenga na upachike utendaji wa miguu ya gita kwenye gita yenyewe. Hii inamruhusu mwanamuziki kusonga kwa uhuru kwenye jukwaa, akitumia shingo ya gita kama kigeuzi badala ya kuzuiliwa kwa eneo la ubao wa miguu. Tutachunguza dhana hii kwa kuunda kifaa cha athari ya kiwango cha sampuli / sampuli.

Hatua ya 2: Muktadha wa Mradi

Muktadha wa Mradi
Muktadha wa Mradi

Kuna pete nyingi za gitaa zinazotumiwa na wanamuziki kudhibiti sauti ya magitaa yao. Zaidi ya hizi kawaida huwa katika vitengo vya sanduku la msingi au la kukanyaga, kwa hivyo kuzuia udhibiti wa athari kwa eneo la kitengo cha athari. Kuweka kifaa kwenye gita huwezesha wachezaji kudhibiti vigezo vya athari mahali popote kwenye hatua. Hii inamaanisha hawatazuiliwa na wanaweza kuwa na uhuru wa kuzunguka kwa utendaji wao.

Kwa kuwa Arduino inauwezo wa sauti 8 tu, haiwezekani kufanya usindikaji wa ishara ya uaminifu. Hii ndio sababu tulichagua athari tulizofanya, kwani zinategemea kuunda uaminifu mdogo, sauti iliyopotoka. Hizi ndio athari pekee ambazo zinawezekana kwa Arduino.

Hatua ya 3: Sehemu / Zana zinahitajika

Sehemu / Zana Inahitajika
Sehemu / Zana Inahitajika

● Kuchimba visima kwa athari

● Wakata waya

● Vipande vya waya

● Kuchuma Chuma

● Bunduki ya Gundi Moto

● Pampu inayopungua

● Gitaa ● Kizuizi

● Solder

● Gundi ya Moto

● Arduino

● Bodi ya Proto

● Waya iliyofunikwa

● Vifaa vya sauti (x2)

● Potentiometers (x3)

● Capacitors: 2.2 uF (x2)

● Waya wazi wa Shaba

● Screws (M3.5 * 8)

● Resistors: 1 k, 10 k, 1.2 k, 1.5 k, 390 k

● * Op Amp (LM358) / * Transistor (2N3442)

Hatua ya 4: Mkakati wa Kiufundi

Mkakati wa Kiufundi
Mkakati wa Kiufundi

Mzunguko wa ndani

Pembejeo / Pato

Tunahitaji kubadilisha ishara ya sauti kutoka kwa gita kwenda kitu ambacho arduino inaweza kutumia na kurekebisha. Tutahitaji kubadilisha ishara kutoka kwa arduino kuwa ishara ya sauti. Arduino inasoma voltages kutoka 0V hadi 5V, ishara za sauti ni kutoka -1V hadi 1V. Mabadiliko haya hufanywa kwa kutumia vipinga. Ishara itabadilishwa katika mzunguko wa pato pia.

Maktaba ya Arduino: ArduinoDSP

Maelezo ya Mradi (Interface)

Knobs Knob 1: Kiwango cha Mfano

Knob 2: Bit Crusher

Knob 3: Shifter kidogo

Hatua ya 5: Kanuni

Kanuni
Kanuni

# pamoja na "dsp.h"

#fafanua cbi (sfr, bit) (_SFR_BYTE (sfr) & = ~ _BV (bit)) #fafanua sbi (sfr, bit) (_SFR_BYTE (sfr) | = _BV (bit))

boolean div32; boolean div16;

tete boolean f_sampuli; byte tete badc0; byte tete badc1; byte tete ibb;

int fx1; int fx2; int fx3; int fx4;

int cnta; int icnt; int icnt1; int icnt2; int cnt2; int iw; int iw1; int iw2; byte bb;

byte dd [512]; // Sawa ya Kumbukumbu ya Sauti 8-Bit

kuanzisha batili () {setupIO ();

// pakia tena wimbi baada ya sekunde 1 kujaza_sinewave ();

// weka daktari wa adc kwa 64 kwa cbi ya mzunguko wa sampuli ya 19kHz (ADCSRA, ADPS2); sbi (ADCSRA, ADPS1); sbi (ADCSRA, ADPS0); // 8-Bit ADC katika ADCH Daftari sbi (ADMUX, ADLAR); sbi (ADMUX, REFS0); cbi (ADMUX, REFS1); cbi (ADMUX, MUX0); cbi (ADMUX, MUX1); cbi (ADMUX, MUX2); cbi (ADMUX, MUX3); // Timer2 PWM Mode imewekwa kufunga PWM cbi (TCCR2A, COM2A0); sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // Usanidi wa Timer2 cbi (TCCR2B, WGM22); // Mchapishaji wa saa ya Timer2 kwa: 1 sbi (TCCR2B, CS20); cbi (TCCR2B, CS21); cbi (TCCR2B, CS22); // Timer2 PWM Port Wezesha sbi (DDRB, 3); // ehl (); cbi (TIMSK0, TOIE0); sbi (TIMSK2, TOIE2); iw1 = badc1;

}

kitanzi batili () {

// angalia hali ya athari potentiometer na rotary switch readKnobs ();

// ************* // *** Kawaida *** // *************

ikiwa (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {byte input = analogRead (kushoto); pato (kushoto, pembejeo); }

// ************* // *** Phasor *** // *************

ikiwa (fx4> 100) {

fx1 = 0; fx2 = 0; fx3 = 0;

wakati (! f_sample) {// subiri Sampuli ya Thamani kutoka ADC} // Mzunguko 15625 KHz = 64uSec PORTD = PORTD | 128; f_sample = uongo; bb = badc1; dd [icnt1] = bb; // andika kwa bafa fx4 = iw * badc0 / 255; // kiwango cha kucheleweshwa kwa sampuli na potentiometer iw1 = dd [icnt2]; // soma bafa ya kuchelewesha badc0 = badc0 / 20; // kikomo cha thamani ya 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // kikomo index 0.. icnt1 = icnt1 & 511; // kikomo index 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // Thamani ya Mfano kwa Pato la PWM

PORTD = PORTD ^ 128; pato (kushoto, PORTD); // Pato}

// ************* // *** Flanger *** // ************* ikiwa (fx3> 100) {

fx1 = 0; fx2 = 0; fx4 = 0;

wakati (! f_sample) {// subiri Sampuli ya Thamani kutoka ADC} // Mzunguko 15625 KHz = 64uSec

PORTD = PORTD | 128; f_sample = uongo; bb = dd [icnt]; // soma bafa ya kuchelewesha iw = 127 - bb; // kuondoa offset fx3 = iw * badc0 / 255; // kiwango cha kucheleweshwa kwa sampuli na potentiometer iw1 = 127 - badc1; // kuondoa offset kutoka kwa sampuli mpya iw1 = iw1 + iw; // ongeza sampuli iliyocheleweshwa na sampuli mpya ikiwa (iw1 127) iw1 = 127; // Kikomo cha sauti bb = 127 + iw1; // ongeza dd [icnt] = bb; // sampuli ya duka katika bafa ya sauti ++; icnt = icnt & 511; // kikomo cha bufferindex 0..511 OCR2A = bb; // Thamani ya Mfano kwa Pato la PWM

PORTD = PORTD ^ 128; pato (kushoto, PORTD); // Pato

} }

kusomaKnobs batili () {fx1 = analogRead (1); fx2 = analog Soma (2); fx3 = analog Soma (3); fx4 = analog Soma (4);

}

utupu kujaza_sinewave () {kuelea pi = 3.141592; kuelea dx; kuelea fd; kuelea fcnt; dx = 2 * pi / 512; // jaza bafa ya baiti 512 kwa (iw = 0; iw <= 511; iw ++) {// na vipindi 50 sinewawe fd = 127 * dhambi (fcnt); // sauti ya msingi fcnt = fcnt + dx; // katika anuwai ya 0 hadi 2xpi na nyongeza 1/512 bb = 127 + fd; // ongeza dc kukabiliana na sinewawe dd [iw] = bb; // kuandika thamani katika safu

} }

// ************************************************ ****************** // Timer2 Huduma ya Kukatiza saa 62.5 KHz // hapa ishara ya sauti na sufuria imechukuliwa kwa kiwango cha: 16Mhz / 256/2/2 = 15625 Hz ISR (TIMER2_OVF_vect) {

BANDARI = BANDARI | 1;

div32 =! div32; // gawanya timer2 frequency / 2 hadi 31.25kHz ikiwa (div32) {div16 =! div16; ikiwa (div16) {// sampuli ya kituo 0 na 1 kwa hivyo kila kituo kinachukuliwa na 15.6kHz badc0 = ADCH; // pata kituo cha ADC 0 sbi (ADMUX, MUX0); // weka multiplexer kwenye kituo 1} kingine {badc1 = ADCH; // pata ADC channel 1 cbi (ADMUX, MUX0); // weka multiplexer kwenye kituo 0 f_sample = kweli; } ibb ++; ibb--; ibb ++; ibb--; // kuchelewa kwa muda mfupi kabla ya kuanza sbi ya uongofu (ADCSRA, ADSC); // kuanza ubadilishaji unaofuata}

}

Hatua ya 6: Video

Shida zinazowezekana ● Kuchukua gari ni dhaifu sana kwa mzunguko wa nguvu - unahitaji op amp. - Kwenye video tulitumia nyongeza ya ishara. (Sanduku la kijivu liko juu ya meza.)

Ilipendekeza: