Spisu treści:

Arduino Morse Code Writer: 7 kroków (ze zdjęciami)
Arduino Morse Code Writer: 7 kroków (ze zdjęciami)

Wideo: Arduino Morse Code Writer: 7 kroków (ze zdjęciami)

Wideo: Arduino Morse Code Writer: 7 kroków (ze zdjęciami)
Wideo: Arduino pierwsze kroki Lampka kod morse'a |Bez pomysłu 2024, Grudzień
Anonim
Image
Image
Pisarz alfabetu Morse'a dla Arduino
Pisarz alfabetu Morse'a dla Arduino

Stworzyłem robota, który potrafi przekonwertować dowolny tekst na kod Morse'a, a następnie go zapisać! Jest zrobiony z tektury i klocków Lego, a do elektroniki użyłem Arduino i tylko dwóch silników.

Kieszonkowe dzieci

Płytka Arduino Uno Silnik krokowy Mikro serwo SG90ULN2003 Moduł sterownika silnika krokowego Moduł zasilania Płytka stykowa 4× Przewody połączeniowe 6× Przewody dupont żeńsko-męskie Adapter 9V1AKabel USB Karton 2× Kołki drewniane 2× Sprężyny Słoma Biały papierLegoSuper klej Pistolet do klejenia na gorąco Elastyczna opaska (do wykonania uchwyt na długopis) Nożyczki Cutter

Krok 1: Budowanie bazy

Budowa bazy
Budowa bazy
Budowa bazy
Budowa bazy
Budowa bazy
Budowa bazy

Zacznij od zbudowania podstawy. Mój ma 4 sztyfty i 20 sztyftów długi, po zbudowaniu jednej warstwy o tych długościach zbudowałem wokół niej obrzeże o szerokości jednego sztyftu, pozostawiając lukę z jednej strony, aby zostawić miejsce na silnik krokowy, a następnie dodałem kawałki płytek do środkowej części, w której będzie pasek papieru. Korzystanie z Lego sprawiło, że jest bardzo wytrzymały i łatwy do modyfikacji. Aby zrobić rolkę papieru, wycinam paski papieru A4 o szerokości 1,2cm (wybrałem tę szerokość, ponieważ jest taka sama jak koło Lego, którego użyłem, możesz powiększyć lub zmniejszyć w zależności od koła) i skleiłem ich końce razem aby uformować jeden bardzo długi pasek, a następnie owinąłem go wokół koła.

Krok 2: Kawałek serwa

Kawałek serwa
Kawałek serwa
Kawałek serwa
Kawałek serwa
Kawałek serwa
Kawałek serwa

Do tego kroku potrzebujesz:

  • dwa drewniane kołki o długości 4cm
  • dwie sprężyny o długości 2cm
  • jedna słomka pocięta na dwa kawałki o długości 2 cm każda
  • jeden kawałek tektury o wymiarach 12 cm na 4 cm;
  • dwa kawałki tektury 4 cm na 1,5 cm
  • jeden kawałek tektury 4 cm na 2 cm

Najpierw przyklej kołki do jednego z 4 x 1,5 kawałków, następnie włóż sprężyny i słomki do kołków, a następnie przyklej drugi kawałek kartonu po drugiej stronie, aby utrzymać wszystko na swoim miejscu.

Po drugie, przyklej kawałek 4 cm na 2 cm na wierzchu słomek.

Po trzecie, odwróć cały kawałek i przyklej mały kołek z tyłu, nie pośrodku, ale nieco w lewo. (zapomniałem dodać mały kołek na pierwszym zdjęciu)

Na koniec wytnij otwór w dużym kawałku kartonu wielkości przodu silnika serwo i wklej go, a następnie przyklej kawałek, który właśnie zrobiliśmy za pomocą kołków do dużego kawałka, aby serwo poruszało się, popychało mały kołek w dół, który z kolei popycha również sprężyny.

Skończyło się na odcięciu około 3cm od dolnej części kawałka o wymiarach 12cm na 4cm i przyklejeniu do niego jeszcze dwóch kawałków o wymiarach 4cm na 1,5cm, a następnie przykryłem kawałkiem kartonu o wymiarach 5,5cm na 4cm. A do trzymania markera zrobiłem mały pętlę gumki i przykleiłem do małego kawałka tektury, następnie przykleiłem to do kawałka 4cm na 2cm, który będzie przesuwał się w dół, gdy serwo wystartuje. Te dodatki powstrzymały znacznik przed przesuwaniem się z boku na bok, gdy sprężyny wracają do góry.

Krok 3: Dodawanie serwomotoru i rolki papieru do podstawy

Dodawanie serwomotoru i rolki papieru do podstawy
Dodawanie serwomotoru i rolki papieru do podstawy
Dodawanie serwomotoru i rolki papieru do podstawy
Dodawanie serwomotoru i rolki papieru do podstawy

Dodałem jeszcze dwa klocki z jednej strony podstawy, aby podeprzeć element serwa i przykleiłem go na miejscu. Następnie dodałem koło na drugim końcu podstawy.

Krok 4: Budowanie ramy silnika krokowego

Budowanie ramy silnika krokowego
Budowanie ramy silnika krokowego
Budowanie ramy silnika krokowego
Budowanie ramy silnika krokowego
Budowanie ramy silnika krokowego
Budowanie ramy silnika krokowego

Ten krok był nie lada wyzwaniem, ponieważ silnik nie był idealnie dopasowany do klocków Lego. Udało mi się jednak to zrobić, używając dwóch otworów w silniku, aby zabezpieczyć go na miejscu. Następnie przykleiłem koło Lego do końcówki silnika, a następnie położyłem je tuż przy podstawie po stronie, którą pozostawiłem otwartą w kroku 1.

Krok 5: Wykończenie akcentów

Ostatnie poprawki
Ostatnie poprawki
Ostatnie poprawki
Ostatnie poprawki
Ostatnie poprawki
Ostatnie poprawki
Ostatnie poprawki
Ostatnie poprawki

Dodałem dwa kawałki łuku, aby zakryć koło, aby zamocować papier na miejscu. I dodałem dwa mniejsze kawałki łuku, jeden do trzymania przewodów silnika krokowego, a drugi do trzymania papieru. Na koniec zmieniłem koło silnika krokowego na nieco większe, które przesuwało papier lepiej niż stare koło.

Krok 6: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika

Na koniec musisz podłączyć silniki do Arduino i wgrać kod.

Zaczniemy od serwosilnika, podłącz brązowy przewód (przewód uziemienia) do pinu GND, następnie czerwony przewód (przewód zasilania) do pinu 5V, a pomarańczowy przewód (przewód sygnałowy) do Dig #5 Szpilka. Następnie silnik krokowy podłącz 1N1 do gniazda #11, 1N2 do gniazda #10, 1N3 do gniazda #9, 1N4 do gniazda #8, 5V do dodatniej strony płytki stykowej, a pin uziemienia do ujemnej strony deska do krojenia chleba. I nie zapomnij podłączyć modułu zasilacza do płytki stykowej, upewniając się, że jego dodatnie i ujemne strony są prawidłowo wyrównane z odpowiednimi bokami płytki stykowej. Jeśli zapomnisz o tym, odwrócisz moc swojego projektu, a nie chcesz tego robić.

W przypadku kodu napisałem cztery metody, jedną do pisania kropki, jedną do pisania myślnika i dwie do pozostawienia odstępu między każdą literą a każdym słowem. W ten sposób mogę po prostu wywoływać te metody, gdy ich potrzebuję, zamiast pisać je ponownie dla każdej litery. Następnie napisałem pętlę for, która przechodzi przez każdą literę tekstu i zapisuje ją. Wewnątrz napisałem instrukcję if dla każdej litery, ale jeśli wolisz, możesz napisać ją w instrukcji switch. Oczywiście możesz dodać do kodu, aby umożliwić programowi odczytywanie liczb. Kiedy całe okablowanie jest gotowe, po prostu skopiuj i wklej kod do swojego IDE. Nie zapomnij zainstalować bibliotek krokowych, serwo i stringów. Potem możesz już iść.

Jak to działa

Po uruchomieniu Arduino program patrzy na pierwszą literę tekstu i w zależności od tego, która to jest, wywołuje funkcje, które zapisują go alfabetem Morse'a. Na przykład, gdy wywołana jest funkcja kropki, serwomotor jest ustawiony na 160, co przesuwa pióro w dół, a następnie jest ustawiany z powrotem na 90, co pozwala sprężynom wrócić do góry, przesuwając pióro razem z nimi. A jeśli wywołana zostanie funkcja kreski, serwo przesuwa pióro w dół, a następnie silnik krokowy obraca koło, które ciągnie papier, co powoduje, że pióro pisze kreskę. A jeśli jedna z funkcji spacji jest nazywana, silnik krokowy obraca się, ale z piórem do góry, tak że ciągnie papier, tworząc odstęp między literami lub słowami. Po zakończeniu przechodzi do następnej litery i powtarza ten sam proces. Mam nadzieję, że to lubisz;)

Kod

#włączać

#include #include #include const int stepsPerRevolution = 150; // To jest zmienna silnika krokowego String sentencja = "*hello"; //Zmień tę zmienną, aby pisać różne słowa, ale pisz tylko małymi literami i rozpoczynaj słowo od "*" Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11); Serwo myServo; // To jest metoda, która powoduje, że robot zapisuje kropkę void dot() { Serial.println("dot start"); mojeSerwo.zapis(160); opóźnienie (1000); mojeSerwo.write(90); opóźnienie (1000); myStepper.step(krokiNaRewolucję); opóźnienie (1000); Serial.println("kropka zrobione"); } // To jest metoda, która powoduje, że robot zapisuje myślnik void dash() { Serial.println("rozpoczęcie myślnika"); mojeSerwo.zapis(160); opóźnienie (1000); myStepper.step(krokiNaRewolucję); opóźnienie (1000); mojeSerwo.write(90); opóźnienie (1000); myStepper.step(krokiNaRewolucję); opóźnienie (1000); Serial.println("kreska gotowe"); } // To jest metoda, która powoduje, że robot zostawia spację między każdą literą void space() { Serial.println("spacja start"); mojeSerwo.write(90); opóźnienie (1000); mójStepper.krok(200); opóźnienie (1000); Serial.println("zakończono spację"); } // Jest to metoda, która powoduje, że robot zostawia większą spację między każdym słowem void bigSpace() { myServo.write(90); mójKrok.krok(250); opóźnienie (1000); } void setup() { // wstaw tutaj swój kod konfiguracyjny do jednorazowego uruchomienia: Serial.begin(9600); mójStepper.setSpeed(100); mojeSerwo.attach(5); int first = zdanie.indexOf('*'); // ta pętla for przechodzi przez każdą literę ciągu, a następnie wywołuje odpowiednie metody do jej zapisania for (int i = 0; i < sentencja.length(); i++) { if (sentence.charAt(first + i) == 'a') { Serial.print(".- "); kropka(); kropla(); przestrzeń(); } else if (sentence.charAt(first + i) == 'b') { Serial.print("-… "); kropla(); kropka(); kropka(); kropka(); przestrzeń(); } else if (sentence.charAt(first + i) == 'c') { Serial.print("-.-. "); kropla(); kropka(); kropla(); kropka(); przestrzeń(); } else if (zdanie.charAt(first + i) == 'd') { Serial.print("-.. "); kropla(); kropka(); kropka(); przestrzeń(); } else if (sentence.charAt(first + i) == 'e') { Serial.print(". "); kropka(); przestrzeń(); } else if (zdanie.charAt(first + i) == 'f') { Serial.print("..-. "); kropka(); kropka(); kropla(); kropka(); przestrzeń(); } else if (sentence.charAt(first + i) == 'g') { Serial.print("--. "); kropla(); kropla(); kropka(); przestrzeń(); } else if (sentence.charAt(first + i) == 'h') { Serial.print("…. "); kropka(); kropka(); kropka(); kropka(); przestrzeń(); } else if (sentence.charAt(first + i) == 'i') { Serial.print(".. "); kropka(); kropka(); przestrzeń(); } else if (sentence.charAt(first + i) == 'j') { Serial.print(".--- "); kropka(); kropla(); kropla(); kropla(); przestrzeń(); } else if (zdanie.charAt(first + i) == 'k') { Serial.print("-.-"); kropla(); kropka(); kropla(); przestrzeń(); } else if (sentence.charAt(first + i) == 'l') { Serial.print(".-.. "); kropka(); kropla(); kropka(); kropka(); przestrzeń(); } else if (sentence.charAt(first + i) == 'm') { Serial.print("--"); kropla(); kropla(); przestrzeń(); } else if (sentence.charAt(first + i) == 'n') { Serial.print("-. "); kropla(); kropka(); przestrzeń(); } else if (sentence.charAt(first + i) == 'o') { Serial.print("---"); kropla(); kropla(); kropla(); przestrzeń(); } else if (sentence.charAt(first + i) == 'p') { Serial.print(".--. "); kropka(); kropla(); kropla(); kropka(); przestrzeń(); } else if (sentence.charAt(first + i) == 'q') { Serial.print("--.-"); kropla(); kropla(); kropka(); kropla(); przestrzeń(); } else if (zdanie.charAt(first + i) == 'r') { Serial.print(".-. "); kropka(); kropla(); kropka(); przestrzeń(); } else if (sentence.charAt(first + i) == 's') { Serial.print("…"); kropka(); kropka(); kropka(); przestrzeń(); } else if (sentence.charAt(first + i) == 't') { Serial.print("-"); kropla(); przestrzeń(); } else if (sentence.charAt(first + i) == 'u') { Serial.print("..- "); kropka(); kropka(); kropla(); przestrzeń(); } else if (sentence.charAt(first + i) == 'v') { Serial.print("…-"); kropka(); kropka(); kropka(); kropla(); przestrzeń(); } else if (sentence.charAt(first + i) == 'w') { Serial.print(".-- "); kropka(); kropla(); kropla(); przestrzeń(); } else if (sentence.charAt(first + i) == 'x') { Serial.print("-..-"); kropla(); kropka(); kropka(); kropla(); przestrzeń(); } else if (sentence.charAt(first + i) == 'y') { Serial.print("-.--"); kropla(); kropka(); kropla(); kropla(); przestrzeń(); } else if (sentence.charAt(first + i) == 'z') { Serial.print("--.. "); kropla(); kropla(); kropka(); kropka(); przestrzeń(); } else if (sentence.charAt(first + i) == ' ') { Serial.print("/ "); duża przestrzeń(); } } } void loop() { //Nic tu nie pisz }

Krok 7: Rozwiązywanie problemów

Koło się nie porusza

Może wystąpić zbyt duże tarcie między kołem a papierem, spróbuj nieco unieść koło lub je zmienić.

Kółko ciągnie papier, ale potem obraca się bez ciągnięcia papieru

Upewnij się, że przykleiłeś koło w środku silnika krokowego

Kropki i kreski są połączone

Sprawdź, czy funkcje kropki, myślnika i spacji są napisane poprawnie, powinny wyglądać tak:

// To jest metoda, która powoduje, że robot zapisuje kropkę kropkową() { Serial.println("dot start"); mojeSerwo.zapis(160); opóźnienie (1000); mojeSerwo.write(90); opóźnienie (1000); myStepper.step(kroki na rewolucję); opóźnienie (1000); Serial.println("kropka zrobione"); }

// To jest metoda, dzięki której robot pisze myślnik

void kreska() { Serial.println("początek myślnika"); mojeSerwo.zapis(160); opóźnienie (1000); myStepper.step(kroki na rewolucję); opóźnienie (1000); mojeSerwo.write(90); opóźnienie (1000); myStepper.step(kroki na rewolucję); opóźnienie (1000); Serial.println("kreska gotowe"); }

// To jest metoda, która sprawia, że robot zostawia spację między każdą literą

void space() { Serial.println("spacja start"); mojeSerwo.write(90); opóźnienie (1000); mójStepper.krok(200); opóźnienie (1000); Serial.println("zakończono spację"); }

Zalecana: