Inhoudsopgave:

Arduino Morse Code Writer - Ajarnpa
Arduino Morse Code Writer - Ajarnpa

Video: Arduino Morse Code Writer - Ajarnpa

Video: Arduino Morse Code Writer - Ajarnpa
Video: Arduino and Morse code 2024, Juli-
Anonim
Image
Image
Arduino Morse Code Schrijver
Arduino Morse Code Schrijver

Ik heb een robot gemaakt die elke willekeurige tekst in morsecode kan omzetten en deze vervolgens kan opschrijven!! Het is gemaakt van karton en Lego en voor de elektronica heb ik Arduino en slechts twee motoren gebruikt.

Benodigdheden

Arduino Uno board Stappenmotor Micro servo SG90ULN2003 stappenmotor driver module Voedingsmodule Breadboard4× Jumper-draden6× Female-to-Male dupont-draden9V1A AdapterUSB-kabel Karton 2× Houten pluggen 2× Springs Stro Wit papierLegoSuperlijm Heetlijmpistool Elastische band (om een pennenhouder) Schaar Cutter

Stap 1: De basis bouwen

De basis bouwen
De basis bouwen
De basis bouwen
De basis bouwen
De basis bouwen
De basis bouwen

Begin met het bouwen van de basis. De mijne is 4 noppen breed en 20 noppen lang, na het bouwen van een laag met die lengtes, bouwde ik er een een-noppen brede boarder omheen en liet aan één kant een opening over om ruimte te laten voor de stappenmotor, toen voegde ik toe tegelstukken naar het middengedeelte waar de papieren strook zal zijn. Het gebruik van Lego maakte het erg stevig en gemakkelijk aan te passen. Om de papierrol te maken, heb ik stroken A4-papier van 1,2 cm breed gesneden (ik heb deze breedte gekozen omdat het dezelfde breedte is als het Lego-wiel dat ik heb gebruikt, je kunt het jouwe groter of kleiner maken, afhankelijk van je wiel) en ik heb de uiteinden aan elkaar gelijmd om een heel lange strook te vormen, die ik om het wiel wikkelde.

Stap 2: Het servostuk

Het servostuk
Het servostuk
Het servostuk
Het servostuk
Het servostuk
Het servostuk

Voor deze stap heb je nodig:

  • twee houten deuvels van 4 cm lang
  • twee veren van 2 cm lang
  • een rietje in twee stukken gesneden van elk 2 cm lang
  • een stuk karton van 12 cm bij 4 cm
  • twee stukken karton van 4 cm bij 1,5 cm
  • een stuk karton van 4 cm bij 2 cm

Lijm eerst de pluggen op een van de 4 bij 1,5 stukjes, steek dan de veren en de rietjes in de pluggen en lijm vervolgens het andere kartonnen stuk aan de andere kant om alles op zijn plaats te houden.

Plak vervolgens het stuk van 4 cm bij 2 cm op de rietjes.

Ten derde, draai het hele stuk om en lijm een kleine plug aan de achterkant ervan, niet in het midden maar iets naar links. (Ik vergat de kleine plug toe te voegen in de eerste foto)

Snijd ten slotte een gat in het grote stuk karton ter grootte van de voorkant van de servomotor en lijm de motor erin, lijm vervolgens het stuk dat we zojuist met de pluggen op het grote stuk hebben gemaakt, zodat wanneer de servo beweegt, deze de kleine plug naar beneden die op zijn beurt ook de veren naar beneden duwt.

Uiteindelijk sneed ik ongeveer 3 cm van het onderste deel van het stuk van 12 cm bij 4 cm en lijmde er nog twee stukken van 4 cm bij 1,5 cm aan, en bedekte dat met een stuk karton van 5,5 cm bij 4 cm. En om de markering vast te houden, maakte ik een kleine lus van elastische band en plakte het op een klein stukje karton, daarna lijmde ik dat op het stuk van 4 cm bij 2 cm dat naar beneden zal bewegen wanneer de servo start. Door deze toevoegingen kon de marker niet heen en weer bewegen wanneer de veren weer omhoog komen.

Stap 3: De servomotor en de papierrol aan de basis toevoegen

De servomotor en de papierrol aan de basis toevoegen
De servomotor en de papierrol aan de basis toevoegen
De servomotor en de papierrol aan de basis toevoegen
De servomotor en de papierrol aan de basis toevoegen

Ik heb nog twee stenen aan een kant van de basis toegevoegd om het servostuk te ondersteunen en ik heb het op zijn plaats gelijmd. Daarna heb ik het wiel aan het uiteinde van de basis toegevoegd.

Stap 4: Het stappenmotorframe bouwen

Het stappenmotorframe bouwen
Het stappenmotorframe bouwen
Het stappenmotorframe bouwen
Het stappenmotorframe bouwen
Het stappenmotorframe bouwen
Het stappenmotorframe bouwen

Deze stap was een beetje een uitdaging, omdat de motor niet perfect was gemaakt om bij Lego te passen. Het is me echter gelukt door de twee gaten in de motor te gebruiken om hem op zijn plaats te houden. Vervolgens heb ik een Lego-wiel op de punt van de motor gelijmd en vervolgens heb ik het naast de basis geplaatst aan de kant die ik in stap 1 heb opengelaten.

Stap 5: Afwerking

Afwerking
Afwerking
Afwerking
Afwerking
Afwerking
Afwerking
Afwerking
Afwerking

Ik heb twee boogstukken toegevoegd om het wiel te bedekken om het papier op zijn plaats te fixeren. En ik voegde twee kleinere boogstukken toe, één om de draden van de stappenmotor vast te houden en een andere om het papier vast te houden. Ten slotte heb ik het stappenmotorwiel veranderd in een iets groter exemplaar dat het papier beter bewoog dan het oude wiel.

Stap 6: Elektronica

Elektronica
Elektronica
Elektronica
Elektronica

Ten slotte moet je de motoren op de Arduino aansluiten en de code uploaden.

We beginnen met de servomotor, verbinden de bruine draad (de aardedraad) met de GND-pin, dan de rode draad (de voedingsdraad) met de 5V-pin en de oranje draad (de signaaldraad) met de Dig #5 pin. Sluit vervolgens de stappenmotor aan op 1N1 op Dig #11, 1N2 op Dig #10, 1N3 op Dig #9, 1N4 op Dig #8, de 5V op de positieve kant van het breadboard en de aardingspin op de negatieve kant van de broodplank. En vergeet niet om de voedingsmodule op het breadboard aan te sluiten en ervoor te zorgen dat de positieve en negatieve kanten correct zijn uitgelijnd met de overeenkomstige kanten op het breadboard. Als u dit vergeet, keert u de stroom naar uw project terug en dat wilt u niet.

Voor de code heb ik vier methoden geschreven, een om een punt te schrijven, een om een streepje te schrijven en twee om ruimte te laten tussen elke letter en elk woord. Op die manier kan ik deze methoden gewoon aanroepen wanneer ik ze nodig heb in plaats van ze voor elke letter opnieuw te schrijven. Daarna heb ik een for-lus geschreven die door elke letter van de tekst gaat en deze opschrijft. Daarin heb ik een if-statement voor elke letter geschreven, maar je kunt het in een switch-statement schrijven als je dat liever hebt. Natuurlijk kunt u aan de code toevoegen om het programma cijfers te laten lezen. Als alle bedrading klaar is, kopieer en plak je de code in je IDE. Vergeet niet de stepper-, servo- en stringbibliotheken te installeren. Daarna ben je klaar om te gaan.

Hoe het werkt

Wanneer de Arduino start, kijkt het programma naar de eerste letter van de tekst, en afhankelijk van welke het is, roept het de functies aan die het in morsecode schrijven. Wanneer bijvoorbeeld de puntfunctie wordt aangeroepen, wordt de servomotor ingesteld op 160 die de pen naar beneden beweegt, en vervolgens wordt deze teruggezet naar 90, waardoor de veren weer omhoog komen en de pen ermee beweegt. En als de streepjesfunctie wordt aangeroepen, beweegt de servo de pen naar beneden, waarna de stappenmotor het wiel draait dat aan het papier trekt, waardoor de pen een streepje schrijft. En als een van de spatiefuncties wordt genoemd, draait de stappenmotor maar met de pen omhoog zodat hij aan het papier trekt en een spatie maakt tussen de letters of de woorden. Als het klaar is, gaat het naar de volgende letter en herhaalt hetzelfde proces. Ik hoop dat je het leuk vind;)

De code

#erbij betrekken

#include #include #include const int stepsPerRevolution = 150; // Dit is de variabele voor de stappenmotor. String zin = "*hello"; // Wijzig deze variabele om verschillende woorden te schrijven, maar schrijf alleen in kleine letters en begin uw woord met "*" Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11); Servo mijnServo; // Dit is de methode die ervoor zorgt dat de robot een dot void dot() schrijft { Serial.println("dot start"); mijnServo.write(160); vertraging (1000); mijnServo.write(90); vertraging (1000); myStepper.step(stepsPerRevolution); vertraging (1000); Serial.println("punt klaar"); } // Dit is de methode die ervoor zorgt dat de robot een streepje void dash() schrijft { Serial.println("dash start"); mijnServo.write(160); vertraging (1000); myStepper.step(stepsPerRevolution); vertraging (1000); mijnServo.write(90); vertraging (1000); myStepper.step(stepsPerRevolution); vertraging (1000); Serial.println("streepje klaar"); } // Dit is de methode die ervoor zorgt dat de robot een spatie laat tussen elke letter void space() { Serial.println("space start"); mijnServo.write(90); vertraging (1000); mijnStepper.step(200); vertraging (1000); Serial.println("spatie klaar"); } // Dit is de methode die ervoor zorgt dat de robot een grotere ruimte laat tussen elk woord void bigSpace() { myServo.write(90); mijnStepper.stap(250); vertraging (1000); } void setup () { // plaats hier uw setup-code om een keer uit te voeren: Serial.begin (9600); mijnStepper.setSpeed(100); mijnServo.attach(5); int eerste = zin.indexOf('*'); // deze for-lus gaat door elke letter van de string en roept vervolgens de juiste methoden aan om het op te schrijven voor (int i = 0; i <zin.length(); i++) {if (sentence.charAt(first + i) == 'a') { Serial.print(".- "); punt(); streepje(); ruimte(); } else if (zin.charAt(eerste + i) == 'b') { Serial.print("-… "); streepje(); punt(); punt(); punt(); ruimte(); } else if (zin.charAt(eerste + i) == 'c') { Serial.print("-.-. "); streepje(); punt(); streepje(); punt(); ruimte(); } else if (zin.charAt(eerste + i) == 'd') { Serial.print("-.. "); streepje(); punt(); punt(); ruimte(); } else if (zin.charAt(eerste + i) == 'e') { Serial.print(". "); punt(); ruimte(); } else if (zin.charAt(eerste + i) == 'f') { Serial.print("..-. "); punt(); punt(); streepje(); punt(); ruimte(); } else if (zin.charAt(eerste + i) == 'g') { Serial.print("--. "); streepje(); streepje(); punt(); ruimte(); } else if (zin.charAt(eerste + i) == 'h') { Serial.print("…. "); punt(); punt(); punt(); punt(); ruimte(); } else if (zin.charAt(eerste + i) == 'i') { Serial.print(.. "); punt(); punt(); ruimte(); } else if (zin.charAt(eerste + i) == 'j') { Serial.print(".--- "); punt(); streepje(); streepje(); streepje(); ruimte(); } else if (zin.charAt(eerste + i) == 'k') { Serial.print("-.- "); streepje(); punt(); streepje(); ruimte(); } else if (zin.charAt(eerste + i) == 'l') { Serial.print(".-.. "); punt(); streepje(); punt(); punt(); ruimte(); } else if (zin.charAt(eerste + i) == 'm') { Serial.print("-- "); streepje(); streepje(); ruimte(); } else if (zin.charAt(eerste + i) == 'n') { Serial.print("-. "); streepje(); punt(); ruimte(); } else if (zin.charAt(eerste + i) == 'o') { Serial.print("--- "); streepje(); streepje(); streepje(); ruimte(); } else if (zin.charAt(eerste + i) == 'p') { Serial.print(".--. "); punt(); streepje(); streepje(); punt(); ruimte(); } else if (zin.charAt(eerste + i) == 'q') { Serial.print("--.- "); streepje(); streepje(); punt(); streepje(); ruimte(); } else if (zin.charAt(eerste + i) == 'r') { Serial.print(".-. "); punt(); streepje(); punt(); ruimte(); } else if (zin.charAt(eerste + i) == 's') { Serial.print("… "); punt(); punt(); punt(); ruimte(); } else if (zin.charAt(eerste + i) == 't') { Serial.print("- "); streepje(); ruimte(); } else if (zin.charAt(eerste + i) == 'u') { Serial.print("..- "); punt(); punt(); streepje(); ruimte(); } else if (zin.charAt(eerste + i) == 'v') { Serial.print("…- "); punt(); punt(); punt(); streepje(); ruimte(); } else if (zin.charAt(eerste + i) == 'w') { Serial.print(".-- "); punt(); streepje(); streepje(); ruimte(); } else if (zin.charAt(eerste + i) == 'x') { Serial.print("-..- "); streepje(); punt(); punt(); streepje(); ruimte(); } else if (zin.charAt(eerste + i) == 'y') { Serial.print("-.-- "); streepje(); punt(); streepje(); streepje(); ruimte(); } else if (zin.charAt(eerste + i) == 'z') { Serial.print("--.. "); streepje(); streepje(); punt(); punt(); ruimte(); } else if (zin.charAt(eerste + i) == ' ') { Serial.print("/ "); grote ruimte(); } } } void loop() { // Schrijf hier niets }

Stap 7: Problemen oplossen

Het wiel beweegt niet

Er kan te veel wrijving zijn tussen het wiel en het papier, probeer het wiel een beetje hoger te zetten of te veranderen.

Het wiel trekt aan het papier, maar blijft dan draaien zonder aan het papier te trekken

Zorg ervoor dat je het wiel in het midden van de stappenmotor hebt gelijmd

De punten en streepjes zijn verbonden

Controleer of de punt-, streepjes- en spatiefuncties correct zijn geschreven, ze zouden als volgt moeten zijn:

// Dit is de methode die de robot een dotvoid dot() laat schrijven { Serial.println("dot start"); mijnServo.write(160); vertraging (1000); mijnServo.write(90); vertraging (1000); myStepper.step(stepsPerRevolution); vertraging (1000); Serial.println("punt klaar"); }

// Dit is de methode waardoor de robot een streepje schrijft

void dash() { Serial.println("dash start"); mijnServo.write(160); vertraging (1000); myStepper.step(stepsPerRevolution); vertraging (1000); mijnServo.write(90); vertraging (1000); myStepper.step(stepsPerRevolution); vertraging (1000); Serial.println("streepje klaar"); }

// Dit is de methode waardoor de robot een spatie tussen elke letter laat

void space() { Serial.println("spatie start"); mijnServo.write(90); vertraging (1000); mijnStepper.step(200); vertraging (1000); Serial.println("spatie klaar"); }

Aanbevolen: