Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Bygg basen
- Trinn 2: Servostykket
- Trinn 3: Legg servomotoren og papirrullen til basen
- Trinn 4: Bygg trinnmotorrammen
- Trinn 5: Etterbehandling
- Trinn 6: Elektronikk
- Trinn 7: Feilsøking
Video: Arduino Morse Code Writer: 7 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Jeg laget en robot som kan konvertere en gitt tekst til Morse -kode og deretter skrive den ned !! Den er laget av papp og Lego, og for elektronikken brukte jeg Arduino og bare to motorer.
Rekvisita
Arduino Uno board Trinnmotor Mikro servo SG90ULN2003 trinnmotor drivermodul Strømforsyningsmodul Brødbrett4 × Jumper-ledninger6 × Kvinne-til-mann-duponttråder9V1A AdapterUSB-kabel Kartong 2 × Trestapper 2 × Fjær Halm HvitpapirLegoSuperlim Varmlimpistol Elastisk bånd (for å lage en pennholder) Saksekutter
Trinn 1: Bygg basen
Start med å bygge basen. Min er 4 pigger bred og 20 pigger lang, etter å ha bygd et lag med de lengdene, bygde jeg en en stud bred kantlinje rundt den og etterlot et hull på den ene siden for å la plass til trinnmotoren, så la jeg til flisestykker til den midterste delen der papirstrimmelen skal være. Å bruke Lego gjorde det veldig solid og enkelt å endre. For å lage papirrullen kuttet jeg strimler av A4 -papir 1,2 cm bredt (jeg valgte denne bredden fordi den er samme bredde som Lego -hjulet jeg brukte, du kan gjøre din større eller mindre avhengig av hjulet ditt) og jeg limte endene sammen for å danne en veldig lang stripe, så viklet jeg den rundt hjulet.
Trinn 2: Servostykket
For dette trinnet trenger du:
- to treskiver 4 cm lange
- to fjærer 2 cm lange
- ett halm skåret til to stykker 2 cm lange hver
- ett stykke papp på 12 x 4 cm
- to pappstykker på 4 x 1,5 cm
- ett stykke 4 x 2 cm papp
Lim først pluggene til en av de 4 x 1,5 bitene, sett deretter inn fjærene og sugerørene i pluggene, lim deretter den andre pappstykket på den andre siden for å holde alt på plass.
For det andre limer du 4 cm x 2 cm på toppen av sugerørene.
For det tredje, snu hele stykket og lim en liten plugg på baksiden av den, ikke i midten, men litt til venstre. (Jeg glemte å legge til den lille pluggen på det første bildet)
Til slutt skjærer du et hull i det store pappstykket på størrelse med fronten på servomotoren og limer motoren inn, og limer stykket vi nettopp laget med dyvlene til det store stykket, slik at når servoen beveger seg, skyver den liten plugg ned som igjen presser fjærene ned også.
Jeg endte opp med å kutte omtrent 3 cm fra den nederste delen av det 12 cm x 4 cm stykket og limte ytterligere 4 cm x 1,5 cm stykker til det, og dekket det med et papp på 5,5 x 4 cm. Og for å holde markøren laget jeg en liten sløyfe med elastisk bånd og limte det til et lite stykke papp, så limte jeg det til 4 x 2 cm stykket som vil bevege seg nedover når servoen starter. Disse tilleggene stoppet markøren fra å bevege seg fra side til side når fjærene kommer opp igjen.
Trinn 3: Legg servomotoren og papirrullen til basen
Jeg la til ytterligere to murstein på den ene siden av basen for å støtte servostykket, og jeg limte det på plass. Så la jeg til hjulet i den andre enden av basen.
Trinn 4: Bygg trinnmotorrammen
Dette trinnet var litt av en utfordring, fordi motoren ikke var laget for å passe perfekt til Lego. Imidlertid klarte jeg å gjøre det ved å bruke de to hullene i motoren for å feste den på plass. Deretter limte jeg et Lego -hjul til spissen av motoren, og deretter la jeg det rett ved siden av basen på siden som jeg lot stå åpen i trinn 1.
Trinn 5: Etterbehandling
Jeg la til to buestykker for å dekke hjulet for å fikse papiret på plass. Og jeg la til to mindre buestykker, en for å holde ledningene til trinnmotoren og en for å holde papiret. Til slutt endret jeg trinnmotorhjulet til et litt større som flyttet papiret bedre enn det gamle hjulet.
Trinn 6: Elektronikk
Til slutt må du koble motorene til Arduino og laste opp koden.
Vi starter med servomotoren, kobler den brune ledningen (jordledningen) til GND -pinnen, deretter den røde ledningen (strømledningen) til 5V -pinnen og den oransje ledningen (signalkabelen) til Dig #5 pin. Deretter kobler trinnmotoren 1N1 til Dig #11, 1N2 til Dig #10, 1N3 til Dig #9, 1N4 til Dig #8, 5V til den positive siden av brødbrettet og bakkenålen til den negative siden av brødbrett. Og ikke glem å koble strømforsyningsmodulen til brødbrettet, og sørg for at dens positive og negative sider er riktig justert til de tilsvarende sidene på brødbrettet. Hvis du glemmer å gjøre det, vil du snu strømmen til prosjektet ditt, og du vil ikke gjøre det.
For koden skrev jeg fire metoder, en for å skrive en prikk, en for å skrive en bindestrek, og to for å la det være mellomrom mellom hver bokstav og hvert ord. På den måten kan jeg bare kalle disse metodene når jeg trenger dem i stedet for å skrive det igjen for hver bokstav. Deretter skrev jeg en for loop som går gjennom hver bokstav i teksten og skriver den, inni den skrev jeg en if -setning for hver bokstav, men du kan skrive den i en switch -setning hvis du foretrekker det. Selvfølgelig kan du legge til koden slik at programmet kan lese tall. Når alle ledningene er klare, bare kopier og lim inn koden til IDE -en din. Ikke glem å installere stepper-, servo- og strengbibliotekene. Etter det er du i gang.
Hvordan det fungerer
Når Arduino starter, ser programmet på den første bokstaven i teksten., Og avhengig av hvilken den er, kaller den funksjonene som skriver den i morsekode. For eksempel når prikkfunksjonen kalles, er servomotoren satt til 160 som flytter pennen ned, deretter settes den tilbake til 90 som lar fjærene komme opp igjen og bevege pennen med dem. Og hvis dash -funksjonen kalles, flytter servoen pennen ned, så roterer trinnmotoren hjulet som trekker papiret og får pennen til å skrive en strek. Og hvis en av mellomfunksjonene kalles trinnmotoren roterer, men med pennen opp, slik at den trekker papiret og lager et mellomrom mellom bokstavene eller ordene. Når det er gjort, går det til neste bokstav og gjentar den samme prosessen. Jeg håper du liker det;)
Koden
#inkludere
#include #include #include const int stepsPerRevolution = 150; // Dette er variabelen for stepper motor String setning = "*hei"; // Endre denne variabelen for å skrive forskjellige ord, men bare skriv med små bokstaver og start ordet ditt med "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Dette er metoden som får roboten til å skrive en prikk tomrom prikk () {Serial.println ("prikk start"); myServo.write (160); forsinkelse (1000); myServo.write (90); forsinkelse (1000); myStepper.step (stepsPerRevolution); forsinkelse (1000); Serial.println ("prikk ferdig"); } // Dette er metoden som får roboten til å skrive et bindestrek -tomrom () {Serial.println ("dash -start"); myServo.write (160); forsinkelse (1000); myStepper.step (stepsPerRevolution); forsinkelse (1000); myServo.write (90); forsinkelse (1000); myStepper.step (stepsPerRevolution); forsinkelse (1000); Serial.println ("dash done"); } // Dette er metoden som gjør at roboten etterlater et mellomrom mellom hver bokstav tomrom () {Serial.println ("mellomromstart"); myServo.write (90); forsinkelse (1000); myStepper.step (200); forsinkelse (1000); Serial.println ("plass gjort"); } // Dette er metoden som gjør at roboten etterlater et større mellomrom mellom hvert ord void bigSpace () {myServo.write (90); myStepper.step (250); forsinkelse (1000); } ugyldig oppsett () {// legg oppsettskoden her for å kjøre en gang: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int først = setning.indexOf ('*'); // denne for løkken går gjennom hver bokstav i strengen og kaller deretter de riktige metodene for å skrive den ned for (int i = 0; i <setning.lengde (); i ++) {if (setning.charAt (første+i) == 'a') {Serial.print (".-"); punktum(); bindestrek(); rom(); } annet hvis (setning.charAt (første + i) == 'b') {Serial.print ("-…"); bindestrek(); punktum(); punktum(); punktum(); rom(); } annet hvis (setning.charAt (første + i) == 'c') {Serial.print ("-.-."); bindestrek(); punktum(); bindestrek(); punktum(); rom(); } annet hvis (setning.charAt (første + i) == 'd') {Serial.print ("-.."); bindestrek(); punktum(); punktum(); rom(); } annet hvis (setning.charAt (første + i) == 'e') {Serial.print ("."); punktum(); rom(); } annet hvis (setning.charAt (første + i) == 'f') {Serial.print ("..-."); punktum(); punktum(); bindestrek(); punktum(); rom(); } annet hvis (setning.charAt (første + i) == 'g') {Serial.print ("-."); bindestrek(); bindestrek(); punktum(); rom(); } annet hvis (setning.charAt (første + i) == 'h') {Serial.print ("…"); punktum(); punktum(); punktum(); punktum(); rom(); } annet hvis (setning.charAt (første + i) == 'i') {Serial.print (".."); punktum(); punktum(); rom(); } annet hvis (setning.charAt (første + i) == 'j') {Serial.print (".---"); punktum(); bindestrek(); bindestrek(); bindestrek(); rom(); } annet hvis (setning.charAt (første + i) == 'k') {Serial.print ("-.-"); bindestrek(); punktum(); bindestrek(); rom(); } annet hvis (setning.charAt (første + i) == 'l') {Serial.print (".-.."); punktum(); bindestrek(); punktum(); punktum(); rom(); } annet hvis (setning.charAt (første + i) == 'm') {Serial.print ("-"); bindestrek(); bindestrek(); rom(); } annet hvis (setning.charAt (første + i) == 'n') {Serial.print ("-."); bindestrek(); punktum(); rom(); } annet hvis (setning.charAt (første + i) == 'o') {Serial.print ("---"); bindestrek(); bindestrek(); bindestrek(); rom(); } annet hvis (setning.charAt (første + i) == 'p') {Serial.print (".--."); punktum(); bindestrek(); bindestrek(); punktum(); rom(); } annet hvis (setning.charAt (første + i) == 'q') {Serial.print ("--.-"); bindestrek(); bindestrek(); punktum(); bindestrek(); rom(); } annet hvis (setning.charAt (første + i) == 'r') {Serial.print (".-."); punktum(); bindestrek(); punktum(); rom(); } annet hvis (setning.charAt (første + i) == 's') {Serial.print ("…"); punktum(); punktum(); punktum(); rom(); } annet hvis (setning.charAt (første + i) == 't') {Serial.print ("-"); bindestrek(); rom(); } annet hvis (setning.charAt (første + i) == 'u') {Serial.print ("..-"); punktum(); punktum(); bindestrek(); rom(); } annet hvis (setning.charAt (første + i) == 'v') {Serial.print ("…-"); punktum(); punktum(); punktum(); bindestrek(); rom(); } annet hvis (setning.charAt (første + i) == 'w') {Serial.print (".--"); punktum(); bindestrek(); bindestrek(); rom(); } annet hvis (setning.charAt (første + i) == 'x') {Serial.print ("-..-"); bindestrek(); punktum(); punktum(); bindestrek(); rom(); } annet hvis (setning.charAt (første + i) == 'y') {Serial.print ("-.--"); bindestrek(); punktum(); bindestrek(); bindestrek(); rom(); } annet hvis (setning.charAt (første + i) == 'z') {Serial.print ("-.."); bindestrek(); bindestrek(); punktum(); punktum(); rom(); } annet hvis (setning.charAt (første + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Ikke skriv noe her}
Trinn 7: Feilsøking
Hjulet beveger seg ikke
Det kan være for mye friksjon mellom hjulet og papiret. Prøv å heve hjulet litt eller bytt det.
Hjulet trekker i papiret, men så fortsetter det å rotere uten å trekke i papiret
Sørg for at du har limt hjulet i midten av trinnmotoren
Prikkene og bindestrekene er koblet sammen
Sjekk om prikk-, bindestrek- og mellomromfunksjonene er skrevet riktig, de skal være slik:
// Dette er metoden som får roboten til å skrive en dotvoid prikk () {Serial.println ("prikk start"); myServo.write (160); forsinkelse (1000); myServo.write (90); forsinkelse (1000); myStepper.step (stepsPerRevolution); forsinkelse (1000); Serial.println ("prikk ferdig"); }
// Dette er metoden som får roboten til å skrive en strek
void dash () {Serial.println ("dash start"); myServo.write (160); forsinkelse (1000); myStepper.step (stepsPerRevolution); forsinkelse (1000); myServo.write (90); forsinkelse (1000); myStepper.step (stepsPerRevolution); forsinkelse (1000); Serial.println ("dash done"); }
// Dette er metoden som gjør at roboten etterlater et mellomrom mellom hver bokstav
void space () {Serial.println ("space start"); myServo.write (90); forsinkelse (1000); myStepper.step (200); forsinkelse (1000); Serial.println ("plass gjort"); }
Anbefalt:
Morse Code Station: 3 trinn
Morse Code Station: Dit-dit-dah-dah! Lær Morse Code med dette enkle Arduino Uno -prosjektet. Dette enkle Arduino -prosjektet er en Morse Code -stasjon. Morsekode er en kommunikasjonsmetode som koder tegn som en serie prikker og bindestreker. Denne kretsen bruker en piezo -summer til
LabDroid: Morse Code Encoder/Decoder: 4 trinn
LabDroid: Morse Code Encoder/Decoder: Merk: Denne instruksjonen kan ikke realiseres 1: 1 i den nyeste versjonen av LabDroid. Jeg oppdaterer det snart. Dette prosjektet viser deg hva du kan gjøre med LabDroid. Siden en Hello World normalt er laget basert på tekst, lys eller lyd, tenkte jeg på LabDr
USB Arduino Morse Code Key: 6 trinn
USB Arduino Morse Code Key: Har du noen gang ønsket å skrive på en datamaskin med en morse -nøkkel eller å lære/lære morse -kode? Du er på riktig side! For mine andre prosjekter, sjekk ut nettstedet mitt calvin.sh
Arduino Morse Code -sender: 11 trinn
Arduino Morse Code Transmitter: I denne instruksen vil du bruke en Arduino Uno til å lage en Morse Code transmitter, og bruke den serielle monitoren til å lese meldingene du har sendt. Deler du trenger: Arduino UnoBreadboardBuzzerButtons Jumperwires
Morse Code Touch Keyer/Autocoder: 12 trinn (med bilder)
Morse Code Touch Keyer/Autocoder: Jeg bygde faktisk dette prosjektet for en tid siden, men tenkte at noen kanskje kunne bruke ideen. Jeg er en skinkeradio og kom inn i det litt sent i livet da jeg ble pensjonist og hadde tid. Jeg har min generelle lisens nå og bruker telefon (vo