Բովանդակություն:

Arduino հանելուկ արկղ `7 քայլ
Arduino հանելուկ արկղ `7 քայլ

Video: Arduino հանելուկ արկղ `7 քայլ

Video: Arduino հանելուկ արկղ `7 քայլ
Video: Загадка 2024, Հուլիսի
Anonim
Arduino հանելուկ արկղ
Arduino հանելուկ արկղ

Այս նախագծի համար մենք պատրաստելու ենք հանելուկ տուփ, որն աշխատում է երաժշտության հետ: Դրա հիմնական էությունն այն է, որ երբ սեղմում ես կոճակը, այն թողնում է մեղեդի, և Arduino- ն հաշվարկում է, թե որ կոճակները սեղմված են, որպեսզի նա իմանա, թե որն է ճիշտ և ինչը սխալ պատասխանը:

Պարագաներ

1 x Arduino uno

1 x 1k Օմ դիմադրություն

5 x 220 Օմ դիմադրիչներ

1 xPiezo ազդանշան

5 x սեղմիչ 6x6 մմ

1 x հավաքածու Jumper լարեր

1 x perf/strip տախտակ

1 x զոդման հավաքածու

1 x ծխնին

1 x սեղմիչ

1 x գզրոց/փայտ

1x տաք սոսինձ ատրճանակ + սոսինձ ձողիկներ

1 x 9v մարտկոց + պահոց

մի քիչ վորբլա

ներկել

Քայլ 1:

Պատկեր
Պատկեր

Սկսելու համար դուք պետք է սեղմեք ձեր կապում ձեր տախտակի վրա: Այժմ անալոգային 2 -ը մետաղալարով միացրեք տախտակի անկյունին: Մենք պատրաստվում ենք դրան միացնել երկու դիմադրություն մի գծի մեջ: Առաջինը 10k Օմ ռեզիստոր է: Այս դիմադրության մյուս ծայրին մենք մետաղալարերը միացնում ենք անալոգային գետնին: Երկրորդ ռեզիստորը 220 Օմ դիմադրություն է, որը մենք միացնում ենք առաջին կոճակին: Կոճակի երկրորդ բաց կողմը երկրորդ կոճակին միացնելու համար օգտագործեք նույն արժեքի մեկ այլ դիմադրություն: Շարունակեք միացնել այսպիսի կոճակները մինչև վերջինը: Վերջինը բռնում եք մետաղալարից և միացնում այն կոճակի համապատասխան փակ կողմին և այն միացնում հերթում հաջորդին: Դուք այժմ կրկնում եք այն գործընթացը, որն արել եք դիմադրողների հետ միայն պարզ լարերով: Միացրեք առաջին կոճակը ձեր Arduino- ի անալոգային 3, 3V պորտին: Ընդհանուր առմամբ, դուք կստանաք մի տեսակ խաչ հայր, ինչպես նկարագրված է ստորև:

Քայլ 2:

Հաջորդը միացրեք սեղանի տախտակին և մի կողմը ամրացրեք թվային հիմքին, իսկ մյուսը `12 պորտին: Խելամիտ է արդեն վերբեռնել հետևյալ կոդը ձեր Arduino- ում, որպեսզի կարողանաք ստուգել, արդյոք ամեն ինչ ճիշտ է աշխատում: Եթե դա այդպես է, կարող եք սկսել բաղադրիչները միասին զոդել: Դա արեք դրանք հացաթղթից հանելով և լարերն ու միացումներն ուղղակիորեն իրար կպցնելով: Եթե կարծում եք, որ ձեզ ավելի շատ երկարություն է պետք կոճակների միջև, կարող եք լրացուցիչ մետաղալար ավելացնել ռեզիստորների միջև: Այս պահին հացահատիկն այլևս անհրաժեշտ չէ:

Քայլ 3:

Պատկեր
Պատկեր

Ամեն ինչ կպցնելուց հետո ժամանակն է պատրաստել տուփը ինքնին: Ես որպես էժան գզրոց հավաքածու օգտագործեցի որպես իմ հիմք: Ես ուղղակի կիսով չափ կիսեցի և հեռացրեցի մեջքն ու այն կողմը, որով կտրեցի: Այժմ դուք պետք է ունենաք գ ձևավորված երկու կտոր: Կտրեք դրանցից մեկի մի կողմը `որպես կափարիչ օգտագործելու համար: Այժմ պտտեք մնացած կտորներից մեկը այնպես, որ դրանք առանց կափարիչի տուփի պես տեղավորվեն միասին և սոսնձեք դրանք միասին: Սոսինձը ճիշտ ամրացնելուց հետո տուփի յուրաքանչյուր կողմում մի փոքր անցք բացեք կոճակների համար, իսկ ավելի մեծ `կափարիչի ազդանշանի համար:

Քայլ 4:

Պատկեր
Պատկեր
Պատկեր
Պատկեր

Այժմ դուք կարող եք սկսել նկարել տուփը: Ես իմը արեցի BOTW- ի վրա հիմնված ծաղկի դիզայնով, բայց դուք իսկապես կարող եք ընտրել ցանկացած դիզայն, որը ցանկանում եք: Դա անելուց հետո կարող եք կոճակները դնել անցքերի ներսում և կոճակի հետևի մասում և շրջապատող փայտից սոսինձ տեղադրել: Նույն սկզբունքը վերաբերում է զնգոցին, բայց իմը հիանալի տեղավորվում է անցքի մեջ ՝ այն դարձնելով ավելորդ: Հաջորդը դուք վերցնում եք ինչ -որ վուրբլա և տաքացնում և կտրում այն, որպեսզի պատրաստեք փոքր կոճակներ: Careգուշորեն կպցրեք դրանք կոճակների վրա, բայց համոզվեք, որ դրանք շատ չօգտագործեք, քանի որ կարող եք պատահաբար կոճակները խրվել: Այժմ դուք կարող եք դրանք ներկել, որպեսզի դրանք ավելի համակցվեն տուփի հետ:

Քայլ 5:

Վերջապես, դուք կպչում կամ պտուտակում եք, սեղմիչը և ծխնին երկուսը միացնող տուփի և կափարիչի վրա:

Քայլ 6:

Այժմ, երբ ձեր տուփն ավարտված է, մնում է միայն տեղադրել Arduino- ն և մարտկոցը դրա ներսում և փակել կափարիչը:

Քայլ 7: Կոդ

// Սա eldելդայի թեմատիկ հանելուկ/երաժշտական տուփի կոդն է:

// սա ձեր կոդը կապում է մյուս ներդիրի գրառումների ցանկի հետ

#ներառել «դաշտերը.հ»

// այս փոփոխականը կապահովի, որ Arduino- ն կոճակի ավելի երկար սեղմում տեսնի որպես ընդամենը մեկ սեղմում

int նույնը = 0;

// այստեղից այն կկարդա ձեր մուտքագրումը

int k = 2;

// սա ձեր ելքային փինն է

int խոսնակ = 12;

// ստորև ներկայացված են վերջնական մեղեդիները

int Zelda = {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_D5, NOTE_C5, NOTE_B4, NOTE_A5};

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 Saria = {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, NOTE44, NOTE4, NOTE_4, int SariaTime = {8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 4, 8, 8, 8, 8, 3, 8, 8, 8, 2, 1};

// գրառման նորմալ տևողությունը

int BEATTIME = 300;

// հաշվիչը, որը պատրաստվում է հետևել, եթե մենք լուծման մեջ լինենք

int teller = 0;

void setup () {

Serial.begin (9600);

pinMode (2, Մուտք);

pinMode (1, Մուտք);

}

դատարկ շրջան () {

// կարդում է մուտքագրումը կապումներից

k = analogRead (2);

int p = analogRead (1);

// եթե որևէ կոճակ սեղմված չէ, չպետք է լինի հնչերանգ

եթե (պատմող == 0) {

noTone (12);

}

// եթե ընթերցված տվյալները համապատասխանում են պարամետրերին, գործարկեք նկարագրված բիտը

եթե (k> 320 && k <350) {

rechts ();

}

//""

այլապես, եթե (k 290) {

հղումներ ();

}

//""

այլապես, եթե (k> 260 && k <280) {

հյուսված ();

}

//""

այլապես, եթե (k> 240 && k <260) {

onder ();

}

//""

այլապես, եթե (k> 220 && k <240) {

ա ();

}

// եթե դա այդպես չէ (երբ ոչ մի կոճակ սեղմված չէ), գործարկեք այս կոդը

ուրիշ {

// վերականգնել նույնը, որպեսզի այն կարողանա օգտագործվել հաջորդ անգամ կոճակը սեղմելիս

նույնը = 0;

// եթե հաշվիչը մինչև որոշակի թիվ է, գործարկեք նկարագրված բիտը

եթե (փոխանցող == 166) {

զելդա ();

}

//""

այլապես, եթե (ասող == 386) {

սարիա ();

}

//""

այլապես, եթե (ասող == 266) {

epona ();

}

//""

այլապես, եթե (ասող == 999) {

// նվագել այս տոնով ՝ սխալը նշելու համար

հնչերանգ (բարձրախոս, NOTE_C3, BEATTIME);

// հաշվիչը զրոյի հասցնել 0 -ի

ասող = 0;

}

}

// մուտքի և ելքի միջև ուշացումը

ուշացում (100);

// տպում է ձեր մուտքի արժեքները սերիական մոնիտորում

Serial.println (k);

}

// սա առաջին մեղեդին է

դատարկ զելդա () {

// սա սահմանում է հաշվիչ, որը թարմացվում է մեղեդին նվագելիս, որպեսզի կարողանա կարդալ այն և դադարել, երբ դա անհրաժեշտ է

համար (int i = 0; i <sizeof (Zelda); i ++) {

// ասում է, թե որքան պետք է տևի գրառումը

int ZTime = 1000 / ZeldaTime ;

// առաջացնում է հնչերանգներ

տոն (խոսնակ, Zelda , ZTime);

// ստեղծում է ճիշտ ուշացում

int դադար = ZTime * 1.30;

հետաձգում (դադար);

// վերականգնում է հաշվիչը

ասող = 0;

// տպում է ձեր մուտքի արժեքները սերիական մոնիտորում

Serial.println (պատմող);

}

}

//""

դատարկ epona () {

համար (int i = 0; i <sizeof (Epona); i ++) {

int ETime = 1000 / EponaTime ;

հնչերանգ (խոսնակ, Epona , ETime);

int դադար = ETime * 1.30;

հետաձգում (դադար);

ասող = 0;

Serial.println (պատմող);

}

}

//""

դատարկ սարիա () {

համար (int i = 0; i <sizeof (Saria); i ++) {

int STime = 1000 / SariaTime ;

հնչերանգ (խոսնակ, Սարիա , STime);

int դադար = STIME * 1.30;

հետաձգում (դադար);

ասող = 0;

Serial.println (պատմող);

}

}

դատարկ rec

hts () {

// եթե սա արդեն սեղմված չէր

եթե (նույն == 0) {

// եթե հաշվիչը ներկայումս ունի այս արժեքներից մեկը, դրան ավելացրեք

եթե (հաշվիչ == 0 || գող == 132 || գող == 165 || գող == 232 || գող == 265 || գող == 331 || գող == 374) {

ասող = պատմող + 1;

}

// այլապես դրեք այն 999 -ի վրա, որպեսզի լսեք սխալի աղմուկը

ուրիշ {

գանձող = 999;

}

// նույնը դնել մեկի վրա, որպեսզի Arduino- ն երկարատև մամուլը չկարդա որպես բազմաթիվ սեղմումներ

նույնը = 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 (պատմող);

}

}

//""

void onder () {

եթե (նույն == 0) {

եթե (ասող == 343) {

ասող = պատմող + 31;

}

այլապես, եթե (ասող == 0) {

ասող = 331;

} ուրիշ {

գանձող = 999;

} նույնը = 1;

} ուրիշ {

հնչերանգ (բարձրախոս, NOTE_F4, BEATTIME);

Serial.println (պատմող);

}

}

//""

դատարկություն a () {

եթե (նույն == 0) {

եթե (պատմող == 0) {

ասող = 461;

}

ուրիշ {

գանձող = 999;

}

նույնը = 1;

}

հնչերանգ (բարձրախոս, NOTE_D4, BEATTIME);

Serial.println (պատմող);

}

Խորհուրդ ենք տալիս: