Мазмұны:

Arduino басқатырғыштар қорабы: 7 қадам
Arduino басқатырғыштар қорабы: 7 қадам

Бейне: Arduino басқатырғыштар қорабы: 7 қадам

Бейне: Arduino басқатырғыштар қорабы: 7 қадам
Бейне: Сабақ 4. Роботтың параллелограмм бойымен қозғалыс алгоритмі 2024, Қыркүйек
Anonim
Arduino басқатырғыштар қорабы
Arduino басқатырғыштар қорабы

Бұл жоба үшін біз музыкамен жұмыс істейтін басқатырғыштар қорабын жасаймыз. Оның негізгі мәні - түймені басқанда, ол әуен шығарады, ал Arduino қай батырманың дұрыс, ненің бұрыс екенін білу үшін басылғанын есептейді.

Жабдықтар

1 x Arduino Uno

1 x 1k Ом резисторы

5х220 Ом резисторлар

1 xPiezo Buzzer

5 x 6x6 мм түймесі

1 x өтпелі сымдар

1 x перфорация/жолақ тақтасы

1 x дәнекерлеу жиынтығы

1 х ілмек

1 x қысқыш

1 x шағын жәшіктер/ағаш

1x ыстық желім пистолеті + желім таяқшалары

1 х 9в батарея + ұстағыш

аздап ворбла

бояу

1 -қадам:

Кескін
Кескін

Бастау үшін түйреуіштерді тақтаға басу керек. Енді 2 -аналогты тақтаның бұрышына сыммен қосыңыз. Біз оған екі резисторды желіге қосамыз. Біріншісі - 10 кОм резистор. Бұл резистордың екінші шетіне аналогты жерге сым қосамыз. Екінші резистор - біз бірінші түймені қосатын 220 Ом резистор. Түйменің екінші ашық жағын екінші түймені қосу үшін сол мәндегі басқа резисторды қолданыңыз. Бұл түймелерді соңғысына дейін жалғастыра беріңіз. Соңғысында сіз сымды алып, түйменің тиісті жабық жағына жалғап, келесіге кезекке қосасыз. Сіз резисторлармен жасаған процесті тек қарапайым сымдармен қайталайсыз. Бірінші түймені Arduino -дегі аналогтық 3, 3В портына қосыңыз. Тұтастай алғанда, сіз төменде көрсетілгендей кросс -атаны аласыз.

2 -қадам:

Келесі дыбыстық сигналды тақтаға қосыңыз және бір жағын цифрлық жерге, екінші жағын 12 портқа бекітіңіз. Келесі кодты Arduino -ға жүктеу өте ақылды, сондықтан сіз бәрі дұрыс жұмыс істейтінін тексере аласыз. Егер солай болса, сіз компоненттерді бірге дәнекерлеуге кірісе аласыз. Мұны оларды тақтадан шығарып, сымдар мен қосылыстарды тікелей дәнекерлеу арқылы жасаңыз. Егер сіз түймелер арасында көбірек ұзындық қажет деп ойласаңыз, резисторлардың арасына қосымша сым қосуға болады. Бұл кезде нан тақтасы қажет емес.

3 -қадам:

Кескін
Кескін

Барлығы дәнекерленгеннен кейін қораптың өзін жасау уақыты келді. Мен өзім үшін негіз ретінде арзан жәшіктер жиынтығын қолдандым. Мен жай ғана жартысын кесіп, артқы жағы мен кесілген жағын алып тастадым. Енді сізде с тәрізді екі бөлік болуы керек. Қақпақ ретінде пайдалану үшін олардың бір жағын кесіңіз. Енді қалған бөліктердің бірін қақпақсыз қорап сияқты бір -біріне сәйкес келетін етіп айналдырыңыз және оларды бір -біріне жабыстырыңыз. Желім дұрыс орнатылғаннан кейін, қораптың әр жағында түймелер үшін кішкене тесік бұраңыз, ал қақпақтағы дыбыстық сигнал үшін үлкенірек.

4 -қадам:

Кескін
Кескін
Кескін
Кескін

Енді сіз қорапты бояуға кірісе аласыз. Мен өзімді BOTW негізіндегі гүл дизайнымен жасадым, бірақ сіз қалаған дизайнды таңдай аласыз. Осыдан кейін сіз түймелерді тесіктердің ішіне қойып, түйменің артқы жағына және айналасындағы ағашқа глобус қоюға болады. Дәл сол қағидат дыбыстық сигналға қатысты, бірақ менікі тесікке өте жақсы сәйкес келеді, бұл оны қажетсіз етеді. Содан кейін сіз кішкене түймелер жасау үшін ворбланы алып, қыздырыңыз және кесіңіз. Оларды түймелерге мұқият жабыстырыңыз, бірақ көп желім қолданбаңыз, себебі кездейсоқ түймелер жабысып қалуы мүмкін. Енді оларды қораппен көбірек араластыру үшін бояуға болады.

5 -қадам:

Ақырында сіз екеуін байланыстыратын қорап пен қақпақтың қысқыштары мен ілмектерін желімдеңіз немесе бұраңыз.

6 -қадам:

Енді сіздің қорабыңыз аяқталғаннан кейін Arduino мен батареяны ішіне салып, қақпағын жабу жеткілікті.

7 -қадам: код

// Бұл Zelda тақырыптық басқатырғыш/музыка қорапшасының коды.

// бұл сіздің кодты басқа қойындыдағы жазбалар тізіміне қосады

#«қадамдар.h» қосыңыз

// бұл айнымалы мән Arduino түймені ұзақ басуды бір рет басу ретінде көретініне кепілдік береді

int same = 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_A4;

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, NOTE_G4, NOTE_E4, NOTE_D4, NOTE_D4, NOTE_E4;

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;

жарамсыз орнату () {

Serial.begin (9600);

pinMode (2, INPUT);

pinMode (1, INPUT);

}

void loop () {

// түйреуіштерден кірісті оқиды

k = analogRead (2);

int p = analogRead (1);

// егер қандай да бір түйме басылмаса, дыбыс болмауы керек

егер (хабаршы == 0) {

noTone (12);

}

// егер оқылатын деректер параметрлерге сәйкес келсе, кодтың сипатталған битін іске қосады

егер (k> 320 && k <350) {

rechts ();

}

//""

егер басқа (k 290) {

сілтемелер ();

}

//""

әйтпесе (k> 260 && k <280) {

boven ();

}

//""

әйтпесе (k> 240 && k <260) {

onder ();

}

//""

әйтпесе (k> 220 && k <240) {

а ();

}

// егер ол орындалмаса (ешқандай түйме басылмаса), осы кодты іске қосыңыз

басқа {

// бастапқы қалпына келтіру, сондықтан оны келесі түйме басылғанда қолдануға болады

бірдей = 0;

// егер есептегіш белгілі бір санға дейін болса, кодтың сипатталған битін іске қосыңыз

егер (хабаршы == 166) {

зельда ();

}

//""

әйтпесе (теллер == 386) {

сария ();

}

//""

әйтпесе (теллер == 266) {

эпона ();

}

//""

әйтпесе (теллер == 999) {

// қатені белгілеу үшін осы тонды ойнаңыз

үн (динамик, NOTE_C3, BEATTIME);

// есептегішті 0 қалпына келтіріңіз

кассир = 0;

}

}

// кіріс пен шығыс арасындағы кідіріс

кешіктіру (100);

// сериялық монитордағы енгізу мәндерін басып шығарады

Serial.println (k);

}

// бұл бірінші әуен

жарамсыз zelda () {

// бұл әуенді ойнату кезінде өзін жаңартатын есептегішті орнатады, ол оны оқи алады және қажет болғанда тоқтайды

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

// нота қанша уақытқа созылуы керектігін айтады

int ZTime = 1000 / ZeldaTime ;

// үндерді шығарады

тон (спикер, Zelda , ZTime);

// дұрыс кідірісті жасайды

int pause = ZTime * 1.30;

кідіріс (үзіліс);

// есептегішті қалпына келтіреді

кассир = 0;

// сериялық монитордағы енгізу мәндерін басып шығарады

Serial.println (теллер);

}

}

//""

жарамсыз эпона () {

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

int ETime = 1000 / EponaTime ;

үн (динамик, Epona , ETime);

int pause = ETime * 1.30;

кідіріс (үзіліс);

кассир = 0;

Serial.println (теллер);

}

}

//""

жарамсыз сария () {

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

int STime = 1000 / SariaTime ;

тон (спикер, Сариа , STime);

int pause = STime * 1.30;

кідіріс (үзіліс);

кассир = 0;

Serial.println (теллер);

}

}

жарамсыз рек

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 (теллер);

}

//""

void boven () {

if (бірдей == 0) {if (айтушы == 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 (теллер);

}

Ұсынылған: