ዝርዝር ሁኔታ:

የአርዱዲኖ እንቆቅልሽ ሳጥን 7 ደረጃዎች
የአርዱዲኖ እንቆቅልሽ ሳጥን 7 ደረጃዎች

ቪዲዮ: የአርዱዲኖ እንቆቅልሽ ሳጥን 7 ደረጃዎች

ቪዲዮ: የአርዱዲኖ እንቆቅልሽ ሳጥን 7 ደረጃዎች
ቪዲዮ: በ30 ቀን እራስን መለወጥ Change Yourself in 30 Days 2024, ሀምሌ
Anonim
የአርዱዲኖ እንቆቅልሽ ሳጥን
የአርዱዲኖ እንቆቅልሽ ሳጥን

ለዚህ ፕሮጀክት ከሙዚቃ ጋር የሚሠራ የእንቆቅልሽ ሳጥን እንሠራለን። የእሱ መሠረታዊ ነገር አንድ ቁልፍን ሲጫኑ ዜማ ይለቀቃል እና አርዱዲኖ የትኛው ትክክለኛ እና የተሳሳተ መልስ እንደሆነ እንዲያውቅ የትኞቹ አዝራሮች እንደተጫኑ ያሰላል።

አቅርቦቶች

1 x Arduino uno

1 x 1k Ohm resistor

5 x 220 Ohm resistors

1 xPiezo Buzzer

5 x pushbutton 6x6 ሚሜ

1 x አዘጋጅ Jumper ሽቦዎች

1 x perf/ስትሪፕ ቦርድ

1 x solderset

1 x ማንጠልጠያ

1 x መቆንጠጫ

1 x ትንሽ የደረት መሳቢያ/እንጨት

1x ትኩስ ሙጫ ጠመንጃ + ሙጫ በትሮች

1 x 9v ባትሪ + መያዣ

ትንሽ worbla

ቀለም መቀባት

ደረጃ 1

ምስል
ምስል

ከእርስዎ ጋር ለመጀመር በዳቦ ሰሌዳዎ ውስጥ የእርስዎን ፒኖች መጫን አለብዎት። አሁን አናሎግ 2 ን ከቦርዱ ጥግ ጋር ካለው ሽቦ ጋር ያገናኙ። በመስመር ላይ ሁለት ተቃዋሚዎችን ከእሱ ጋር እናገናኘዋለን። የመጀመሪያው 10k Ohm resistor ነው። ወደዚህ ተቃዋሚ ሌላኛው ጫፍ ሽቦውን ከአናሎግ መሬት ጋር እናገናኛለን። ሁለተኛው ተከላካይ ከመጀመሪያው አዝራር ጋር የምናገናኘው 220 Ohm resistor ነው። የአዝራሩን ሁለተኛ ክፍት ጎን ከሁለተኛው ቁልፍ ጋር ለማገናኘት ተመሳሳይ ዋጋ ያለው ሌላ ተቃዋሚ ይጠቀሙ። እንደዚህ ያሉትን አዝራሮች እስከ መጨረሻው ድረስ ማገናኘትዎን ይቀጥሉ። በመጨረሻው ላይ ሽቦን ይይዙ እና ከአዝራሩ ተጓዳኝ ከተዘጋው ጎን ጋር ያገናኙት እና በመስመሩ ከሚቀጥለው ጋር ያገናኙት። አሁን ከተቃዋሚዎች ጋር ያደረጉትን ሂደት እርስዎ በተለመደው ሽቦዎች ብቻ ያውቃሉ። በእርስዎ አርዱinoኖ ላይ የመጀመሪያውን ቁልፍ ከአናሎግ 3 ፣ 3 ቪ ወደብ ጋር ያገናኙ። በአጠቃላይ ከዚህ በታች እንደሚታየው አንድ ዓይነት የመስቀለኛ መንገድ አባት ያገኛሉ።

ደረጃ 2

በመቀጠልም በዳቦ ሰሌዳው ላይ ጫጫታ ይሰኩ እና አንዱን ጎን ወደ ዲጂታል መሬት እና ሌላውን ወደ 12 ወደብ ያቆዩ። ሁሉም ነገር በትክክል እየሰራ መሆኑን ለመፈተሽ የሚከተለውን ኮድ ቀድሞውኑ ወደ አርዱinoኖዎ መስቀሉ ብልህ ነው። እሱ ከሆነ ክፍሎቹን አንድ ላይ ማጠፍ መጀመር ይችላሉ። ይህንን ከዳቦ ሰሌዳ አውጥተው በቀጥታ ሽቦዎችን እና ግንኙነቶችን በመገጣጠም ያድርጉ። በአዝራሮቹ መካከል የበለጠ ርዝመት ያስፈልግዎታል ብለው የሚያስቡ ከሆነ በተከላካዮቹ መካከል የተወሰነ ተጨማሪ ሽቦ ማከል ይችላሉ። በዚህ ጊዜ የዳቦ ሰሌዳ አስፈላጊ አይደለም።

ደረጃ 3

ምስል
ምስል

ሁሉም ነገር ከተሸጠ በኋላ ሳጥኑን ራሱ ለመሥራት ጊዜው አሁን ነው። እኔ ለእኔ ርካሽ መሠረት የሆነ መሳቢያ መሳቢያዎችን እጠቀም ነበር። እኔ በቀላሉ በግማሽ ርዝመት በግማሽ ቆረጥኩ እና የኋላውን እና የጎደለውን ጎን አስወገድኩ። አሁን ሁለት ሐ ቅርፅ ያላቸው ቁርጥራጮች ሊኖሩት ይገባል። እንደ ክዳን ለመጠቀም የአንዱን አንድ ጎን ይቁረጡ። አሁን እንደ ክዳን አልባ ሣጥን አንድ ላይ እንዲገጣጠሙ እና አንድ ላይ እንዲጣበቁ ከቀሪዎቹ ቁርጥራጮች አንዱን ያሽከርክሩ። ሙጫው በትክክል ከተቀመጠ በኋላ ፣ በሳጥኑ በእያንዳንዱ ጎን ላይ ለትንሽ ቁልፎቹ ትንሽ ቀዳዳ እና በክዳኑ ውስጥ ላለው ለ buzzer ትልቅ ይቆፍሩ።

ደረጃ 4

ምስል
ምስል
ምስል
ምስል

አሁን ሳጥኑን ለመሳል መድረስ ይችላሉ። እኔ በ BOTW ላይ የተመሠረተ የአበባ ንድፍ አወጣሁ ግን የሚፈልጉትን ማንኛውንም ንድፍ በትክክል መምረጥ ይችላሉ። ይህ ከተደረገ በኋላ ቀዳዳዎቹን ወደ ቀዳዳዎቹ ውስጥ ማስገባት እና በአዝራሩ ጀርባ እና በዙሪያው ባለው እንጨት ላይ ሙጫ ሙጫ ማድረግ ይችላሉ። ተመሳሳዩ መርህ ለጩኸት ይሠራል ፣ ግን የእኔ ጉድጓድ ውስጥ አላስፈላጊ ያደርገዋል። ቀጥሎም አንዳንድ ትናንሽ ቁልፎችን ለመሥራት አንዳንድ ትልች እና ሙቀት ወስደው ይቆርጡታል። በአዝራሮቹ ላይ በጥንቃቄ ይለጥ butቸው ነገር ግን ብዙ ሙጫዎችን ላለመጠቀም እርግጠኛ ይሁኑ ምክንያቱም በድንገት ቁልፎቹ ሊጣበቁ ይችላሉ። ከሳጥኑ ጋር የበለጠ እንዲዋሃዱ አሁን እነሱን መቀባት ይችላሉ።

ደረጃ 5

በመጨረሻ ሁለቱንም በማገናኘት በሳጥኑ እና ክዳን ላይ ማጣበቂያ እና ማጠፊያዎች ፣ ማጣበቂያ እና መከለያዎች።

ደረጃ 6

አሁን የእርስዎ ሳጥን ተጠናቅቋል ማድረግ ያለብዎት አርዱዲኖ እና ባትሪውን በውስጡ ያስገቡ እና ክዳኑን ይዝጉ።

ደረጃ 7 ኮድ

// ይህ ለዜልዳ ጭብጥ እንቆቅልሽ/የሙዚቃ ሣጥን ኮድ ነው።

// ይህ ኮድዎን በሌላ ትር ውስጥ ካሉ የማስታወሻዎች ዝርዝር ጋር ያገናኛል

#"pitches.h" ን ያካትቱ

// ይህ ተለዋዋጭ አርዱዲኖ እንደ አንድ ፕሬስ ብቻ የአዝራሩን ረዘም ያለ ግፊት ማየቱን ያረጋግጣል

int ተመሳሳይ = 0;

// ከዚህ ግብዓትዎን ያነባል

int k = 2;

// ይህ የእርስዎ የውጤት ፒን ነው

int ተናጋሪ = 12;

// ከዚህ በታች የመጨረሻዎቹ ዜማዎች ናቸው

int ዜልዳ = {NOTE_B4 ፣ NOTE_D5 ፣ NOTE_A4 ፣ NOTE_G4 ፣ NOTE_A4 ፣ NOTE_B4 ፣ NOTE_D5 ፣ NOTE_A4 ፣ NOTE_G4 ፣ NOTE_A4 ፣ NOTE_B4 ፣ NOTE_D5 ፣ NOTE_A5 ፣ NOTE_G5 ፣ NOTE_4

int ZeldaTime = {2, 4, 2, 4, 4, 2, 2, 2, 4, 4, 2, 4, 2, 2, 2, 4, 4, 2};

int Epona = {NOTE_D5 ፣ NOTE_B4 ፣ NOTE_A4 ፣ NOTE_D5 ፣ NOTE_B4 ፣ NOTE_A4 ፣ NOTE_D5 ፣ NOTE_B4 ፣ NOTE_A4 ፣ NOTE_B4 ፣ NOTE_A4};

int EponaTime = {4, 4, 1.5, 4, 4, 1.5, 4, 4, 2, 2, 1};

int ሳሪያ = {NOTE_F4 ፣ NOTE_A4 ፣ NOTE_B4 ፣ NOTE_F4 ፣ NOTE_A4 ፣ NOTE_B4 ፣ NOTE_F4 ፣ NOTE_A4 ፣ NOTE_B4 ፣ NOTE_E5 ፣ NOTE_D5 ፣ NOTE_B4 ፣ NOTE_C5 ፣ NOTE_B4 ፣ NOTE_4EE4 ፣ NOTE_4EE4

int SariaTime = {8 ፣ 8 ፣ 4 ፣ 8 ፣ 8 ፣ 4 ፣ 8 ፣ 8 ፣ 8 ፣ 8 ፣ 8 ፣ 4 ፣ 8 ፣ 8 ፣ 8 ፣ 8 ፣ 3 ፣ 8 ፣ 8 ፣ 8 ፣ 2 ፣ 1};

// የማስታወሻ መደበኛ ቆይታ

int BEATTIME = 300;

// እኛ በመፍትሔ ውስጥ ከሆንን የሚከታተለው ቆጣሪ

int teller = 0;

ባዶነት ማዋቀር () {

Serial.begin (9600);

pinMode (2 ፣ ግቤት);

pinMode (1 ፣ ግቤት);

}

ባዶነት loop () {

// ግቤቶችን ከፒንሶች ያነባል

k = analogRead (2);

int p = analogRead (1);

// ምንም አዝራር ካልተጫነ ምንም ድምጽ መኖር የለበትም

ከሆነ (ተናጋሪ == 0) {

noTone (12);

}

// የተነበበው መረጃ ከተገለጹት መለኪያዎች ጋር የሚዛመድ ከሆነ የተገለጸውን ትንሽ ኮድ ያሂዱ

ከሆነ (k> 320 && k <350) {

ሪችቶች ();

}

//""

ሌላ ከሆነ (k 290) {

አገናኞች ();

}

//""

ሌላ ከሆነ (k> 260 && k <280) {

ቦቨን ();

}

//""

ሌላ ከሆነ (k> 240 && k <260) {

አንደር ();

}

//""

ሌላ ከሆነ (k> 220 && k <240) {

ሀ ();

}

// ካልሆነ (ምንም ቁልፍ ካልተጫነ) ይህንን ኮድ ያሂዱ

ሌላ {

// ተመሳሳይ ዳግም ያስጀምሩ ስለዚህ በሚቀጥለው ጊዜ አንድ ቁልፍ ሲጫን ጥቅም ላይ ሊውል ይችላል

ተመሳሳይ = 0;

// ቆጣሪው እስከ አንድ የተወሰነ ቁጥር ድረስ የተገለጸውን የኮድ ኮድ ያሂዱ

ከሆነ (ተናጋሪ == 166) {

ዜልዳ ();

}

//""

ሌላ ከሆነ (ተናጋሪ == 386) {

ሳሪያ ();

}

//""

ሌላ ከሆነ (ተናጋሪ == 266) {

ኤፖና ();

}

//""

ሌላ ከሆነ (ተናጋሪ == 999) {

// ስህተቱን ለማመልከት ይህንን ድምጽ ያጫውቱ

ቶን (ድምጽ ማጉያ ፣ NOTE_C3 ፣ BEATTIME);

// ቆጣሪውን ወደ 0 ዳግም ያስጀምሩ

ተናጋሪ = 0;

}

}

// በግብዓት እና በውጤት መካከል መዘግየት

መዘግየት (100);

// በተከታታይ ማሳያ ውስጥ የግብዓትዎን እሴቶች ያትማል

Serial.println (k);

}

// ይህ የመጀመሪያው ዜማ ነው

ባዶነት ዜልዳ () {

// ይህ ዜማውን በሚጫወትበት ጊዜ እራሱን የሚያድስ ቆጣሪ ያዘጋጃል ስለዚህ እንዲያነበው እና ሲቆም እንዲያቆም

ለ (int i = 0; i <sizeof (Zelda); i ++) {

// ማስታወሻ ለምን ያህል ጊዜ መቆየት እንዳለበት ይናገራል

int ZTime = 1000 / ZeldaTime ;

// ድምጾቹን ያመነጫል

ቶን (ተናጋሪ ፣ ዜልዳ ፣ ZTime);

// ትክክለኛውን መዘግየት ይፈጥራል

int ለአፍታ አቁም = ZTime * 1.30;

መዘግየት (ለአፍታ አቁም);

// ቆጣሪን ዳግም ያስጀምራል

ተናጋሪ = 0;

// በተከታታይ ማሳያ ውስጥ የግብዓትዎን እሴቶች ያትማል

Serial.println (ተናጋሪ);

}

}

//""

ባዶ epona () {

ለ (int i = 0; i <sizeof (Epona); i ++) {

int ETime = 1000 / EponaTime ;

ቶን (ድምጽ ማጉያ ፣ ኤፖና ፣ ETime);

int pause = ETime * 1.30;

መዘግየት (ለአፍታ አቁም);

ተናጋሪ = 0;

Serial.println (ተናጋሪ);

}

}

//""

ባዶ ሳሪያ () {

ለ (int i = 0; i <sizeof (Saria); i ++) {

int STime = 1000 / SariaTime ;

ድምጽ (ተናጋሪ ፣ ሳሪያ ፣ STime);

int pause = STime * 1.30;

መዘግየት (ለአፍታ አቁም);

ተናጋሪ = 0;

Serial.println (ተናጋሪ);

}

}

ባዶነት rec

hts () {

// ይህ አስቀድሞ ካልተጫነ

ከሆነ (ተመሳሳይ == 0) {

// ቆጣሪው በአሁኑ ጊዜ ከእነዚህ እሴቶች ውስጥ አንዱ ካለው ይህንን ይጨምሩበት

ከሆነ (ተናጋሪ == 0 || ተናጋሪ == 132 || ተናጋሪ == 165 || ተናጋሪ == 232 || ተናጋሪ == 265 || ተናጋሪ == 331 || ተናጋሪ == 374) {

ተናጋሪ = ተናጋሪ + 1;

}

// አለበለዚያ የስህተት ጫጫታ እንዲሰማዎት ወደ 999 ያዋቅሩት

ሌላ {

ተናጋሪ = 999;

}

// አርዱዲኖ እንደ ብዙ ማተሚያዎች የተራዘመ ፕሬስን እንዳያነብ // አንድ አድርገው ያዘጋጁ

ተመሳሳይ = 1;

}

// ቃናውን ያጫውቱ

ሌላ {

ቶን (ድምጽ ማጉያ ፣ NOTE_A4 ፣ BEATTIME);

}

// በተከታታይ ማሳያ ውስጥ የግብዓትዎን እሴቶች ያትማል

Serial.println (ተናጋሪ); }

//""

ባዶ አገናኞች () {

ከሆነ (ተመሳሳይ == 0) {

ከሆነ (ተናጋሪ == 133 || ተናጋሪ == 254 || ተናጋሪ == 244 || ተናጋሪ == 332 || ተናጋሪ == 375 || ተናጋሪ == 221) {

ተናጋሪ = ተናጋሪ + 11;

}

ሌላ ከሆነ (ተናጋሪ == 0) {

ተናጋሪ = 111;

}

ሌላ {

ተናጋሪ = 999;

}

ተመሳሳይ = 1;

} ሌላ {

ድምጽ (ድምጽ ማጉያ ፣ NOTE_B4 ፣ BEATTIME);

} Serial.println (ተናጋሪ);

}

//""

ባዶ ባዶ () {

ከሆነ (ተመሳሳይ == 0) {ከሆነ (ተናጋሪ == 111 || ተናጋሪ == 144 || ተናጋሪ == 233) {

ተናጋሪ = ተናጋሪ + 21;

}

ሌላ ከሆነ (ተናጋሪ == 0) {

ተናጋሪ = 221;

}

ሌላ {

ተናጋሪ = 999;

}

ተመሳሳይ = 1;

}

ሌላ {

ድምጽ (ድምጽ ማጉያ ፣ NOTE_D5 ፣ BEATTIME);

Serial.println (ተናጋሪ);

}

}

//""

ባዶነት () {

ከሆነ (ተመሳሳይ == 0) {

ከሆነ (ተናጋሪ == 343) {

ተናጋሪ = ተናጋሪ + 31;

}

ሌላ ከሆነ (ተናጋሪ == 0) {

ተናጋሪ = 331;

} ሌላ {

ተናጋሪ = 999;

} ተመሳሳይ = 1;

} ሌላ {

ድምጽ (ድምጽ ማጉያ ፣ NOTE_F4 ፣ BEATTIME);

Serial.println (ተናጋሪ);

}

}

//""

ባዶ (a) {

ከሆነ (ተመሳሳይ == 0) {

ከሆነ (ተናጋሪ == 0) {

ተናጋሪ = 461;

}

ሌላ {

ተናጋሪ = 999;

}

ተመሳሳይ = 1;

}

ድምጽ (ድምጽ ማጉያ ፣ NOTE_D4 ፣ BEATTIME);

Serial.println (ተናጋሪ);

}

የሚመከር: