Obsah:

Arduino Morse Code Writer: 7 krokov (s obrázkami)
Arduino Morse Code Writer: 7 krokov (s obrázkami)

Video: Arduino Morse Code Writer: 7 krokov (s obrázkami)

Video: Arduino Morse Code Writer: 7 krokov (s obrázkami)
Video: Как написать переводчик Морзе на Python 2024, Júl
Anonim
Image
Image
Spisovateľ Arduino Morseovho kódu
Spisovateľ Arduino Morseovho kódu

Vyrobil som robota, ktorý dokáže previesť ľubovoľný text na morzeovku a potom ho zapísať !! Je vyrobený z kartónu a Lega a pre elektroniku som použil Arduino a iba dva motory.

Zásoby

Doska Arduino Uno Krokový motor Micro servo SG90ULN2003 modul ovládača krokového motora Modul napájacieho zdroja Breadboard 4 × prepojovacie vodiče6 × dupontné vodiče typu žena-muž-samice 9V1A adaptér USB kábel Kartón 2 × drevené hmoždinky 2 × pružiny Slamka Biely papier legoSuper lepidlo Horúca lepiaca pištoľ Elastický pás držiak pera) Nôž na strihanie nožov

Krok 1: Budovanie základne

Budovanie základne
Budovanie základne
Budovanie základne
Budovanie základne
Budovanie základne
Budovanie základne

Začnite vybudovaním základne. Moje sú 4 čapy široké a 20 čapov dlhé, po vybudovaní jednej vrstvy s týmito dĺžkami som okolo nich postavil jeden širokopásový hranol, ktorý na jednej strane zanechal medzeru, aby zostal priestor pre krokový motor, potom som pridal kúsky dlaždíc do strednej časti, kde bude papierový pás. Používanie Lega ho urobilo veľmi odolným a ľahko sa upravuje. Na výrobu kotúča papiera som nastrihala pásy papiera formátu A4 široké 1,2 cm (ja som zvolila túto šírku, pretože má rovnakú šírku ako koliesko Lego, ktoré som použil, v závislosti od kolieska môžete svoje zväčšiť alebo zmenšiť) a ich konce som zlepila dohromady. aby sa vytvoril jeden veľmi dlhý pás, potom som ho omotal okolo kolesa.

Krok 2: Servo kus

Servo kus
Servo kus
Servo kus
Servo kus
Servo kus
Servo kus

Na tento krok potrebujete:

  • dva drevené hmoždinky dlhé 4 cm
  • dva pramene dlhé 2 cm
  • jedna slama nakrájaná na dva kusy, každý o priemere 2 cm
  • jeden kus lepenky s rozmermi 12 x 4 cm
  • dva kusy lepenky s rozmermi 4 x 1,5 cm
  • jeden kus lepenky s rozmermi 4 x 2 cm

Najprv prilepte hmoždinky na jeden zo 4 dielov po 1,5 dieliku, potom do hmoždiniek vložte pružiny a slamky a potom na druhú stranu prilepte druhý kus lepenky, aby všetko držalo na svojom mieste.

Za druhé, prilepte kúsok 4 cm x 2 cm na slamky.

Po tretie, prevráťte celý kus a prilepte naň malú hmoždinku, nie v strede, ale mierne vľavo. (Zabudol som pridať malú hmoždinku na prvom obrázku)

Nakoniec vyrežte otvor vo veľkom kúsku lepenky o veľkosti prednej strany servomotora a prilepte motor dovnútra, potom kus, ktorý sme práve urobili hmoždinkami, prilepte na veľký kus tak, aby sa servo pri pohybe tlačilo na malý hmoždinka nadol, ktorý zase tlačí pružiny nadol.

Nakoniec som odrezal asi 3 cm od spodnej časti dielu s rozmermi 12 cm x 4 cm a prilepil som naň ďalšie dva kusy s rozmermi 4 x 1,5 cm a potom som to prekryl kusom lepenky s rozmermi 5,5 x 4 cm. A aby som držal fixku, urobil som malý slučku gumičky a prilepil som ju na malý kúsok lepenky, potom som ju prilepil na kúsok 4 cm x 2 cm, ktorý sa posunie nadol, keď sa servo spustí. Tieto doplnky zastavili pohyb značky zo strany na stranu, keď sa pružiny vrátili hore.

Krok 3: Pridanie servomotora a kotúča papiera k základni

Pridanie servomotora a kotúča papiera k základni
Pridanie servomotora a kotúča papiera k základni
Pridanie servomotora a kotúča papiera k základni
Pridanie servomotora a kotúča papiera k základni

Na jednu stranu základne som pridal ďalšie dve tehly na podoprenie servopohonu a prilepil som ich na miesto. Potom som pridal koleso na vzdialený koniec základne.

Krok 4: Zostavenie rámu krokového motora

Stavba rámu krokového motora
Stavba rámu krokového motora
Stavba rámu krokového motora
Stavba rámu krokového motora
Stavba rámu krokového motora
Stavba rámu krokového motora

Tento krok bol trochu výzvou, pretože motor nebol vyrobený tak, aby dokonale zodpovedal legu. Podarilo sa mi to však pomocou dvoch otvorov v motore, aby som to zaistil na svojom mieste. Ďalej som na špičku motora prilepil koleso Lego a potom som ho položil tesne vedľa základne na stranu, ktorú som v kroku 1 nechal otvorenú.

Krok 5: Dokončenie dotykov

Dokončovacie dotyky
Dokončovacie dotyky
Dokončovacie dotyky
Dokončovacie dotyky
Dokončovacie dotyky
Dokončovacie dotyky
Dokončovacie dotyky
Dokončovacie dotyky

Pridal som dva oblúkové kusy na zakrytie kolesa, aby sa papier zafixoval na mieste. A pridal som dva menšie oblúkové kusy, jeden na držanie drôtov krokového motora a druhý na držanie papiera. Nakoniec som zmenil koleso krokového motora na mierne väčšie, ktoré pohybovalo papierom lepšie ako staré koleso.

Krok 6: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika

Nakoniec musíte pripojiť motory k Arduinu a nahrať kód.

Začneme so servomotorom, pripojíme hnedý vodič (uzemňovací vodič) ku kolíku GND, potom červený vodič (napájací vodič) k kolíku 5V a oranžový vodič (signálny vodič) k vývodu Dig #5. špendlík. Ďalej, krokový motor, pripojte 1N1 k Dig #11, 1N2 k Dig #10, 1N3 k Dig #9, 1N4 k Dig #8, 5V k kladnej strane dosky a uzemňovací kolík k zápornej strane breadboard. Nezabudnite pripojiť napájací modul k doske na chlieb a uistite sa, že jeho kladná a záporná strana sú správne zarovnané so zodpovedajúcimi stranami na doske. Ak to zabudnete, obrátite silu svojho projektu a nechcete to robiť.

Pre kód som napísal štyri metódy, jednu na napísanie bodky, jednu na pomlčku a dve na ponechanie medzery medzi každým písmenom a každým slovom. Tak môžem tieto metódy jednoducho zavolať, keď ich potrebujem, namiesto toho, aby som to znova písal pre každé písmeno. Potom som napísal slučku for, ktorá prechádza každým písmenom textu, a napíšte ju. Do nej som napísal príkaz if pre každé písmeno, ale ak chcete, môžete ho napísať do príkazu switch. Samozrejme môžete do kódu pridať, aby program mohol čítať čísla. Keď sú všetky káble pripravené, skopírujte a prilepte kód do svojho IDE. Nezabudnite nainštalovať knižnice krokových, servopohonov a reťazcov. Potom môžete ísť.

Ako to funguje

Keď sa Arduino spustí, program sa pozrie na prvé písmeno textu. V závislosti od toho, ktoré to je, zavolá funkcie, ktoré ho píšu v morzeovke. Keď napríklad zavoláte bodovú funkciu, servomotor sa nastaví na 160, čím sa pero posunie nadol, potom sa nastaví späť na 90, čo umožní pružinám vrátiť sa hore a pohybovať s nimi perom. A ak je vyvolaná funkcia pomlčky, servo posunie pero nadol, potom krokový motor otáča kolesom, ktoré ťahá papier a pero píše pomlčku. A ak sa niektorá z vesmírnych funkcií nazýva, krokový motor sa otáča, ale perom hore, ťahá papier a vytvára priestor medzi písmenami alebo slovami. Keď je hotový, prejde na ďalšie písmeno a zopakuje rovnaký postup. Dúfam, že sa ti to páči;)

Kód

#zahrnúť

#include #include #include const int stepsPerRevolution = 150; // Toto je premenná pre krokový motor Reťazec vety = "*ahoj"; // Zmeňte túto premennú na písanie rôznych slov, ale píšte iba malými písmenami a začnite slovo „*“Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Toto je metóda, vďaka ktorej robot napíše bodku prázdna bodka () {Serial.println ("bodový štart"); myServo.write (160); oneskorenie (1000); myServo.write (90); oneskorenie (1000); myStepper.step (stepsPerRevolution); oneskorenie (1000); Serial.println („bodka hotová“); } // Toto je metóda, ktorá robota núti písať pomlčku prázdna pomlčka () {Serial.println ("pomlčka štart"); myServo.write (160); oneskorenie (1000); myStepper.step (stepsPerRevolution); oneskorenie (1000); myServo.write (90); oneskorenie (1000); myStepper.step (stepsPerRevolution); oneskorenie (1000); Serial.println („pomlčka hotová“); } // Toto je metóda, vďaka ktorej robot ponechá medzeru medzi jednotlivými písmenami prázdna medzera () {Serial.println ("medzera na začiatku"); myServo.write (90); oneskorenie (1000); myStepper.step (200); oneskorenie (1000); Serial.println („miesto dokončené“); } // Toto je metóda, vďaka ktorej robot ponechá väčšiu medzeru medzi každým slovom void bigSpace () {myServo.write (90); myStepper.step (250); oneskorenie (1000); } void setup () {// sem vložte svoj inštalačný kód, aby sa spustil raz: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int prvá = veta.indexOf ('*'); // táto slučka for prejde každým písmenom reťazca a potom zavolá správne metódy na zapísanie (int i = 0; i <trest.length (); i ++) {if (trest.charAt (prvý+i) == 'a') {Serial.print (".-"); bodka (); pomlčka (); priestor (); } else if (věta.charAt (prvá + i) == 'b') {Serial.print ("-…"); pomlčka (); bodka (); bodka (); bodka (); priestor (); } else if (věta.charAt (prvá + i) == 'c') {Serial.print ("-.-."); pomlčka (); bodka (); pomlčka (); bodka (); priestor (); } else if (věta.charAt (prvá + i) == 'd') {Serial.print ("-.."); pomlčka (); bodka (); bodka (); priestor (); } else if (věta.charAt (prvá + i) == 'e') {Serial.print ("."); bodka (); priestor (); } else if (věta.charAt (prvá + i) == 'f') {Serial.print ("..-."); bodka (); bodka (); pomlčka (); bodka (); priestor (); } else if (věta.charAt (prvá + i) == 'g') {Serial.print ("-."); pomlčka (); pomlčka (); bodka (); priestor (); } else if (věta.charAt (prvá + i) == 'h') {Serial.print ("…."); bodka (); bodka (); bodka (); bodka (); priestor (); } else if (věta.charAt (prvá + i) == 'i') {Serial.print (".."); bodka (); bodka (); priestor (); } else if (věta.charAt (prvá + i) == 'j') {Serial.print (".---"); bodka (); pomlčka (); pomlčka (); pomlčka (); priestor (); } else if (věta.charAt (prvá + i) == 'k') {Serial.print ("-.-"); pomlčka (); bodka (); pomlčka (); priestor (); } else if (věta.charAt (prvá + i) == 'l') {Serial.print (".-.."); bodka (); pomlčka (); bodka (); bodka (); priestor (); } else if (věta.charAt (prvá + i) == 'm') {Serial.print ("-"); pomlčka (); pomlčka (); priestor (); } else if (věta.charAt (prvá + i) == 'n') {Serial.print ("-."); pomlčka (); bodka (); priestor (); } else if (věta.charAt (prvá + i) == 'o') {Serial.print ("---"); pomlčka (); pomlčka (); pomlčka (); priestor (); } else if (věta.charAt (prvá + i) == 'p') {Serial.print ("-."); bodka (); pomlčka (); pomlčka (); bodka (); priestor (); } else if (věta.charAt (prvá + i) == 'q') {Serial.print ("--.-"); pomlčka (); pomlčka (); bodka (); pomlčka (); priestor (); } else if (věta.charAt (prvá + i) == 'r') {Serial.print (".-."); bodka (); pomlčka (); bodka (); priestor (); } else if (věta.charAt (prvá + i) == 's') {Serial.print ("…"); bodka (); bodka (); bodka (); priestor (); } else if (věta.charAt (prvá + i) == 't') {Serial.print ("-"); pomlčka (); priestor (); } else if (věta.charAt (prvá + i) == 'u') {Serial.print ("..-"); bodka (); bodka (); pomlčka (); priestor (); } else if (věta.charAt (prvá + i) == 'v') {Serial.print ("…-"); bodka (); bodka (); bodka (); pomlčka (); priestor (); } else if (věta.charAt (prvá + i) == 'w') {Serial.print ("-"); bodka (); pomlčka (); pomlčka (); priestor (); } else if (věta.charAt (prvá + i) == 'x') {Serial.print ("-..-"); pomlčka (); bodka (); bodka (); pomlčka (); priestor (); } else if (věta.charAt (prvá + i) == 'y') {Serial.print ("-.--"); pomlčka (); bodka (); pomlčka (); pomlčka (); priestor (); } else if (věta.charAt (prvá + i) == 'z') {Serial.print ("-.."); pomlčka (); pomlčka (); bodka (); bodka (); priestor (); } else if (věta.charAt (prvá + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Nič sem nepíšte}

Krok 7: Riešenie problémov

Koleso sa nepohybuje

Medzi kolesom a papierom môže byť príliš veľké trenie, skúste koleso trochu nadvihnúť alebo ho vymeniť.

Koleso ťahá papier, ale potom sa stále otáča bez ťahania papiera

Uistite sa, že ste v strede krokového motora nalepili koleso

Bodky a čiarky sú spojené

Skontrolujte, či sú bodové, pomlčkové a medzerové funkcie napísané správne, mali by byť takto:

// Toto je metóda, vďaka ktorej robot napíše bodkovanú bodku () {Serial.println ("začiatok bodky"); myServo.write (160); oneskorenie (1000); myServo.write (90); oneskorenie (1000); myStepper.step (stepsPerRevolution); oneskorenie (1000); Serial.println („bodka hotová“); }

// Toto je metóda, vďaka ktorej robot napíše pomlčku

void dash () {Serial.println ("dash dash"); myServo.write (160); oneskorenie (1000); myStepper.step (stepsPerRevolution); oneskorenie (1000); myServo.write (90); oneskorenie (1000); myStepper.step (stepsPerRevolution); oneskorenie (1000); Serial.println („pomlčka hotová“); }

// Toto je metóda, vďaka ktorej robot ponechá medzeru medzi každým písmenom

prázdny priestor () {Serial.println ("štart vesmíru"); myServo.write (90); oneskorenie (1000); myStepper.step (200); oneskorenie (1000); Serial.println („miesto dokončené“); }

Odporúča: