Obsah:

Arduino Morse Code Writer: 7 kroků (s obrázky)
Arduino Morse Code Writer: 7 kroků (s obrázky)

Video: Arduino Morse Code Writer: 7 kroků (s obrázky)

Video: Arduino Morse Code Writer: 7 kroků (s obrázky)
Video: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, Červenec
Anonim
Image
Image
Arduino Morse Code Writer
Arduino Morse Code Writer

Vyrobil jsem robota, který dokáže převést jakýkoli daný text na morseovku a poté ji zapsat !! Je vyroben z kartonu a Lega a pro elektroniku jsem použil Arduino a pouze dva motory.

Zásoby

Deska Arduino Uno Krokový motor Micro servo SG90ULN2003 modul ovladače krokového motoru Modul napájecího zdroje Breadboard4 × propojovací vodiče6 × dupontní vodiče žena-muž-samice 9V1A adaptér USB kabel Karton 2 × dřevěné hmoždinky 2 × pružiny Sláma bílý papír legoSuper lepidlo Horká lepicí pistole Elastický pásek (pro vytvoření držák pera) Nůžky

Krok 1: Budování základny

Budování základny
Budování základny
Budování základny
Budování základny
Budování základny
Budování základny

Začněte stavěním základny. Moje má 4 čepy široké a 20 čepů dlouhé, poté, co jsem postavil jednu vrstvu s těmito délkami, postavil jsem kolem něj jeden hranatý široký hranol, který na jedné straně zanechal mezeru a ponechal prostor pro krokový motor, poté jsem přidal kousky dlaždic do střední části, kde bude papírový proužek. Díky použití Lega bylo velmi robustní a snadno se upravovalo. Abych vytvořil roli papíru, nastříhal jsem proužky papíru formátu A4 o šířce 1,2 cm (tuto šířku jsem zvolil, protože má stejnou šířku jako kolečko Lego, které jsem použil, podle kola můžete své zvětšit nebo zmenšit) a jejich konce jsem slepil k sobě aby vytvořil jeden velmi dlouhý pás, pak jsem ho omotal kolem kola.

Krok 2: Servo Piece

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

K tomuto kroku potřebujete:

  • dva dřevěné hmoždinky dlouhé 4 cm
  • dva prameny dlouhé 2 cm
  • jedna sláma nakrájená na dva kusy o délce 2 cm
  • jeden kus lepenky o rozměrech 12 x 4 cm
  • dva kusy lepenky o rozměrech 4 x 1,5 cm
  • jeden kus lepenky o rozměrech 4 x 2 cm

Hmoždinky nejprve přilepte k jednomu ze 4 kusů o rozměru 1,5, poté vložte pružiny a brčka do hmoždinek a poté přilepte druhý kus lepenky na druhé straně, aby vše drželo na svém místě.

Za druhé, přilepte kus 4 cm na 2 cm na brčka.

Za třetí, otočte celý kus a přilepte na něj malou hmoždinku, ne uprostřed, ale mírně doleva. (Zapomněl jsem přidat malý hmoždinku na prvním obrázku)

Nakonec vyřízněte díru ve velkém kusu lepenky o velikosti přední části servomotoru a přilepte motor dovnitř, poté nalepte kus, který jsme právě vyrobili hmoždinkami, na velký kus, aby při pohybu servopohonu tlačil malý kolík dolů, který zase tlačí pružiny dolů.

Nakonec jsem odřízl asi 3 cm od spodní části dílu o rozměrech 12 cm x 4 cm a přilepil na něj další dva kusy o rozměrech 4 x 1,5 cm, poté jsem to překryl kusem lepenky o rozměrech 5,5 x 4 cm. A pro fixaci jsem vytvořil malý smyčku z elastického pásu a přilepil jsem ji na malý kousek lepenky, pak jsem to nalepil na kousek o rozměrech 4 x 2 cm, který se posune dolů, když začne servo. Tyto doplňky zastavily pohyb značky ze strany na stranu, když se pružiny vrátily nahoru.

Krok 3: Přidání servomotoru a role papíru k základně

Přidání servomotoru a role papíru k základně
Přidání servomotoru a role papíru k základně
Přidání servomotoru a role papíru k základně
Přidání servomotoru a role papíru k základně

Přidal jsem další dvě cihly na jednu stranu základny, abych podepřel servopohon, a přilepil jsem to na místo. Potom jsem přidal kolečko na vzdálenější konec základny.

Krok 4: Sestavení rámu krokového motoru

Stavba rámu krokového motoru
Stavba rámu krokového motoru
Stavba rámu krokového motoru
Stavba rámu krokového motoru
Stavba rámu krokového motoru
Stavba rámu krokového motoru

Tento krok byl trochu výzvou, protože motor nebyl vyroben tak, aby dokonale odpovídal Legu. Zvládl jsem to však pomocí dvou otvorů v motoru, abych to zajistil na svém místě. Dále jsem na špičku motoru nalepil kolo Lego a pak jsem ho dal hned vedle základny na straně, kterou jsem nechal otevřenou v kroku 1.

