ዝርዝር ሁኔታ:

NeckCrusher (ጊታር የተገጠመ ውጤት ፔዳል) 6 ደረጃዎች (ከስዕሎች ጋር)
NeckCrusher (ጊታር የተገጠመ ውጤት ፔዳል) 6 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: NeckCrusher (ጊታር የተገጠመ ውጤት ፔዳል) 6 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: NeckCrusher (ጊታር የተገጠመ ውጤት ፔዳል) 6 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: Abiogene - Ran Crusher - SFTY3 Neck 2024, ህዳር
Anonim
NeckCrusher (ጊታር የተገጠመ ውጤት ፔዳል)
NeckCrusher (ጊታር የተገጠመ ውጤት ፔዳል)

ዴሌ ሮዘን ፣ ካርሎስ ሬይስ እና ሮብ ኮች

DATT 2000 እ.ኤ.አ.

ደረጃ 1: ችግር

ችግር
ችግር

የጊታር ፔዳሎች ሙዚቀኛውን ወደ ፔዳል መድረክ ይገድባሉ። መፍትሄ - የጊታር ፔዳል ተግባራዊነትን በጊታር ራሱ ይገንቡ እና ያስገቡ። ይህ ሙዚቀኛው ወደ ፔዳልቦርዱ ቦታ ከመገደብ ይልቅ የጊታር አንገትን እንደ በይነገጽ በመጠቀም በመድረኩ ላይ በነፃነት እንዲንቀሳቀስ ያስችለዋል። ቢትቸር/የናሙና ተመን ውጤት መሣሪያን በመፍጠር ይህንን ጽንሰ -ሀሳብ እንመረምራለን።

ደረጃ 2 የፕሮጀክት አውድ

የፕሮጀክት አውድ
የፕሮጀክት አውድ

ሙዚቀኞች የጊታሮቻቸውን ድምጽ ለማዛባት የሚጠቀሙባቸው ብዙ የጊታር ፔዳሎች አሉ። አብዛኛዎቹ እነዚህ ብዙውን ጊዜ በመደርደሪያ ላይ በተመሠረቱ ወይም በመያዣ ሳጥኖች ክፍሎች ውስጥ ናቸው ፣ ስለሆነም የውጤቶች ቁጥጥርን ወደ የውጤት ክፍሉ ቦታ ይገድባል። መሣሪያውን በጊታር ላይ መጫኑ ተጫዋቾች የውጤቱን መለኪያዎች በየትኛውም ደረጃ ላይ እንዲቆጣጠሩ ያስችላቸዋል። ይህ ማለት እነሱ አይገደቡም እና በአፈፃፀማቸው ዙሪያ ለመንቀሳቀስ ነፃነት ሊኖራቸው ይችላል።

አርዱዲኖ የ 8 ቢት ድምጽ ብቻ ችሎታ ያለው በመሆኑ ከፍተኛ የታማኝነት ምልክት ማቀነባበርን ማድረግ አይቻልም። ዝቅተኛ ታማኝነትን ፣ የተዛባ ድምጽን በመፍጠር ላይ ያተኮሩ በመሆናቸው ያደረግናቸውን ውጤቶች የመረጥነው ለዚህ ነው። ከአርዱዲኖ ጋር በተመጣጣኝ ሁኔታ የሚቻሉ እነዚህ ብቸኛ ውጤቶች ናቸው።

ደረጃ 3: ክፍሎች / መሣሪያዎች ያስፈልጋሉ

ክፍሎች / መሣሪያዎች ያስፈልጋል
ክፍሎች / መሣሪያዎች ያስፈልጋል

Act የውጤት ቁፋሮ

● የሽቦ ቆራጮች

● የሽቦ ቀበቶዎች

Iron ብረትን መሸጥ

● ትኩስ ሙጫ ጠመንጃ

Ol ዴልደርዲንግ ፓምፕ

● ጊታር ● ማቀፊያ

● ሻጭ

● ትኩስ ሙጫ

አርዱinoኖ

● ፕሮቶ ቦርድ

የተሸፈነ ሽቦ

● የድምጽ መሰኪያ (x2)

● ፖታቲዮሜትሮች (x3)

Ac አቅም ሰጪዎች - 2.2 uF (x2)

● የተጋለጠ የመዳብ ሽቦ

● መንጠቆዎች (M3.5 *8)

● ተከላካዮች - 1 ኪ ፣ 10 ኪ ፣ 1.2 ኪ ፣ 1.5 ኪ ፣ 390 ኪ

Op * Op Amp (LM358) / * ትራንዚስተር (2N3442)

ደረጃ 4 ቴክኒካዊ ስትራቴጂ

ቴክኒካዊ ስትራቴጂ
ቴክኒካዊ ስትራቴጂ

የውስጥ ወረዳ

ግቤት/ውፅዓት

ከጊታር የሚመጣውን የድምፅ ምልክት አርዱዲኖ ሊጠቀምበት እና ሊያስተካክለው ወደሚችለው ነገር መለወጥ አለብን። ከዚያ ከአርዱዲኖ የሚመጣውን ምልክት ወደ የድምፅ ምልክት መለወጥ ያስፈልገናል። አርዱዲኖ ከ 0 ቮ እስከ 5 ቮ ቮልቴጅዎችን ያነባል ፣ የድምፅ ምልክቶች ከ -1 ቪ እስከ 1 ቪ ናቸው። እነዚህ ልወጣዎች ተከላካዮችን በመጠቀም ይከናወናሉ። ምልክቱ በውጤቱ ወረዳ ውስጥም ይለወጣል።

የአርዱዲኖ ቤተ -መጽሐፍት- ArduinoDSP

የፕሮጀክት መግለጫ (በይነገጽ)

የቁርጭምጭም ቋጥኝ 1 ፦ የናሙና ተመን

ኖብ 2 - ቢት ክሬሸር

ቁልፍ 3 - ቢት መቀየሪያ

ደረጃ 5 ኮድ

ኮድ
ኮድ

#"dsp.h" ን ያካትቱ

#ጥራት cbi (sfr ፣ bit) (_SFR_BYTE (sfr) & = ~ _BV (ቢት))

ቡሊያን div32; ቡሊያን ዲቪ 16;

ተለዋዋጭ ቡሊያን f_ ናሙና; ተለዋዋጭ ባይት badc0; ተለዋዋጭ ባይት badc1; ተለዋዋጭ ባይት ኢብቢ;

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

int cnta; int icnt; int icnt1; int icnt2; int cnt2; int iw; int iw1; int iw2; ባይት ቢቢ;

ባይት dd [512]; // የኦዲዮ ማህደረ ትውስታ ድርድር 8-ቢት

ባዶነት ማዋቀር () {setupIO ();

// ከ 1 ሰከንድ fill_sinewave () በኋላ ሞገድ እንደገና ጫን ፤

// የ 19kHz ናሙና ድግግሞሽ ሲቢ (ADCSRA ፣ ADPS2) ለ 64 የ adc prescaler ን ያዘጋጁ። sbi (ADCSRA ፣ ADPS1); sbi (ADCSRA ፣ ADPS0); // 8-ቢት ADC በ ADCH ይመዝገቡ sbi (ADMUX ፣ ADLAR); sbi (ADMUX ፣ REFS0); cbi (ADMUX ፣ REFS1); cbi (ADMUX ፣ MUX0); cbi (ADMUX ፣ MUX1); cbi (ADMUX ፣ MUX2); cbi (ADMUX ፣ MUX3); // Timer2 PWM ሞድ ወደ PWM cbi (TCCR2A ፣ COM2A0) በፍጥነት ተዘጋጅቷል ፤ sbi (TCCR2A, COM2A1); sbi (TCCR2A, WGM20); sbi (TCCR2A, WGM21); // ለ Timer2 cbi (TCCR2B ፣ WGM22) ማዋቀር; // Timer2 Clock Prescaler ወደ: 1 sbi (TCCR2B ፣ CS20); ሲቢ (TCCR2B ፣ CS21); ሲቢ (TCCR2B ፣ CS22); // Timer2 PWM Port sbi ን ያንቁ (DDRB ፣ 3); // ክሊ (); cbi (TIMSK0 ፣ TOIE0); sbi (TIMSK2 ፣ TOIE2); iw1 = badc1;

}

ባዶነት loop () {

// የ potentiometer እና የ rotary switch readKnobs () ውጤቱን ሁኔታ ይፈትሹ;

// ************* // *** መደበኛ *** // *************

ከሆነ (fx1 == 0 && fx2 == 0 && fx3 == 0 && fx4 == 0) {byte input = analogRead (በስተግራ); ውፅዓት (ግራ ፣ ግብዓት); }

// ************* // *** ፋሶር *** // *************

ከሆነ (fx4> 100) {

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

ሳለ (! f_sample) {// የናሙና እሴት ከ ADC ይጠብቁ} // ዑደት 15625 ኪኸ = 64uSec PORTD = PORTD | 128; f_ ናሙና = ሐሰት; bb = badc1; dd [icnt1] = bb; // ወደ ቋት ይፃፉ fx4 = iw * badc0 / 255; // ልኬት የዘገየ ናሙና በ potentiometer iw1 = dd [icnt2]; // የመዘግየቱን ቋት badc0 = badc0 / 20 ያንብቡ ፣ // ገደብ ወደ 512 icnt1 ++; icnt2 = icnt1 - badc0; icnt2 = icnt2 & 511; // ገደብ ኢንዴክስ 0.. icnt1 = icnt1 & 511; // ገደብ ኢንዴክስ 0..511 iw2 = iw1 + bb; iw2 = iw2 / 2; bb = iw2; OCR2A = bb; // ለ PWM ውፅዓት የናሙና እሴት

PORTD = PORTD ^ 128; ውፅዓት (ግራ ፣ PORTD); // ውፅዓት}

// ************* // *** ፍላንጀር *** // ************* ከሆነ (fx3> 100) {

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

ሳለ (! f_sample) {// የናሙና እሴት ከ ADC ይጠብቁ} // ዑደት 15625 ኪኸ = 64uSec

PORTD = PORTD | 128; f_ ምሳሌ = ሐሰት; bb = dd [icnt]; // የዘገየውን ቋት iw = 127 - bb ያንብቡ; // ተቀናሽ ማካካሻ fx3 = iw * badc0 / 255; // ልኬት የዘገየ ናሙና ከ potentiometer iw1 = 127 - badc1; // ከአዲሱ ናሙና iw1 = iw1 + iw; // (iw1 127) iw1 = 127 ከሆነ የዘገየ ናሙና እና አዲስ ናሙና ይጨምሩ። // የድምፅ ወሰን ቢቢ = 127 + iw1; // ማካካሻ dd [icnt] = bb; // የሱቅ ናሙና በድምጽ ቋት icnt ++; icnt = icnt & 511; // ይገድቡ bufferindex 0..511 OCR2A = bb; // የናሙና እሴት ለ PWM ውፅዓት

PORTD = PORTD ^ 128; ውፅዓት (ግራ ፣ PORTD); // ውፅዓት

} }

ባዶ ማንበብKnobs () {fx1 = analogRead (1); fx2 = analogRead (2); fx3 = analogRead (3); fx4 = analogRead (4);

}

ባዶ ባዶ fill_sinewave () {float pi = 3.141592; ተንሳፋፊ dx; ተንሳፋፊ fd; ተንሳፋፊ fcnt; dx = 2 * pi / 512; // ለ (iw = 0; iw <= 511; iw ++) የ 512 ባይት መደበኛውን ይሙሉ {// በ 50 ጊዜዎች sinewawe fd = 127 * ኃጢአት (fcnt); // መሠረታዊ ቃና fcnt = fcnt + dx; // ከ 0 እስከ 2xpi ባለው ክልል እና 1/512 ጭማሪዎች bb = 127 + fd; // ወደ sinewawe dd [iw] = bb; // እሴት ወደ ድርድር ይፃፉ

} }

// ************************************************ ************* Hz ISR (TIMER2_OVF_vect) {

PORTB = PORTB | 1;

div32 =! div32; // የጊዜ ቆጣሪ 2 ድግግሞሽ / 2 ወደ 31.25 ኪኸ (ዲ 32) {div16 =! div16; ከሆነ (div16) {// ናሙና ሰርጥ 0 እና 1 ተለዋጭ ስለዚህ እያንዳንዱ ሰርጥ በ 15.6kHz badc0 = ADCH ናሙና ነው። // የ ADC ሰርጥ 0 sbi (ADMUX ፣ MUX0) ያግኙ ፤ // ብዙ ሰርቨርን ወደ ሰርጥ 1} ሌላ ያዋቅሩ {badc1 = ADCH; // የ ADC ሰርጥ 1 ሲቢ (ADMUX ፣ MUX0) ያግኙ ፤ // ባለብዙ አገልጋይ ወደ ሰርጥ 0 f_sample = እውነት ያዘጋጁ ፤ } ibb ++; ibb--; ibb ++; ibb--; // ልወጣ sbi (ADCSRA ፣ ADSC) ከመጀመሩ በፊት አጭር መዘግየት; // የሚቀጥለውን መለወጥ ይጀምሩ}

}

ደረጃ 6 ቪዲዮ

ሊሆኑ የሚችሉ ችግሮች ● ፒክካፕ ለኃይል ዑደት በጣም ደካማ ነው - የኦፕ አምፕ ያስፈልጋል። - በቪዲዮው ውስጥ የምልክት ማጠናከሪያ ተጠቅመናል። (በጠረጴዛው ላይ የተቀመጠው ግራጫ ሳጥኑ።)

የሚመከር: