Tartalomjegyzék:

Arduino Morse Code Writer: 7 lépés (képekkel)
Arduino Morse Code Writer: 7 lépés (képekkel)

Videó: Arduino Morse Code Writer: 7 lépés (képekkel)

Videó: Arduino Morse Code Writer: 7 lépés (képekkel)
Videó: Web Programming - Computer Science for Business Leaders 2016 2024, Július
Anonim
Image
Image
Arduino Morse Code Writer
Arduino Morse Code Writer

Készítettem egy robotot, amely képes bármilyen szöveget Morse -kódra konvertálni, majd leírni !! Kartonból és Legóból készült, az elektronikához pedig Arduino -t és csak két motort használtam.

Kellékek

Arduino Uno tábla Léptetőmotor Mikroszervó SG90ULN2003 léptetőmotor meghajtó modul Tápegység modul Kenyértábla 4 × Jumper vezetékek 6 × Nő-férfi dupont vezetékek 9V1A adapter USB kábel Karton 2 × Fa tiplik 2 × Rugók Szalma Fehér papír LegoSuper ragasztó Forró ragasztópisztoly Rugalmas szalag (tolltartó) Ollóvágó

1. lépés: Az alap építése

A bázis építése
A bázis építése
A bázis építése
A bázis építése
A bázis építése
A bázis építése

Kezdje az alap építésével. Az enyém 4 csapszélességű és 20 csapszeg hosszú, miután egy réteget építettem ilyen hosszúsággal, köré építettem egy csapszeg széles szegélyt, így az egyik oldalon rés maradt, hogy helyet hagyjon a léptetőmotornak, majd hozzáadtam csempe darabokat a középső részhez, ahol a papírcsík lesz. A Lego használatával nagyon stabil és könnyen módosítható lett. A papírtekercs elkészítéséhez 1,2 cm széles A4 -es papírcsíkokat vágtam (ezt a szélességet választottam, mert szélessége megegyezik az általam használt Lego -kerékkel, a kerekétől függően nagyobb vagy kisebb lehet a tied), és összeragasztottam a végeiket. hogy egy nagyon hosszú csíkot képezzek, majd a kerék köré tekertem.

2. lépés: A szervo darab

A szervo darab
A szervo darab
A szervo darab
A szervo darab
A szervo darab
A szervo darab

Ehhez a lépéshez szüksége van:

  • két 4 cm hosszú fa dübel
  • két rugó 2 cm hosszú
  • egy szalma két darab, 2 cm hosszú
  • egy 12 x 4 cm -es kartonpapír
  • két 4 x 1,5 cm -es kartonpapír
  • egy 4 x 2 cm -es kartonpapír

Először ragassza fel a dübeleket a 4 x 1,5 darab egyikére, majd illessze a rugókat és a szívószálakat a tiplikbe, majd ragassza fel a másik kartondobozt a másik oldalra, hogy minden a helyén maradjon.

Másodszor, ragassza fel a 4 cm -es 2 cm -es darabot a szívószálak tetejére.

Harmadszor, fordítsa meg az egész darabot, és ragasszon egy kis dübelt a hátuljára, ne középre, hanem kissé balra. (Az első képen elfelejtettem hozzáadni a kis tiplit)

Végül vágjon egy lyukat a nagy kartondobozba, akkora, mint a szervomotor eleje, és ragassza be a motort, majd ragassza fel a darabot, amelyet a tiplikkel készítettünk a nagy darabhoz, hogy amikor a szervó mozog, nyomja a kis dübel le, ami viszont a rugókat is lenyomja.

Végül kb. 3 cm -re vágtam a 12 cm -es 4 cm -es darab alsó részétől, és még két 4 cm -es, 1,5 cm -es darabot ragasztottam rá, majd lefedtem egy 5,5 cm -es 4 cm -es kartonpapírral. A jelölő megtartásához készítettem egy kis rugalmas gumiszalagot, és egy kis kartondobozra ragasztottam, majd ragasztottam azt a 4 cm -es 2 cm -es darabra, amely a szervó elindulásakor lefelé mozog. Ezek a kiegészítések megakadályozták a jelölő egyik oldalról a másikra történő elmozdulását, amikor a rugók visszatérnek.

3. lépés: A szervomotor és a papírtekercs hozzáadása az alaphoz

A szervomotor és a papírtekercs hozzáadása az alaphoz
A szervomotor és a papírtekercs hozzáadása az alaphoz
A szervomotor és a papírtekercs hozzáadása az alaphoz
A szervomotor és a papírtekercs hozzáadása az alaphoz

Hozzáadtam még két téglát az alap egyik oldalához, hogy támogassa a szervódarabot, és a helyére ragasztottam. Ezután hozzáadtam a kereket az alap túlsó végéhez.

4. lépés: A léptetőmotor keretének felépítése

A léptetőmotor keretének felépítése
A léptetőmotor keretének felépítése
A léptetőmotor keretének felépítése
A léptetőmotor keretének felépítése
A léptetőmotor keretének felépítése
A léptetőmotor keretének felépítése

Ez a lépés némi kihívást jelentett, mert a motort nem úgy készítették el, hogy tökéletesen illeszkedjen a Legóhoz. Azonban sikerült megcsinálnom a motor két lyukának használatával, hogy rögzítse a helyén. Ezután a motor hegyéhez ragasztottam egy Lego kereket, majd közvetlenül az alap mellé tettem azt az oldalt, amelyet az 1. lépésben nyitva hagytam.

5. lépés: Utolsó simítások

Utolsó simítások
Utolsó simítások
Utolsó simítások
Utolsó simítások
Utolsó simítások
Utolsó simítások
Utolsó simítások
Utolsó simítások

Hozzáadtam két ívdarabot, hogy lefedje a kereket, hogy rögzítse a papírt a helyén. És hozzáadtam két kisebb ívdarabot, az egyiket a léptetőmotor vezetékeinek és egy másikat a papír tartásához. Végül kicseréltem a léptetőmotor kerekét egy kicsit nagyobbra, amely jobban mozgatta a papírt, mint a régi kerék.

6. lépés: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika

Végül csatlakoztatnia kell a motorokat az Arduino -hoz, és fel kell töltenie a kódot.

Kezdjük a szervomotorral, csatlakoztassuk a barna vezetéket (a földvezetéket) a GND csaphoz, majd a piros vezetéket (a tápkábelt) az 5 V -os tűhöz, és a narancssárga vezetéket (a jelvezetéket) a Dig #5 csap. Ezután a léptetőmotor csatlakoztassa az 1N1 -et a 11. sz. kenyeretábla. És ne felejtse el csatlakoztatni a tápegység modult a kenyértáblához, ügyelve arra, hogy pozitív és negatív oldala helyesen illeszkedjen a kenyérlap megfelelő oldalaihoz. Ha elfelejti ezt megtenni, akkor visszakapcsolja a projekt hatalmát, és ezt nem akarja megtenni.

A kódhoz négy módszert írtam, egyet ponttal, egyet kötőjellel, kettőt, hogy hagyjak szóközt minden betű és szó között. Így csak hívhatom ezeket a módszereket, amikor szükségem van rájuk, ahelyett, hogy minden levélhez újra megírnám. Aztán írtam egy for ciklust, amely végigmegy a szöveg minden betűjén, és beírja, Belsejében írtam egy if utasítást minden betűhöz, de írhat egy kapcsoló utasításba, ha úgy tetszik. Természetesen hozzáadhat a kódhoz, hogy a program le tudja olvasni a számokat. Ha minden kábelezés kész, csak másolja ki és illessze be a kódot az IDE -be. Ne felejtse el telepíteni a léptető-, szervó- és karakterkönyvtárat. Ezek után nyugodtan indulhatsz.

Hogyan működik

Amikor az Arduino elindítja a programot, megnézi a szöveg első betűjét, és attól függően, hogy melyik az, meghívja azokat a függvényeket, amelyek Morse -kódban írják. Például, amikor a pont funkciót hívják meg, a szervomotor 160 -ra van állítva, amely lefelé mozgatja a tollat, majd visszaállítja 90 -re, ami lehetővé teszi a rugók visszafelé mozgatását a tollat velük együtt. Ha pedig meghívjuk a kötőjel funkciót, akkor a szervó lefelé mozgatja a tollat, majd a léptetőmotor forgatja a kereket, amely meghúzza a papírt, és a toll tollát írni. És ha az egyik szóközfunkciót léptetőmotornak hívják, akkor forog, de felfelé a tollal, így húzza a papírt, így a betűk vagy a szavak között szóköz van. Ha kész, akkor a következő betűre lép, és megismétli ugyanazt a folyamatot. Remélem, tetszik ez;)

A kód

#befoglalni

#include #include #include const int stepsPerRevolution = 150; // Ez a léptetőmotor változója String mondat = "*hello"; // Változtassa meg ezt a változót, hogy különböző szavakat írjon, de csak kis betűkkel írjon, és kezdje szavát "*" -al Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Szervo myServo; // Ez az a módszer, amellyel a robot pont void pontot ír () {Serial.println ("dot start"); myServo.write (160); késleltetés (1000); myServo.write (90); késleltetés (1000); myStepper.step (stepsPerRevolution); késleltetés (1000); Serial.println ("pont kész"); } // Ez az a módszer, amellyel a robot kötőjelet írhat void dash () {Serial.println ("dash start"); myServo.write (160); késleltetés (1000); myStepper.step (stepsPerRevolution); késleltetés (1000); myServo.write (90); késleltetés (1000); myStepper.step (stepsPerRevolution); késleltetés (1000); Serial.println ("kötőjel kész"); } // Ez az a módszer, amellyel a robot üres teret hagy minden betű között void space () {Serial.println ("space start"); myServo.write (90); késleltetés (1000); myStepper.step (200); késleltetés (1000); Serial.println ("space done"); } // Ez az a módszer, amellyel a robot nagyobb teret hagy minden szó között void bigSpace () {myServo.write (90); myStepper.step (250); késleltetés (1000); } void setup () {// tegye ide a beállítási kódot, hogy egyszer lefusson: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int első = mondat.indexOf ('*'); // ez a ciklus végigmegy a karakterlánc minden betűjén, majd meghívja a megfelelő módszereket annak leírására (int i = 0; i <mondat.length (); i ++) {if (mondat.charAt (első+i) == 'a') {Soros.nyomtatás (".-"); pont(); gondolatjel(); tér(); } else if (mondat.charAt (első + i) == 'b') {Serial.print ("-…"); gondolatjel(); pont(); pont(); pont(); tér(); } else if (mondat.charAt (első + i) == 'c') {Soros.nyomtatás ("-.-."); gondolatjel(); pont(); gondolatjel(); pont(); tér(); } else if (mondat.charAt (első + i) == 'd') {Serial.print ("-.."); gondolatjel(); pont(); pont(); tér(); } else if (mondat.charAt (első + i) == 'e') {Serial.print ("."); pont(); tér(); } else if (mondat.charAt (első + i) == 'f') {Serial.print ("..-."); pont(); pont(); gondolatjel(); pont(); tér(); } else if (mondat.charAt (első + i) == 'g') {Serial.print ("-."); gondolatjel(); gondolatjel(); pont(); tér(); } else if (mondat.charAt (első + i) == 'h') {Serial.print ("…."); pont(); pont(); pont(); pont(); tér(); } else if (mondat.charAt (első + i) == 'i') {Serial.print (".."); pont(); pont(); tér(); } else if (mondat.charAt (első + i) == 'j') {Soros.nyomat (".---"); pont(); gondolatjel(); gondolatjel(); gondolatjel(); tér(); } else if (mondat.charAt (első + i) == 'k') {Serial.print ("-.-"); gondolatjel(); pont(); gondolatjel(); tér(); } else if (mondat.charAt (első + i) == 'l') {Serial.print (".-.."); pont(); gondolatjel(); pont(); pont(); tér(); } else if (mondat.charAt (első + i) == 'm') {Serial.print ("-"); gondolatjel(); gondolatjel(); tér(); } else if (mondat.charAt (első + i) == 'n') {Serial.print ("-."); gondolatjel(); pont(); tér(); } else if (mondat.charAt (első + i) == 'o') {Serial.print ("---"); gondolatjel(); gondolatjel(); gondolatjel(); tér(); } else if (mondat.charAt (első + i) == 'p') {Soros.nyomat (".--."); pont(); gondolatjel(); gondolatjel(); pont(); tér(); } else if (mondat.charAt (első + i) == 'q') {Serial.print ("--.-"); gondolatjel(); gondolatjel(); pont(); gondolatjel(); tér(); } else if (mondat.charAt (első + i) == 'r') {Soros.nyomat (".-."); pont(); gondolatjel(); pont(); tér(); } else if (mondat.charAt (első + i) == 's') {Serial.print ("…"); pont(); pont(); pont(); tér(); } else if (mondat.charAt (első + i) == 't') {Serial.print ("-"); gondolatjel(); tér(); } else if (mondat.charAt (első + i) == 'u') {Serial.print ("..-"); pont(); pont(); gondolatjel(); tér(); } else if (mondat.charAt (első + i) == 'v') {Serial.print ("…-"); pont(); pont(); pont(); gondolatjel(); tér(); } else if (mondat.charAt (első + i) == 'w') {Soros.nyomtatás (".--"); pont(); gondolatjel(); gondolatjel(); tér(); } else if (mondat.charAt (első + i) == 'x') {Serial.print ("-..-"); gondolatjel(); pont(); pont(); gondolatjel(); tér(); } else if (mondat.charAt (első + i) == 'y') {Serial.print ("-.--"); gondolatjel(); pont(); gondolatjel(); gondolatjel(); tér(); } else if (mondat.charAt (első + i) == 'z') {Serial.print ("-.."); gondolatjel(); gondolatjel(); pont(); pont(); tér(); } else if (mondat.charAt (első + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Ne írj ide semmit}

7. lépés: Hibaelhárítás

A kerék nem mozog

Lehet, hogy túl nagy a súrlódás a kerék és a papír között, próbálja meg kissé felemelni vagy kicserélni a kereket.

A kerék húzza a papírt, de aztán tovább forog anélkül, hogy meghúzná a papírt

Győződjön meg arról, hogy a kereket a léptetőmotor közepére ragasztotta

A pontok és kötőjelek össze vannak kötve

Ellenőrizze, hogy a pont-, kötőjel- és szóközfüggvények helyesen vannak -e írva, ezeknek így kell lenniük:

// Ez az a módszer, amellyel a robot dotvoid pontot ír () {Serial.println ("dot start"); myServo.write (160); késleltetés (1000); myServo.write (90); késleltetés (1000); myStepper.step (stepsPerRevolution); késleltetés (1000); Serial.println ("pont kész"); }

// Ez az a módszer, amellyel a robot kötőjelet ír

void dash () {Serial.println ("kötőjel kezdete"); myServo.write (160); késleltetés (1000); myStepper.step (stepsPerRevolution); késleltetés (1000); myServo.write (90); késleltetés (1000); myStepper.step (stepsPerRevolution); késleltetés (1000); Serial.println ("kötőjel kész"); }

// Ez az a módszer, amellyel a robot minden betű között helyet hagy

void space () {Serial.println ("space start"); myServo.write (90); késleltetés (1000); myStepper.step (200); késleltetés (1000); Serial.println ("space done"); }

Ajánlott: