Kazalo:

Pisatelj Mordujeve kode Arduino: 7 korakov (s slikami)
Pisatelj Mordujeve kode Arduino: 7 korakov (s slikami)

Video: Pisatelj Mordujeve kode Arduino: 7 korakov (s slikami)

Video: Pisatelj Mordujeve kode Arduino: 7 korakov (s slikami)
Video: Вебинар "7-сегментный индикатор. Подключение к Arduino. Программирование" 2024, November
Anonim
Image
Image
Arduino pisatelj Morsejeve kode
Arduino pisatelj Morsejeve kode

Naredil sem robota, ki lahko katero koli besedilo pretvori v Morzejevo kodo in ga nato zapiše !! Narejen je iz kartona in Lega, za elektroniko pa sem uporabil Arduino in samo dva motorja.

Zaloge

Arduino Uno plošča Koračni motor Mikro servo SG90ULN2003 gonilniški modul koračnega motorja Napajalni modul Breadboard 4 × Mostične žice 6 × Ženske dupont žice 9V1A Adapter USB kabel 2 × Leseni mozniki 2 × Vzmeti iz slame Beli papir LegoSuper lepilo Pištola za vroče lepilo Elastični trak (za izdelavo držalo za pero) Rezalnik za škarje

1. korak: Gradnja baze

Gradnja baze
Gradnja baze
Gradnja baze
Gradnja baze
Gradnja baze
Gradnja baze

Začnite z gradnjo osnove. Moj je širok 4 čepa in dolg 20 čepov, potem ko sem z enim slojem izdelal eno plast s takšnimi dolžinami, sem okoli njega zgradil eno obrobo, ki je na eni strani pustila vrzel, da sem pustil prostor za koračni motor, nato sem dodal kosov ploščic na srednji del, kjer bo papirnati trak. Z uporabo Lega je bil zelo trden in enostaven za spreminjanje. Za izdelavo zvitka papirja sem izrezal trakove papirja A4 širine 1,2 cm (to širino sem izbral, ker je enake širine kot Lego kolo, ki sem ga uporabil, svoje lahko naredite večje ali manjše, odvisno od vašega kolesa) in sem zlepil njihove konce da nastane en zelo dolg trak, potem sem ga ovila okoli kolesa.

2. korak: Servo kos

Servo kos
Servo kos
Servo kos
Servo kos
Servo kos
Servo kos

Za ta korak potrebujete:

  • dva lesena moznika dolžine 4 cm
  • dve vzmeti dolgi 2 cm
  • eno slamo, razrezano na dva kosa dolžine 2 cm
  • en kos lepenke velikosti 12 x 4 cm
  • dva kosa kartona velikosti 4 x 1,5 cm
  • en kos kartona 4 cm x 2 cm

Najprej prilepite moznike na enega od 4 x 1,5 kosov, nato vstavite vzmeti in slamice v moznike, nato pa lepite drugi kartonski kos na drugi strani, da vse drži na svojem mestu.

Drugič, lepite kos 4 cm za 2 cm na slamice.

Tretjič, celoten kos obrnite in na zadnjo stran prilepite majhen moznik, ne na sredini, ampak nekoliko levo. (Pozabil sem dodati majhen moznik na prvi sliki)

Na koncu izrežite luknjo v velikem kosu kartona v velikosti sprednje strani servo motorja in prilepite motor, nato pa kos, ki smo ga pravkar naredili z mozniki, prilepite na velik kos, tako da, ko se servo premakne, potisne majhen moznik navzdol, ki posledično potisne tudi vzmeti navzdol.

Na koncu sem izrezal približno 3 cm od spodnjega dela kosa 12 cm za 4 cm in nanj prilepil še dva kosa 4 cm za 1,5 cm, nato pa to pokril s kartonom velikosti 5,5 cm x 4 cm. zanko elastičnega traku in jo prilepila na majhen kos kartona, nato pa sem jo prilepila na kos 4 cm za 2 cm, ki se bo premaknil navzdol, ko se bo servo zagnala. Ti dodatki so preprečili premikanje označevalca od strani do strani, ko se vzmeti dvignejo.

Korak 3: Dodajanje servo motorja in zvitka papirja na podlago

Dodajanje servo motorja in zvitka papirja na podlago
Dodajanje servo motorja in zvitka papirja na podlago
Dodajanje servo motorja in zvitka papirja na podlago
Dodajanje servo motorja in zvitka papirja na podlago

Na eno stran podstavka sem dodal še dve opeki za podporo servo kosa in ga prilepil na mesto, nato pa kolo dodal na skrajni konec podnožja.

4. korak: Izdelava okvirja koračnega motorja

Izdelava okvirja koračnega motorja
Izdelava okvirja koračnega motorja
Izdelava okvirja koračnega motorja
Izdelava okvirja koračnega motorja
Izdelava okvirja koračnega motorja
Izdelava okvirja koračnega motorja

Ta korak je bil nekoliko izziv, saj motor ni bil popolnoma prilagojen Lego kocki. Vendar mi je to uspelo z dvema luknjama v motorju, da sem ga pritrdil. Nato sem na konico motorja prilepil Lego kolo in ga postavil tik ob podnožje na strani, ki sem jo v 1. koraku pustil odprto.

5. korak: Zaključni dotiki

Zaključni dotiki
Zaključni dotiki
Zaključni dotiki
Zaključni dotiki
Zaključni dotiki
Zaključni dotiki
Zaključni dotiki
Zaključni dotiki

Dodal sem dva ločna kosa, ki sta pokrila kolo, da je papir pritrjen na mestu. In dodal sem dva manjša loka, enega za držanje žic koračnega motorja, drugega pa za papir. Nazadnje sem spremenil kolo koračnega motorja na nekoliko večje, ki je premaknilo papir bolje kot staro kolo.

6. korak: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika

Nazadnje morate motorje priključiti na Arduino in naložiti kodo.

Začeli bomo s servo motorjem, rjavo žico (ozemljitveno žico) priključili na pin GND, nato rdečo žico (napajalno žico) na 5V pin in oranžno žico (signalno žico) na Dig #5 pin. Nato koračni motor priključite 1N1 na Dig #11, 1N2 na Dig #10, 1N3 na Dig #9, 1N4 na Dig #8, 5V na pozitivno stran plošče in ozemljitveni zatič na negativno stran deska. Ne pozabite priključiti napajalnega modula na ploščo, pri čemer pazite, da se njene pozitivne in negativne strani pravilno poravnajo z ustreznimi stranicami na plošči. Če na to pozabite, boste v projekt obrnili moč in tega ne želite storiti.

Za kodo sem napisal štiri metode, eno za pisanje pike, eno za pisanje pomišljaja in dve za puščanje prostora med vsako črko in vsako besedo. Na ta način lahko pokličem te metode, ko jih potrebujem, namesto da jih za vsako črko ponovno napišem. Nato sem napisal zanko for, ki gre skozi vsako črko besedila, in jo zapisal. Znotraj nje sem napisal stavek if za vsako črko, vendar jo lahko po želji napišete v izjavi switch. Seveda lahko dodate kodo, da programu omogočite branje številk. Ko so vse napeljave pripravljene, samo kopirajte in prilepite kodo v svoj IDE. Ne pozabite namestiti knjižnic koračnih, servo in nizov. Po tem je dobro, da greste.

Kako deluje

Ko se Arduino zažene, program pogleda prvo črko besedila. Odvisno od tega, katero pokliče, pokliče funkcije, ki ga zapišejo v Morsejevo kodo. Na primer, ko se pokliče funkcija pike, je servo motor nastavljen na 160, ki premakne peresnik navzdol, nato pa nazaj na 90, kar omogoča, da se vzmeti vrnejo navzgor in premikajo pero s seboj. In če pokličete funkcijo pomišljaja, servo pomakne pero navzdol, nato koračni motor vrti kolo, ki potegne papir, zaradi česar pero napiše pomišljaj. In če se ena od preslednih funkcij imenuje koračni motor, se vrti, vendar s peresom navzgor, tako da potegne papir in naredi presledek med črkami ali besedami. Ko konča, gre na naslednjo črko in ponovi isti postopek. Upam, da vam je všeč;)

Koda

#vključi

#include #include #include const int stepsPerRevolution = 150; // To je spremenljivka koračnega motorja Niz stavka = "*zdravo"; // Spremenite to spremenljivko za pisanje različnih besed, vendar pišite samo z malimi črkami in začnite besedo z "*" Stepper myStepper (stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // To je metoda, zaradi katere robot napiše piko void dot () {Serial.println ("dot start"); myServo.write (160); zamuda (1000); myServo.write (90); zamuda (1000); myStepper.step (stepsPerRevolution); zamuda (1000); Serial.println ("dot done"); } // To je metoda, zaradi katere robot napiše pomišljaj void dash () {Serial.println ("dash start"); myServo.write (160); zamuda (1000); myStepper.step (stepsPerRevolution); zamuda (1000); myServo.write (90); zamuda (1000); myStepper.step (stepsPerRevolution); zamuda (1000); Serial.println ("pomišljaj končan"); } // To je metoda, zaradi katere robot pusti prostor med vsako črko void space () {Serial.println ("space start"); myServo.write (90); zamuda (1000); myStepper.step (200); zamuda (1000); Serial.println ("presledek opravljen"); } // To je metoda, zaradi katere robot pusti več prostora med vsako besedo void bigSpace () {myServo.write (90); myStepper.step (250); zamuda (1000); } void setup () {// tukaj vnesite nastavitveno kodo, ki jo je treba zagnati enkrat: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int first = stavek.indexOf ('*'); // ta zanka for gre skozi vsako črko niza in nato pokliče prave metode, da jo zapiše za (int i = 0; i <stavka.length (); i ++) {if (stavka.charAt (prva+i) == 'a') {Serial.print (".-"); pika (); pomišljaj (); presledek (); } else if (stavka.charAt (prva + i) == 'b') {Serial.print ("-…"); pomišljaj (); pika (); pika (); pika (); presledek (); } else if (stavka.charAt (prva + i) == 'c') {Serial.print ("-.-."); pomišljaj (); pika (); pomišljaj (); pika (); presledek (); } else if (stavka.charAt (prva + i) == 'd') {Serial.print ("-.."); pomišljaj (); pika (); pika (); presledek (); } else if (stavka.charAt (prva + i) == 'e') {Serial.print ("."); pika (); presledek (); } else if (stavka.charAt (prva + i) == 'f') {Serial.print ("..-."); pika (); pika (); pomišljaj (); pika (); presledek (); } else if (stavka.charAt (prva + i) == 'g') {Serial.print ("-."); pomišljaj (); pomišljaj (); pika (); presledek (); } else if (stavka.charAt (prva + i) == 'h') {Serial.print ("…."); pika (); pika (); pika (); pika (); presledek (); } else if (stavka.charAt (prva + i) == 'i') {Serial.print (".."); pika (); pika (); presledek (); } else if (stavka.charAt (prva + i) == 'j') {Serial.print (".---"); pika (); pomišljaj (); pomišljaj (); pomišljaj (); presledek (); } else if (stavka.charAt (prva + i) == 'k') {Serial.print ("-.-"); pomišljaj (); pika (); pomišljaj (); presledek (); } else if (stavka.charAt (prva + i) == 'l') {Serial.print (".-.."); pika (); pomišljaj (); pika (); pika (); presledek (); } else if (stavka.charAt (prva + i) == 'm') {Serial.print ("-"); pomišljaj (); pomišljaj (); presledek (); } else if (stavka.charAt (prva + i) == 'n') {Serial.print ("-."); pomišljaj (); pika (); presledek (); } else if (stavka.charAt (prva + i) == 'o') {Serial.print ("---"); pomišljaj (); pomišljaj (); pomišljaj (); presledek (); } else if (stavka.charAt (prva + i) == 'p') {Serial.print (".--."); pika (); pomišljaj (); pomišljaj (); pika (); presledek (); } else if (stavka.charAt (prva + i) == 'q') {Serial.print ("--.-"); pomišljaj (); pomišljaj (); pika (); pomišljaj (); presledek (); } else if (stavka.charAt (prva + i) == 'r') {Serial.print (".-."); pika (); pomišljaj (); pika (); presledek (); } else if (stavka.charAt (prva + i) == 's') {Serial.print ("…"); pika (); pika (); pika (); presledek (); } else if (stavka.charAt (prva + i) == 't') {Serial.print ("-"); pomišljaj (); presledek (); } else if (stavka.charAt (prva + i) == 'u') {Serial.print ("..-"); pika (); pika (); pomišljaj (); presledek (); } else if (stavka.charAt (prva + i) == 'v') {Serial.print ("…-"); pika (); pika (); pika (); pomišljaj (); presledek (); } else if (stavka.charAt (prva + i) == 'w') {Serial.print (".--"); pika (); pomišljaj (); pomišljaj (); presledek (); } else if (stavka.charAt (prva + i) == 'x') {Serial.print ("-..-"); pomišljaj (); pika (); pika (); pomišljaj (); presledek (); } else if (stavka.charAt (prva + i) == 'y') {Serial.print ("-.--"); pomišljaj (); pika (); pomišljaj (); pomišljaj (); presledek (); } else if (stavka.charAt (prva + i) == 'z') {Serial.print ("-.."); pomišljaj (); pomišljaj (); pika (); pika (); presledek (); } else if (stavka.charAt (prva + i) == '') {Serial.print ("/"); bigSpace (); }}} void loop () {// Ne piši ničesar tukaj}

7. korak: Odpravljanje težav

Kolo se ne premika

Med kolesom in papirjem je lahko preveč trenja, poskusite kolo nekoliko dvigniti ali ga spremeniti.

Kolo vleče papir, nato pa se še naprej vrti, ne da bi ga vleklo

Prepričajte se, da ste kolo prilepili na sredino koračnega motorja

Pike in črtice so povezane

Preverite, ali so pike, pomišljaji in preslednice pravilno napisane, naj bodo takšne:

// To je metoda, zaradi katere robot napiše dotvoid dot () {Serial.println ("dot start"); myServo.write (160); zamuda (1000); myServo.write (90); zamuda (1000); myStepper.step (stepsPerRevolution); zamuda (1000); Serial.println ("dot done"); }

// To je metoda, zaradi katere robot napiše pomišljaj

void dash () {Serial.println ("začetek črtice"); myServo.write (160); zamuda (1000); myStepper.step (stepsPerRevolution); zamuda (1000); myServo.write (90); zamuda (1000); myStepper.step (stepsPerRevolution); zamuda (1000); Serial.println ("pomišljaj končan"); }

// To je metoda, zaradi katere robot pusti presledek med vsako črko

void space () {Serial.println ("začetek presledka"); myServo.write (90); zamuda (1000); myStepper.step (200); zamuda (1000); Serial.println ("presledek opravljen"); }

Priporočena: