Mundarija:
- Ta'minotlar
- 1 -qadam: bazani qurish
- 2 -qadam: Servo qismi
- 3 -qadam: Servo dvigatel va qog'oz rulosini bazaga qo'shish
- 4 -qadam: Stepper motor ramkasini qurish
- 5 -qadam: teginishni tugatish
- 6 -qadam: elektronika
- 7 -qadam: Muammolarni bartaraf etish
Video: Arduino Morze kod yozuvchisi: 7 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
Men robot yaratdim, u har qanday matnni Morze kodiga aylantira oladi va keyin yozadi !! U karton va Legodan qilingan va elektronika uchun men Arduino va faqat ikkita dvigatelni ishlatganman.
Ta'minotlar
Arduino Uno taxtasi Step motorli mikro servo SG90ULN2003 step motorli haydovchi moduli Quvvat manbai moduli Breadboard 4 × Jumper simlari 6 × Ayol-erkak dupontli simlar 9V1A adapter USB kabeli karton 2 × yog'och dublonlar 2 × buloqlar somonli oq qog'oz qalam ushlagichi) qaychi kesuvchi
1 -qadam: bazani qurish
Baza qurishdan boshlang, menikining kengligi 4 tirgak va uzunligi 20 tirgak, bu uzunlikdagi bir qavatni qurganimdan so'ng, men uning yonida bo'sh dvigatel uchun joy qoldirish uchun bo'sh joy qoldirib, kengligi bitta taxta qurdim. plitka bo'laklari qog'oz tasmasi bo'ladigan o'rta qismga. Lego -dan foydalanish uni juda mustahkam va o'zgartirishni osonlashtirdi. Qog'oz rulosini yasash uchun men 1,2 sm kenglikdagi A4 qog'ozli chiziqlar kesib oldim (men bu kenglikni tanladim, chunki u Lego g'ildiragining kengligi bilan bir xil, siz g'ildirakka qarab siznikini kattaroq yoki kichikroq qilib yasashingiz mumkin) va men ularning uchlarini yopishtirdim. Men bitta uzun tasma hosil qildim, keyin uni g'ildirakka o'rab oldim.
2 -qadam: Servo qismi
Ushbu qadam uchun sizga kerak:
- uzunligi 4 sm bo'lgan ikkita yog'och dublon
- uzunligi 2 sm bo'lgan ikkita buloq
- har birining uzunligi 2 sm bo'lgan ikkita bo'lakka kesilgan bitta somon
- 12 sm dan 4 sm gacha bo'lgan bitta karton
- 4 sm dan 1,5 sm gacha bo'lgan ikkita karton
- 4 sm dan 2 sm gacha bo'lgan bitta karton
Birinchidan, dublonlarni 4 dan 1,5 gacha bo'laklarga yopishtiring, so'ngra buloqlar va poxollarni dublonlar ichiga joylashtiring, so'ngra boshqa karton bo'lagini boshqa tomonga yopishtiring va hamma narsani joyiga qo'ying.
Ikkinchidan, somonlar ustiga 4 sm dan 2 sm gacha bo'lak yopishtiring.
Uchinchidan, butun bo'lakni ag'daring va uning orqa tomoniga o'rtada emas, balki biroz chapda kichik dübel yopishtiring. (Birinchi rasmdagi kichik dublonni qo'shishni unutganman)
Nihoyat, servo dvigatel old qismidagi katta kartondan teshikni kesib, dvigatelni yopishtiring, so'ng biz dublonlar bilan yasagan bo'lakni katta bo'lakka yopishtiring, shunda servo harakatlanayotganda kichik dübel, bu esa buloqlarni ham pastga itaradi.
Men 12 sm pastki qismdan 4 sm bo'lakdan taxminan 3 sm kesib oldim va unga 4 sm dan 1,5 sm gacha ikkita bo'lak yopishtirdim, so'ngra 5,5 sm dan 4 sm gacha bo'lgan karton bilan yopdim va markerni ushlab turish uchun men kichkina qilib qo'ydim. elastik tasma pastadir va uni kartonning kichik bo'lagiga yopishtirdim, keyin uni 4 sm dan 2 sm gacha yopishtirdim, u servo ishga tushganda pastga siljiydi. Bu qo'shimchalar buloqlar qaytib kelganda markerning yonma -yon harakatlanishini to'xtatdi.
3 -qadam: Servo dvigatel va qog'oz rulosini bazaga qo'shish
Men servo qismini qo'llab -quvvatlash uchun taglikning bir tomoniga yana ikkita g'isht qo'shdim va uni joyiga yopishtirdim, keyin g'ildirakni taglikning eng chetiga qo'shdim.
4 -qadam: Stepper motor ramkasini qurish
Bu qadam biroz qiyinchilik tug'dirdi, chunki dvigatel Legoga to'liq mos kelmagan. Biroq, men buni dvigateldagi ikkita teshik yordamida joyiga mahkamlab qo'ydim. Keyin men dvigatelning uchiga Lego g'ildiragini yopishtirdim va keyin uni 1 -qadamda ochiq qoldirgan taglikning yoniga qo'ydim.
5 -qadam: teginishni tugatish
Men qog'ozni joyiga to'g'rilash uchun g'ildirakni yopish uchun ikkita kamon bo'lagini qo'shdim. Va men ikkita kichikroq kamon qo'shdim, bittasi qadam motorining simlarini ushlab turadi, ikkinchisi qog'ozni ushlab turadi. Oxir -oqibat, men qadam motorining g'ildiragini qog'ozni eski g'ildirakdan yaxshiroq siljitadigan biroz kattaroq qilib o'zgartirdim.
6 -qadam: elektronika
Nihoyat, siz motorlarni Arduino -ga ulashingiz va kodni yuklashingiz kerak.
Biz servo dvigateldan boshlaymiz, jigarrang simni (er simini) GND piniga, keyin qizil simni (quvvat simini) 5V piniga, to'q sariq simni (signal simini) Dig #5 ga ulaymiz. pin Keyingi bosqichli dvigatel, 1N1 - 11 -sonli, 1N2 - 10, 1N3 - 9, 1N4 - 8 -sonli, 5V - non taxtasining ijobiy tomoniga, er pimi - manfiy tomoniga ulang. non taxtasi. Quvvat manbai modulini ulash taxtasiga ulashni unutmang, uning ijobiy va salbiy tomonlari tegishli taxtaning tegishli tomonlariga to'g'ri kelishiga ishonch hosil qiling. Agar siz buni unutib qo'ysangiz, siz o'z loyihangizni kuchini o'zgartirasiz va siz buni xohlamaysiz.
Kod uchun men to'rtta usulni yozdim, bittasi nuqta, bittasi chiziqcha va ikkitasi har bir harf va har bir so'z o'rtasida bo'sh joy qoldirish uchun. Shunday qilib, men bu usullarni har bir harf uchun qayta yozish o'rniga, kerak bo'lganda chaqira olaman. Keyin men matnning har bir harfidan o'tadigan va yozadigan for loop yozdim, uning ichida men har bir harf uchun if ifodasini yozdim, lekin agar xohlasangiz, uni switch so'zida yozishingiz mumkin. Albatta, siz dasturga raqamlarni o'qish uchun kodni qo'shishingiz mumkin. Barcha simlar tayyor bo'lganda, kodni IDE -ga nusxalash va joylashtirish kifoya. Step, servo va torli kutubxonalarni o'rnatishni unutmang. Shundan so'ng, siz borganingiz ma'qul.
U qanday ishlaydi
Arduino ishga tushganda, dastur matnning birinchi harfiga qaraydi. Va qaysi biriga qarab, uni Morze kodida yozadigan funktsiyalarni chaqiradi. Masalan, nuqta funktsiyasi chaqirilganda, servo dvigatel 160 ga o'rnatiladi, u qalamni pastga siljitadi, keyin esa 90 ga o'rnatiladi, bu esa ruchkani o'zlari bilan birga ko'tarish imkonini beradi. Agar chiziq chizig'i funktsiyasi chaqirilsa, servo qalamni pastga siljitadi, keyin qadam dvigateli g'ildirakni aylantiradi, u qog'ozni tortib, qalamni chiziqqa yozadi. Va agar bo'shliq funktsiyalaridan biri deyilgan bo'lsa, qadam dvigateli aylanadi, lekin qalam yuqoriga qarab, qog'ozni tortadi va harflar yoki so'zlar orasidagi bo'shliqni yaratadi. Ish tugagach, u keyingi harfga o'tadi va xuddi shu jarayonni takrorlaydi. Sizga yoqadi degan umiddaman;)
Kod
#qo'shing
#include #include #include const int stepsPerRevolution = 150; // Bu qadam motorining o'zgaruvchisi String jumlasi = "*salom"; // Bu o'zgaruvchini har xil so'zlarni yozish uchun o'zgartiring, lekin faqat kichik harflar bilan yozing va so'zingizni "*" bilan boshlang Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); MyServo xizmat ko'rsatish; // Bu usul robotni nuqta -nuqta yozishga majbur qiladigan () {Serial.println ("nuqta boshlash"); myServo.write (160); kechikish (1000); myServo.write (90); kechikish (1000); myStepper.step (stepsPerRevolution); kechikish (1000); Serial.println ("nuqta bajarildi"); } // Bu robotni chiziqni bo'sh chizishga yozishga majbur qiladigan usul () {Serial.println ("tire start"); myServo.write (160); kechikish (1000); myStepper.step (stepsPerRevolution); kechikish (1000); myServo.write (90); kechikish (1000); myStepper.step (stepsPerRevolution); kechikish (1000); Serial.println ("chiziqcha tugadi"); } // Bu robotni har bir harf orasida bo'sh joy qoldirishga majbur qiladigan usul () {Serial.println ("bo'sh joyni ishga tushirish"); myServo.write (90); kechikish (1000); myStepper.step (200); kechikish (1000); Serial.println ("bo'sh joy"); } // Bu robotni har bir so'z o'rtasida bo'sh joy qoldirishga majbur qiladigan void bigSpace () {myServo.write (90); myStepper.step (250); kechikish (1000); } void setup () {// bir marta ishga tushirish uchun sozlash kodini bu erga qo'ying: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int birinchi = jumla.indexOf ('*'); // bu loop uchun satrning har bir harfidan o'tadi va keyin uni yozish uchun to'g'ri usullarni chaqiradi (int i = 0; i <jumla.length (); i ++) {if (jumla.charAt (birinchi+i)) == 'a') {Serial.print (".-"); nuqta (); chiziq (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'b') {Serial.print ("-…"); chiziq (); nuqta (); nuqta (); nuqta (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'c') {Serial.print ("-.-."); chiziq (); nuqta (); chiziq (); nuqta (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'd') {Serial.print ("-.."); chiziq (); nuqta (); nuqta (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'e') {Serial.print ("."); nuqta (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'f') {Serial.print ("..-."); nuqta (); nuqta (); chiziq (); nuqta (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'g') {Serial.print ("-."); chiziq (); chiziq (); nuqta (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'h') {Serial.print ("…."); nuqta (); nuqta (); nuqta (); nuqta (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'i') {Serial.print (".."); nuqta (); nuqta (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'j') {Serial.print (".---"); nuqta (); chiziq (); chiziq (); chiziq (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'k') {Serial.print ("-.-"); chiziq (); nuqta (); chiziq (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'l') {Serial.print (".-.."); nuqta (); chiziq (); nuqta (); nuqta (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'm') {Serial.print ("-"); chiziq (); chiziq (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'n') {Serial.print ("-."); chiziq (); nuqta (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'o') {Serial.print ("---"); chiziq (); chiziq (); chiziq (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'p') {Serial.print (".--."); nuqta (); chiziq (); chiziq (); nuqta (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'q') {Serial.print ("--.-"); chiziq (); chiziq (); nuqta (); chiziq (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'r') {Serial.print (".-."); nuqta (); chiziq (); nuqta (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 's) {Serial.print ("…"); nuqta (); nuqta (); nuqta (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 't') {Serial.print ("-"); chiziq (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'u') {Serial.print ("..-"); nuqta (); nuqta (); chiziq (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'v') {Serial.print ("…-"); nuqta (); nuqta (); nuqta (); chiziq (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'w') {Serial.print (".--"); nuqta (); chiziq (); chiziq (); bo'sh joy (); } boshqa if (jumla.charAt (birinchi + i) == 'x') {Serial.print ("-..-"); chiziq (); nuqta (); nuqta (); chiziq (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'y') {Serial.print ("-.--"); chiziq (); nuqta (); chiziq (); chiziq (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == 'z') {Serial.print ("-.."); chiziq (); chiziq (); nuqta (); nuqta (); bo'sh joy (); } else if (jumla.charAt (birinchi + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Bu erda hech narsa yozmang}
7 -qadam: Muammolarni bartaraf etish
G'ildirak qimirlamayapti
G'ildirak va qog'oz o'rtasida juda ko'p ishqalanish bo'lishi mumkin, g'ildirakni biroz ko'taring yoki o'zgartiring.
G'ildirak qog'ozni tortadi, lekin keyin qog'ozni tortmasdan aylanishda davom etadi
G'ildirakni step motorining o'rtasiga yopishganingizga ishonch hosil qiling
Nuqtalar va chiziqlar bir -biriga bog'langan
Nuqta, chiziq va bo'shliq funktsiyalarining to'g'ri yozilganligini tekshiring, ular shunday bo'lishi kerak:
// Bu usul yordamida robotni nuqta chizishga nuqta qo'yadi () {Serial.println ("nuqta boshlash"); myServo.write (160); kechikish (1000); myServo.write (90); kechikish (1000); myStepper.step (stepsPerRevolution); kechikish (1000); Serial.println ("nuqta bajarildi"); }
// Bu robotni chiziq chizishga majbur qiladigan usul
void dash () {Serial.println ("chiziq chizig'i"); myServo.write (160); kechikish (1000); myStepper.step (stepsPerRevolution); kechikish (1000); myServo.write (90); kechikish (1000); myStepper.step (stepsPerRevolution); kechikish (1000); Serial.println ("chiziqcha tugadi"); }
// Bu usul robotni har bir harf orasida bo'sh joy qoldirishga majbur qiladi
bo'sh joy () {Serial.println ("bo'sh joyni ishga tushirish"); myServo.write (90); kechikish (1000); myStepper.step (200); kechikish (1000); Serial.println ("bo'sh joy"); }
Tavsiya:
Xotira yozuvchisi - Rojdestvo sovg'asi: 8 qadam (rasmlar bilan)
Xotira yozuvchisi - Rojdestvo sovg'asi: Ciao a tutti! Ma'lumotlar ro'yxatiga kirganda, siz o'zingizni xohlaganingizdek bilishingiz kerak bo'ladi. Qisqa vaqt ichida, biz har qanday qiyinchiliklarga duch kelamiz
Shamol tezligi va quyosh nurlanish yozuvchisi: 3 qadam (rasmlar bilan)
Shamol tezligi va quyosh nurlanishini yozuvchi: Men shamol turbinasi va/yoki quyosh panellari yordamida qancha quvvat olish mumkinligini baholash uchun shamol tezligini va quyosh nurlanish kuchini (nurlanish) yozib olishim kerak. Men bir yilga o'lchayman, tahlil qilaman. ma'lumotlar va keyin tarmoqdan tashqari tizimni loyihalash
O'zingizning josuslik xatoingizni qiling (Arduino ovoz yozuvchisi): 5 qadam (rasmlar bilan)
Shaxsiy josuslik xatolarini tuzing (Arduino ovoz yozuvchisi): Ushbu loyihada men sizga Arduino Pro Mini -ni bir -birini to'ldiruvchi komponentlar bilan qanday birlashtirganimni ko'rsataman, bu ovoz yozuvchisi yaratish uchun ham josuslik xatosi sifatida ishlatilishi mumkin. Uning ishlash muddati taxminan 9 soat, kichik va juda oson
Morze Moai haykali: 4 qadam (rasmlar bilan)
Morze Moai haykali: Men bolaligimda Morze kodiga juda qiziqardim. Buning bir necha sabablari bor edi - Ikkinchi Jahon urushi paytida otam Signal korpusida bo'lgan va uning Morzani urushda qanday ishlatgani haqidagi hikoyalari juda qiziq edi. Menda ritmlarni yaxshi eshitadigan qulog'im bor edi, shuning uchun men
Raspberry Pi bilan ijro etish yozuvchisi: 7 qadam (rasmlar bilan)
Raspberry Pi bilan ijro etish yozuvchisi: Hammaga salom, men bu ko'rsatmada Raspberry Pi yordamida qanday yozish yozuvchisi qilganimni tushuntiraman. Qurilma Raspberry Pi modeli B+bo'lib, uning tepasida 7 ta tugma, Pi -ning usb portlaridan biriga ulangan karnay va boshqasiga ulangan mikrofon bor