Krok 5: Dokončení dotyků

Dokončovací doteky
Dokončovací doteky
Dokončovací doteky
Dokončovací doteky
Dokončovací doteky
Dokončovací doteky
Dokončovací doteky
Dokončovací doteky

Přidal jsem dva obloukové kusy na zakrytí kola, abych upevnil papír na místě. A přidal jsem dva menší obloukové kusy, jeden pro držení vodičů krokového motoru a druhý pro držení papíru. Nakonec jsem změnil kolečko krokového motoru na trochu větší, které posunovalo papír lépe než staré kolo.

Krok 6: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika

Nakonec musíte připojit motory k Arduinu a nahrát kód.

Začneme servomotorem, připojíme hnědý vodič (zemnící vodič) ke kolíku GND, poté červený vodič (napájecí vodič) ke kolíku 5 V a oranžový vodič (signální vodič) k Dig #5 kolík. Dále krokový motor, připojte 1N1 k Dig #11, 1N2 k Dig #10, 1N3 k Dig #9, 1N4 k Dig #8, 5V k kladné straně prkénka a zemnicí kolík k záporné straně prkénko. A nezapomeňte připojit napájecí modul k prkénku a ujistěte se, že jeho kladné a záporné strany jsou správně zarovnány s odpovídajícími stranami na prkénku. Pokud to zapomenete, obrátíte sílu svého projektu a nechcete to dělat.

Pro kód jsem napsal čtyři způsoby, jeden pro psaní tečky, jeden pro psaní pomlčky a dva pro ponechání mezery mezi každým písmenem a každým slovem. Tímto způsobem mohu tyto metody jednoduše zavolat, když je potřebuji, místo toho, abych je znovu psal pro každé písmeno. Potom jsem napsal smyčku for, která prochází každým písmenem textu a napsala ji. Do ní jsem pro každé písmeno napsal příkaz if, ale pokud chcete, můžete jej napsat do příkazu switch. Samozřejmě můžete přidat do kódu, aby program mohl číst čísla. Když je veškerá kabeláž připravena, stačí zkopírovat a vložit kód do IDE. Nezapomeňte nainstalovat knihovny krokových, servopohonů a řetězců. Poté můžete vyrazit.

Jak to funguje

Když Arduino spustí, program se podívá na první písmeno textu. V závislosti na tom, které to je, zavolá funkce, které jej zapisují do Morseovy abecedy. Když je například volána funkce tečky, servomotor je nastaven na 160, který pohybuje perem dolů, pak je nastaven zpět na 90, což umožňuje pružinám vrátit se nahoru a pohybovat perem s nimi. A pokud je volána funkce pomlčky, servo posune pero dolů, pak krokový motor otáčí kolem, které táhne papír, čímž pero napíše pomlčku. A pokud se některá z vesmírných funkcí nazývá krokový motor, otáčí se, ale perem nahoru, táhne papír a vytváří mezeru mezi písmeny nebo slovy. Když je hotovo, přejde na další písmeno a opakuje stejný postup. Doufám, že se ti to líbí;)

Kód

#zahrnout

#include #include #include const int stepsPerRevolution = 150; // Toto je proměnná pro krokový motor Řetězcová věta = "*ahoj"; // Změňte tuto proměnnou tak, aby psala různá slova, ale pište pouze malými písmeny a začněte slovo „*“Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Toto je metoda, díky které robot zapisuje tečku prázdná tečka () {Serial.println ("tečka start"); myServo.write (160); zpoždění (1000); myServo.write (90); zpoždění (1000); myStepper.step (stepsPerRevolution); zpoždění (1000); Serial.println ("tečka hotová"); } // Toto je metoda, díky které robot zapisuje pomlčku void dash () {Serial.println ("dash dash"); myServo.write (160); zpoždění (1000); myStepper.step (stepsPerRevolution); zpoždění (1000); myServo.write (90); zpoždění (1000); myStepper.step (stepsPerRevolution); zpoždění (1000); Serial.println ("pomlčka hotová"); } // Toto je metoda, díky které robot ponechá mezeru mezi jednotlivými písmeny prázdná mezera () {Serial.println ("mezera"); myServo.write (90); zpoždění (1000); myStepper.step (200); zpoždění (1000); Serial.println („místo dokončeno“); } // Toto je metoda, díky které robot ponechá větší mezeru mezi každým slovem void bigSpace () {myServo.write (90); myStepper.step (250); zpoždění (1000); } void setup () {// sem vložte instalační kód, aby se spustil jednou: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int první = věta.indexOf ('*'); // tato smyčka for prochází každým písmenem řetězce a poté zavolá správné metody, které ji zapíší (int i = 0; i <věta.length (); i ++) {if (věta.charAt (první+i) == 'a') {Serial.print (".-"); tečka(); pomlčka(); prostor(); } else if (věta.charAt (první + i) == 'b') {Serial.print ("-…"); pomlčka(); tečka(); tečka(); tečka(); prostor(); } else if (věta.charAt (první + i) == 'c') {Serial.print ("-.-."); pomlčka(); tečka(); pomlčka(); tečka(); prostor(); } else if (věta.charAt (první + i) == 'd') {Serial.print ("-.."); pomlčka(); tečka(); tečka(); prostor(); } else if (věta.charAt (první + i) == 'e') {Serial.print ("."); tečka(); prostor(); } else if (věta.charAt (první + i) == 'f') {Serial.print ("..-."); tečka(); tečka(); pomlčka(); tečka(); prostor(); } else if (věta.charAt (první + i) == 'g') {Serial.print ("-."); pomlčka(); pomlčka(); tečka(); prostor(); } else if (věta.charAt (první + i) == 'h') {Serial.print ("…."); tečka(); tečka(); tečka(); tečka(); prostor(); } else if (věta.charAt (první + i) == 'i') {Serial.print (".."); tečka(); tečka(); prostor(); } else if (věta.charAt (první + i) == 'j') {Serial.print ("---"); tečka(); pomlčka(); pomlčka(); pomlčka(); prostor(); } else if (věta.charAt (první + i) == 'k') {Serial.print ("-.-"); pomlčka(); tečka(); pomlčka(); prostor(); } else if (věta.charAt (první + i) == 'l') {Serial.print (".-.."); tečka(); pomlčka(); tečka(); tečka(); prostor(); } else if (věta.charAt (první + i) == 'm') {Serial.print ("-"); pomlčka(); pomlčka(); prostor(); } else if (věta.charAt (první + i) == 'n') {Serial.print ("-."); pomlčka(); tečka(); prostor(); } else if (věta.charAt (první + i) == 'o') {Serial.print ("---"); pomlčka(); pomlčka(); pomlčka(); prostor(); } else if (věta.charAt (první + i) == 'p') {Serial.print ("-."); tečka(); pomlčka(); pomlčka(); tečka(); prostor(); } else if (věta.charAt (první + i) == 'q') {Serial.print ("--.-"); pomlčka(); pomlčka(); tečka(); pomlčka(); prostor(); } else if (věta.charAt (první + i) == 'r') {Serial.print (".-."); tečka(); pomlčka(); tečka(); prostor(); } else if (věta.charAt (první + i) == 's') {Serial.print ("…"); tečka(); tečka(); tečka(); prostor(); } else if (věta.charAt (první + i) == 't') {Serial.print ("-"); pomlčka(); prostor(); } else if (věta.charAt (první + i) == 'u') {Serial.print ("..-"); tečka(); tečka(); pomlčka(); prostor(); } else if (věta.charAt (první + i) == 'v') {Serial.print ("…-"); tečka(); tečka(); tečka(); pomlčka(); prostor(); } else if (věta.charAt (první + i) == 'w') {Serial.print ("-"); tečka(); pomlčka(); pomlčka(); prostor(); } else if (věta.charAt (první + i) == 'x') {Serial.print ("-..-"); pomlčka(); tečka(); tečka(); pomlčka(); prostor(); } else if (věta.charAt (první + i) == 'y') {Serial.print ("-.--"); pomlčka(); tečka(); pomlčka(); pomlčka(); prostor(); } else if (věta.charAt (první + i) == 'z') {Serial.print ("-.."); pomlčka(); pomlčka(); tečka(); tečka(); prostor(); } else if (věta.charAt (první + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Nic sem nepište}

Krok 7: Odstraňování problémů

Kolo se nepohybuje

Mezi kolem a papírem může být příliš velké tření, zkuste kolo trochu nadzvednout nebo vyměnit.

Kolečko táhne papír, ale pak se stále otáčí, aniž by papír tahalo

Ujistěte se, že jste nalepili kolo ve středu krokového motoru

Tečky a čárky jsou spojeny

Zkontrolujte, zda jsou funkce tečky, pomlčky a mezery zapsány správně, měly by vypadat takto:

// Toto je metoda, díky které robot zapisuje tečku bez tečky () {Serial.println ("začátek tečky"); myServo.write (160); zpoždění (1000); myServo.write (90); zpoždění (1000); myStepper.step (stepsPerRevolution); zpoždění (1000); Serial.println ("tečka hotová"); }

// Toto je metoda, díky které robot napíše pomlčku

void dash () {Serial.println ("start dash"); myServo.write (160); zpoždění (1000); myStepper.step (stepsPerRevolution); zpoždění (1000); myServo.write (90); zpoždění (1000); myStepper.step (stepsPerRevolution); zpoždění (1000); Serial.println ("pomlčka hotová"); }

// Toto je metoda, díky které robot ponechá mezeru mezi jednotlivými písmeny

void space () {Serial.println ("start prostoru"); myServo.write (90); zpoždění (1000); myStepper.step (200); zpoždění (1000); Serial.println („místo dokončeno“); }

Doporučuje: