Агуулгын хүснэгт:

Arduino тааврын хайрцаг: 7 алхам
Arduino тааврын хайрцаг: 7 алхам

Видео: Arduino тааврын хайрцаг: 7 алхам

Видео: Arduino тааврын хайрцаг: 7 алхам
Видео: RAMPS 1.6 - A4988/DRV8825 configuration 2024, Арваннэгдүгээр
Anonim
Arduino тааврын хайрцаг
Arduino тааврын хайрцаг

Энэ төслийн хувьд бид хөгжимтэй ажилладаг таавар хайрцаг хийх гэж байна. Үүний гол утга нь та товчлуур дарахад дуу гаргах бөгөөд Arduino аль товчлуур дарагдсан болохыг тооцоолж зөв, буруу хариултыг мэдэх боломжтой болно.

Хангамж

1 x Arduino uno

1 x 1k Ом эсэргүүцэл

5 x 220 Ом эсэргүүцэл

1 xPiezo Buzzer

5х 6х6 мм хэмжээтэй товчлуур

1 x холбогч утас

1 x перф/туузан самбар

1 x гагнуур

1 х нугас

1 x хавчаар

1 х жижиг шүүгээ/мод

1х халуун цавуу буу + цавуу мод

1 х 9в зай + эзэмшигч

жаахан ворхла

будаг

1-р алхам:

Зураг
Зураг

Эхлэхийн тулд та зүүгээ талхны самбар дээр дарах хэрэгтэй. Одоо аналог 2 -ийг утсаар самбарын буланд холбоно уу. Бид хоёр резисторыг шугамаар холбох гэж байна. Эхнийх нь 10 к Ом эсэргүүцэл юм. Энэ эсэргүүцлийн нөгөө үзүүрт бид аналог газардуулгын утсыг холбоно. Хоёрдахь эсэргүүцэл бол эхний товчлууртай холбосон 220 Ом эсэргүүцэл юм. Товчлуурын хоёр дахь нээлттэй талыг хоёр дахь товчлууртай холбохын тулд ижил утгатай өөр резистор ашиглана уу. Ийм товчлууруудыг сүүлчийн товчлуур хүртэл үргэлжлүүлэн холбоно уу. Сүүлд нь та утсыг аваад товчлуурын хаалттай тал руу холбоод дараагийнхтай нь холбоно уу. Та одоо зөвхөн энгийн утсаар мэддэг резистороор хийсэн процессоо давтана. Эхний товчлуурыг Arduino дээрх аналог 3, 3V порт руу холбоно уу. Доор үзүүлсэн шиг та хөндлөн эцэг болно.

Алхам 2:

Дараа нь та дуугарагчаа талхны самбар дээр залгаж, нэг талыг дижитал газар, нөгөө талыг 12 порт руу бэхлээрэй. Дараах кодыг Arduino -д оруулах нь ухаалаг хэрэг бөгөөд ингэснээр бүх зүйл зөв ажиллаж байгаа эсэхийг шалгаж болно. Хэрэв тийм бол та бүрэлдэхүүн хэсгүүдийг гагнах ажлыг эхлүүлж болно. Үүнийг талхны самбараас гаргаж, утас, холболтыг шууд гагнах замаар хий. Хэрэв та товчлууруудын хооронд илүү урт байх шаардлагатай гэж үзвэл резисторуудын хооронд нэмэлт утас нэмж болно. Талхны самбар энэ үед шаардлагагүй болсон.

Алхам 3:

Зураг
Зураг

Бүх зүйл гагнагдсаны дараа хайрцгийг өөрөө хийх цаг болжээ. Би хямдхан шүүгээг суурин болгон ашиглаж байсан. Би зүгээр л уртын дагуу талыг нь огтолж, тайрсан нуруу, талыг нь салгав. Та одоо в хэлбэртэй хоёр ширхэг байх ёстой. Таг болгон ашиглахын тулд нэг талыг нь хайчилж ав. Одоо үлдсэн хэсгүүдийн нэгийг нь таггүй хайрцаг шиг хооронд нь тааруулж эргүүлээд наа. Цавуу зөв тогтсоны дараа хайрцагны хоёр талд товчлууруудын жижиг нүхийг өрөмдөж, тагны дуугаралтын хувьд илүү том нүх гарга.

Алхам 4:

Зураг
Зураг
Зураг
Зураг

Одоо та хайрцгийг будаж болно. Би BOTW дээр суурилсан цэцгийн дизайнтай хийсэн боловч та хүссэн загвараа үнэхээр сонгох боломжтой. Үүнийг хийсний дараа та товчлууруудыг нүхний дотор хийж, товчлуурын ар талд болон эргэн тойрны модон дээр цавуу тавьж болно. Үүнтэй ижил зарчим нь дуугаралтанд хамаарна, гэхдээ миний нүхэнд бүрэн нийцэх нь шаардлагагүй юм. Дараа нь та жижигхэн товчлуур хийхийн тулд ворбла аваад халааж хайчилж аваарай. Тэднийг товчлуур дээр болгоомжтой наана уу, гэхдээ цавуу бүү хэрэглээрэй, учир нь та санамсаргүйгээр товчлуураа гацуулж магадгүй юм. Одоо та тэдгээрийг хайрцагт илүү сайн нэгтгэхийн тулд будаж болно.

Алхам 5:

Эцэст нь та хайрцаг, тагны хавчаар, нугасыг хооронд нь холбож, шургуулна.

Алхам 6:

Таны хайрцаг дууссан тул та Arduino болон батерейг дотор нь хийж, тагийг нь таглахад л хангалттай.

Алхам 7: Код

// Энэ бол Zelda сэдэвт таавар/хөгжмийн хайрцгийн код юм.

// энэ нь таны кодыг бусад таб дээрх тэмдэглэлийн жагсаалттай холбодог

#"давирхай.h" оруулах

// энэ хувьсагч нь 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_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;

хүчингүй тохиргоо () {

Цуваа эхлэх (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);

}

// энэ бол анхны аялгуу

хүчингүй зелда () {

// энэ нь аялгуу тоглож байхдаа өөрөө шинэчлэгддэг тоолуурыг тохируулдаг бөгөөд ингэснээр үүнийг уншиж, шаардлагатай үед зогсоож чаддаг

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

// тэмдэглэл хэр удаан үргэлжлэх ёстойг хэлдэг

int ZTime = 1000 / ZeldaTime ;

// аялгууг үүсгэдэг

ая (чанга яригч, Зелда , ZTime);

// зөв хоцролтыг бий болгодог

int pause = ZTime * 1.30;

хойшлуулах (түр зогсоох);

// тоолуурыг дахин тохируулна

теллер = 0;

// цуваа дэлгэц дээр таны оруулсан утгыг хэвлэнэ

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

}

}

//""

хүчингүй epona () {

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

}

//""

хүчингүй 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 (теллер);

}

Зөвлөмж болгож буй: