Sisukord:
- Tarvikud
- Samm: baasi ehitamine
- 2. samm: servotükk
- 3. samm: servomootori ja paberirulli lisamine alusele
- 4. samm: samm -mootori raami ehitamine
- 5. samm: viimistlus
- 6. samm: elektroonika
- Samm: tõrkeotsing
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
Ma tegin roboti, mis suudab mistahes teksti Morse -koodiks teisendada ja siis kirja panna !! See on valmistatud papist ja Legost ning elektroonika jaoks kasutasin Arduinot ja ainult kahte mootorit.
Tarvikud
Arduino Uno plaat Sammumootor Mikroservo SG90ULN2003 sammmootori draiverimoodul Toiteplokk Leivaplaat 4 × Jumper juhtmed 6 × Nais-meessoost dupontjuhtmed 9V1A adapter USB-kaabel Papp 2 × Puidust tüüblid 2 × Vedrud Õlgedest valge paber LegoSuper liim Kuum liimipüstol Elastne riba pliiatsihoidja) Kääride lõikur
Samm: baasi ehitamine
Alustage aluse ehitamisest. Minu miinid on 4 naela laiused ja 20 naastud pikad, pärast ühe sellise pikkusega kihi ehitamist ehitasin selle ümber ühe naastu laiuse piiri, jättes ühele küljele tühiku, et jätta samm -mootorile ruumi, seejärel lisasin plaatide tükid keskele, kus on pabeririba. Lego kasutamine muutis selle väga tugevaks ja hõlpsasti muudetavaks. Paberirulli tegemiseks lõikasin 1,2 cm laiused A4 -paberiribad (valisin selle laiuse, kuna see on sama laiusega, mida kasutasin Lego -rattaga, saate oma ratta sõltuvalt suuremaks või väiksemaks muuta) ja liimisin nende otsad kokku et moodustada üks väga pikk riba, siis keerasin selle ratta ümber.
2. samm: servotükk
Selle sammu jaoks vajate:
- kaks 4 cm pikkust puidust tüüblit
- kaks 2 cm pikkust vedru
- üks õled lõigatakse kaheks 2 cm pikkuseks tükiks
- üks 12 x 4 cm suurune papitükk
- kaks 4 x 1,5 cm papitükki
- üks 4 x 2 cm papitükk
Kõigepealt liimige tüüblid ühele 4x1,5 tükist, seejärel sisestage tüüblitesse vedrud ja õled, seejärel liimige teine papitükk teiselt poolt, et kõik paigas püsiks.
Teiseks liimige 4 cm x 2 cm tükk õlgede peale.
Kolmandaks pöörake kogu tükk ümber ja liimige selle tagaküljele väike tüübel, mitte keskele, vaid veidi vasakule. (Unustasin esimese tüübi väikese tüübi lisada)
Lõpuks lõigake suurele papitükile servomootori esiosa suurune auk ja liimige mootor sisse, seejärel liimige tükk, mille me äsja tüüblitega tegime, suure tüki külge, nii et kui servo liigub, surub see väike tüübel alla, mis omakorda surub vedrud ka alla.
Lõikasin 12 cm x 4 cm tüki alumisest osast umbes 3 cm ja liimisin sellele veel kaks 4 cm x 1, 5 cm tükki, seejärel katsin selle 5, 5 x 4 cm papitükiga. Ja markeri hoidmiseks tegin väikese elastse riba silmus ja liimisin selle väikese papitüki külge, siis liimisin selle 4 x 2 cm tüki külge, mis liigub servo käivitamisel alla. Need lisad takistasid markeri liikumist küljelt küljele, kui vedrud tagasi tõusid.
3. samm: servomootori ja paberirulli lisamine alusele
Lisasin aluse ühele küljele veel kaks tellist, et toetada servotükki ja liimisin selle kohale. Seejärel lisasin ratta aluse kaugemasse otsa.
4. samm: samm -mootori raami ehitamine
See samm oli natuke väljakutse, sest mootor ei olnud Legoga ideaalselt sobitatud. Siiski õnnestus mul seda teha, kasutades mootori kahte auku, et see oma kohale kinnitada. Järgmisena liimisin mootori otsa Lego ratta ja seejärel panin selle otse aluse kõrvale küljele, mille jätsin 1. etapis avatuks.
5. samm: viimistlus
Lisasin ratta katmiseks kaks kaaratükki, et paber oma kohale kinnitada. Ja lisasin kaks väiksemat kaareosa, millest üks hoidis samm -mootori juhtmeid ja teine paberit. Lõpuks vahetasin samm -mootorratta veidi suurema vastu, mis liigutas paberit paremini kui vana ratas.
6. samm: elektroonika
Lõpuks peate mootorid Arduinoga ühendama ja koodi üles laadima.
Alustame servomootoriga, ühendage pruun juhe (maandusjuhe) GND tihvtiga, seejärel punane juhe (toitejuhe) 5 V tihvtiga ja oranž juhe (signaaltraat) dig #5 tihvt. Seejärel ühendage samm -mootor 1N1 kaevuga #11, 1N2 kaevuga #10, 1N3 kaevuga #9, 1N4 kaevuga #8, 5 V leivaplaadi positiivse poolega ja maandusnõel negatiivse küljega leivalaud. Ja ärge unustage ühendada toiteallika moodul leivaplaadiga, veendudes, et selle positiivsed ja negatiivsed küljed joonduvad õigesti leivalaua vastavate külgedega. Kui te unustate seda teha, pöörate oma projekti võimsuse ümber ja te ei soovi seda teha.
Koodi jaoks kirjutasin neli meetodit: ühe punkti kirjutamiseks, ühe kriipsu kirjutamiseks ja kaks, et jätta iga tähe ja sõna vahele tühimik. Nii saan ma neid meetodeid lihtsalt vajadusel nimetada, selle asemel, et seda iga kirja jaoks uuesti kirjutada. Seejärel kirjutasin for for loop, mis läbib teksti iga tähe ja kirjutan selle. Selle sees kirjutasin iga tähe jaoks if -avalduse, kuid soovi korral saate selle lülituslauseks kirjutada. Muidugi saate koodile lisada, et programm saaks numbreid lugeda. Kui kõik juhtmed on valmis, kopeerige ja kleepige kood IDE -sse. Ärge unustage installida stepper-, servo- ja stringiteeke. Pärast seda on teil hea minna.
Kuidas see töötab
Kui Arduino käivitab, vaatab programm teksti esimest tähte ja sõltuvalt sellest, milline see on, kutsub see funktsioone, mis kirjutavad selle morse koodis. Näiteks kui punktfunktsiooni kutsutakse, on servomootor seatud 160 -le, mis liigutab pliiatsi alla, seejärel seatakse see tagasi 90 -le, mis võimaldab vedrudel pliiatsit kaasas liigutades tagasi tulla. Ja kui helistatakse kriipsfunktsioonile, nihutab servo pliiatsi alla, seejärel liigutab samm -mootor ratast, mis tõmbab paberit, pannes pliiatsi kriipsu kirjutama. Ja kui ühte ruumifunktsiooni nimetatakse samm -mootoriks, siis see pöörleb, kuid pliiats üleval, nii et see tõmbab paberit, jättes tähtede või sõnade vahele tühiku. Kui see on tehtud, läheb see järgmise tähe juurde ja kordab sama protsessi. Ma loodan, et sulle meeldib see;)
Kood
#kaasake
#include #include #include const int stepsPerRevolution = 150; // See on samm -mootori muutuja String lause = "*tere"; // Muuda seda muutujat, et kirjutada erinevaid sõnu, kuid kirjutada ainult väikeste tähtedega ja alustada oma sõna tähega "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // See on meetod, mis paneb roboti kirjutama dot void dot () {Serial.println ("dot start"); myServo.write (160); viivitus (1000); myServo.write (90); viivitus (1000); myStepper.step (stepsPerRevolution); viivitus (1000); Serial.println ("punkt tehtud"); } // See on meetod, mis paneb roboti kirjutama kriipsu tühi kriips () {Serial.println ("dash start"); myServo.write (160); viivitus (1000); myStepper.step (stepsPerRevolution); viivitus (1000); myServo.write (90); viivitus (1000); myStepper.step (stepsPerRevolution); viivitus (1000); Serial.println ("kriips tehtud"); } // See on meetod, mis paneb roboti iga tähe vahele tühiku tühjaks jätma () {Serial.println ("space start"); myServo.write (90); viivitus (1000); myStepper.step (200); viivitus (1000); Serial.println ("tühik tehtud"); } // See on meetod, mis paneb roboti jätma iga sõna vahele tühimiku tühjaks bigSpace () {myServo.write (90); myStepper.step (250); viivitus (1000); } void setup () {// pange oma seadistuskood siia, et seda korra käivitada: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int esimene = lause.indexOf ('*'); // see tsükkel läbib stringi iga tähe ja kutsub seejärel õiged meetodid selle üles kirjutamiseks (int i = 0; i <lause.pikkus (); i ++) {if (lause.charAt (esimene+i) == 'a') {Serial.print (".-"); punkt (); kriips (); tühik (); } else if (lause.charAt (esimene + i) == 'b') {Serial.print ("-…"); kriips (); punkt (); punkt (); punkt (); tühik (); } muidu kui (lause.charAt (esimene + i) == 'c') {Serial.print ("-.-."); kriips (); punkt (); kriips (); punkt (); tühik (); } else if (lause.charAt (esimene + i) == 'd') {Serial.print ("-.."); kriips (); punkt (); punkt (); tühik (); } else if (lause.charAt (esimene + i) == 'e') {Seeria.print ("."); punkt (); tühik (); } muidu kui (lause.charAt (esimene + i) == 'f') {Serial.print ("..-."); punkt (); punkt (); kriips (); punkt (); tühik (); } else if (lause.charAt (esimene + i) == 'g') {Serial.print ("-."); kriips (); kriips (); punkt (); tühik (); } muidu kui (lause.charAt (esimene + i) == 'h') {Serial.print ("…."); punkt (); punkt (); punkt (); punkt (); tühik (); } else if (lause.charAt (esimene + i) == 'i') {Serial.print (".."); punkt (); punkt (); tühik (); } else if (lause.charAt (esimene + i) == 'j') {Seeria.print (".---"); punkt (); kriips (); kriips (); kriips (); tühik (); } muidu kui (lause.charAt (esimene + i) == 'k') {Serial.print ("-.-"); kriips (); punkt (); kriips (); tühik (); } muidu kui (lause.charAt (esimene + i) == 'l') {Serial.print (".-.."); punkt (); kriips (); punkt (); punkt (); tühik (); } else if (lause.charAt (esimene + i) == 'm') {Serial.print ("-"); kriips (); kriips (); tühik (); } else if (lause.charAt (esimene + i) == 'n') {Seeria.print ("-."); kriips (); punkt (); tühik (); } else if (lause.charAt (esimene + i) == 'o') {Seeria.print ("---"); kriips (); kriips (); kriips (); tühik (); } else if (lause.charAt (esimene + i) == 'p') {Seeria.print (".--."); punkt (); kriips (); kriips (); punkt (); tühik (); } muidu kui (lause.charAt (esimene + i) == 'q') {Seeria.print ("--.-"); kriips (); kriips (); punkt (); kriips (); tühik (); } muidu kui (lause.charAt (esimene + i) == 'r') {Serial.print (".-."); punkt (); kriips (); punkt (); tühik (); } else if (lause.charAt (esimene + i) == 's') {Serial.print ("…"); punkt (); punkt (); punkt (); tühik (); } else if (lause.charAt (esimene + i) == 't') {Serial.print ("-"); kriips (); tühik (); } else if (lause.charAt (esimene + i) == 'u') {Serial.print ("..-"); punkt (); punkt (); kriips (); tühik (); } else if (lause.charAt (esimene + i) == 'v') {Serial.print ("…-"); punkt (); punkt (); punkt (); kriips (); tühik (); } muidu kui (lause.charAt (esimene + i) == 'w') {Serial.print (".--"); punkt (); kriips (); kriips (); tühik (); } else if (lause.charAt (esimene + i) == 'x') {Serial.print ("-..-"); kriips (); punkt (); punkt (); kriips (); tühik (); } muidu kui (lause.charAt (esimene + i) == 'y') {Serial.print ("-.--"); kriips (); punkt (); kriips (); kriips (); tühik (); } else if (lause.charAt (esimene + i) == 'z') {Serial.print ("-.."); kriips (); kriips (); punkt (); punkt (); tühik (); } muidu kui (lause.charAt (esimene + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Ära kirjuta siia midagi}
Samm: tõrkeotsing
Ratas ei liigu
Ratta ja paberi vahel võib olla liiga palju hõõrdumist, proovige ratast veidi tõsta või muuta.
Ratas tõmbab paberit, kuid pöörleb edasi ilma paberit tõmbamata
Veenduge, et liimisite ratta samm -mootori keskele
Punktid ja kriipsud on ühendatud
Kontrollige, kas punkti, kriipsu ja tühiku funktsioonid on õigesti kirjutatud, need peaksid olema sellised:
// See on meetod, mis paneb roboti kirjutama täpse punkti () {Serial.println ("dot start"); myServo.write (160); viivitus (1000); myServo.write (90); viivitus (1000); myStepper.step (stepsPerRevolution); viivitus (1000); Serial.println ("punkt tehtud"); }
// See on meetod, mis paneb roboti kriipsu kirjutama
void dash () {Serial.println ("kriips algus"); myServo.write (160); viivitus (1000); myStepper.step (stepsPerRevolution); viivitus (1000); myServo.write (90); viivitus (1000); myStepper.step (stepsPerRevolution); viivitus (1000); Serial.println ("kriips tehtud"); }
// See on meetod, mille abil robot jätab iga tähe vahele tühiku
tühi ruum () {Serial.println ("tühiku algus"); myServo.write (90); viivitus (1000); myStepper.step (200); viivitus (1000); Serial.println ("tühik tehtud"); }
Soovitan:
Pongitennis koos LED -maatriksi, Arduino ja juhtkangidega: 5 sammu (koos piltidega)
Pongitennis koos LED -maatriksi, Arduino ja juhtkangidega: see projekt on mõeldud nii algajatele kui ka kogenud tinistajatele. Põhitasandil saab seda teha leivaplaadiga, hüppajajuhtmetega ja kinnitada Blu-Tackiga ja ilma jootmiseta vanarauale (kasutasin puitu). Kuid rohkem edasi liikudes
IoT õhuvärskendaja (koos NodeMCU, Arduino, IFTTT ja Adafruit.io): 15 sammu (koos piltidega)
IoT õhuvärskendaja (koos NodeMCU, Arduino, IFTTT ja Adafruit.io): Instructables Wireless Contest 2017 esimese auhinna võitja !!!: DNew on nüüd saadaval: ilmateatega IoT kell! Vaadake seda: https://www.instructables.com/id/Minimalist-IoT-Clock-using-ESP8266-Adafruitio-IFTT/ See on lohutav, kui teil on lõhn
Commodore 64 uuendus koos Raspberry Pi, Arduino ja Legoga: 17 sammu (koos piltidega)
Commodore 64 uuendus koos Raspberry Pi, Arduino ja Legoga: See projekt võimaldab teil taasavastada 1980ndate mängumaastiku, äratades ellu vana Commodore 64 koduarvuti, kasutades uusi komponente ja neid mitmekülgseid Lego klotse! Kui teil oli üks neist arvutitest, võimaldab see ehitis unustatud mänge uuesti mängida
IoT -rahakott (nutikas rahakott koos Firebeetle ESP32, Arduino IDE ja Google'i arvutustabeliga): 13 sammu (koos piltidega)
IoT-rahakott (nutikas rahakott koos Firebeetle ESP32, Arduino IDE ja Google'i arvutustabeliga): esimene auhind Instructables Pocket-Sized Contest konkursil! Need muutuvad üleöö ja te ei tea kunagi, kui palju raha on teie rahakotis
WiFi nutikas skaala (koos ESP8266, Arduino IDE, Adafruit.io ja IFTTT): 18 sammu (koos piltidega)
Wi-Fi nutikas skaala (koos ESP8266, Arduino IDE, Adafruit.io ja IFTTT): kui teie elukoht on juba suvi, on see tõenäoliselt suurepärane aeg välitreeningute tegemiseks. Jooksmine, jalgrattasõit või sörkimine on suurepärased treenijad, et end vormis hoida. Ja kui soovite oma praegust kaalu kaotada või seda kontrollida, on hädavajalik