Daftar Isi:

Penulis Kode Morse Arduino: 7 Langkah (dengan Gambar)
Penulis Kode Morse Arduino: 7 Langkah (dengan Gambar)

Video: Penulis Kode Morse Arduino: 7 Langkah (dengan Gambar)

Video: Penulis Kode Morse Arduino: 7 Langkah (dengan Gambar)
Video: Lesson 6 - Active Buzzer and Morse Code Translator 2024, November
Anonim
Image
Image
Penulis Kode Morse Arduino
Penulis Kode Morse Arduino

Saya membuat robot yang dapat mengubah teks apa pun menjadi kode Morse dan kemudian menuliskannya!! Itu terbuat dari karton dan Lego dan untuk elektronik saya menggunakan Arduino dan hanya dua motor.

Perlengkapan

Papan Arduino Uno Motor stepper Micro servo SG90ULN2003 modul driver motor stepper Modul catu daya Papan tempat memotong roti4× Kabel jumper6× Kabel dupont perempuan-ke-Laki-laki9V1A AdaptorKabel USB Karton 2× Pena kayu 2× Pegas Sedotan Kertas putihLego Lem super Pistol lem panas Pita elastis (untuk membuat tempat pena) Pemotong Gunting

Langkah 1: Membangun Basis

Membangun Basis
Membangun Basis
Membangun Basis
Membangun Basis
Membangun Basis
Membangun Basis

Mulailah dengan membangun alasnya. Milik saya lebarnya 4 stud dan panjangnya 20 stud, setelah membangun satu lapis dengan panjang tersebut, saya membangun boarder lebar satu stud di sekelilingnya meninggalkan celah di satu sisi untuk menyisakan ruang bagi motor stepper, lalu saya menambahkan potongan ubin ke bagian tengah di mana strip kertas akan berada. Menggunakan Lego membuatnya sangat kokoh dan mudah dimodifikasi. Untuk membuat gulungan kertas, saya memotong kertas A4 dengan lebar 1,2cm (saya memilih lebar ini karena lebarnya sama dengan roda Lego yang saya gunakan, Anda dapat membuat Anda lebih besar atau lebih kecil tergantung pada roda Anda) dan saya merekatkan ujungnya menjadi satu. untuk membentuk satu strip yang sangat panjang, lalu saya melilitkannya di sekitar roda.

Langkah 2: Bagian Servo

Bagian Servo
Bagian Servo
Bagian Servo
Bagian Servo
Bagian Servo
Bagian Servo

Untuk langkah ini Anda perlu:

  • dua pasak kayu panjang 4cm
  • dua pegas dengan panjang 2 cm
  • satu sedotan dipotong menjadi dua bagian dengan panjang masing-masing 2 cm
  • satu karton berukuran 12cm kali 4cm
  • dua potong karton berukuran 4cm kali 1,5cm
  • satu karton berukuran 4cm kali 2cm

Pertama, rekatkan pasak ke salah satu dari potongan 4 kali 1,5, lalu masukkan pegas dan sedotan ke pasak, lalu rekatkan potongan karton lainnya di sisi lain untuk menahan semuanya pada tempatnya.

Kedua, rekatkan potongan 4cm kali 2cm di atas sedotan.

Ketiga, balikkan seluruh bagian dan rekatkan pasak kecil di bagian belakangnya, bukan di tengah tetapi sedikit ke kiri. (Saya lupa menambahkan dowel kecil di gambar pertama)

Terakhir, buat lubang di karton besar seukuran depan motor servo dan rekatkan motornya, lalu rekatkan potongan yang baru saja kita buat dengan pasak ke potongan besar sehingga ketika servo bergerak, mendorong pasak kecil ke bawah yang pada gilirannya mendorong pegas ke bawah juga.

Saya akhirnya memotong sekitar 3cm dari bagian bawah potongan 12cm kali 4cm dan menempelkan dua potongan lagi berukuran 4cm kali 1,5cm, lalu menutupinya dengan selembar karton 5,5cm kali 4cm. Dan untuk memegang spidol saya membuat kecil lingkaran karet gelang dan menempelkannya ke selembar karton kecil lalu saya menempelkannya ke potongan 4cm kali 2cm yang akan bergerak ke bawah ketika servo dimulai. Penambahan ini menghentikan penanda dari bergerak dari sisi ke sisi ketika pegas muncul kembali.

Langkah 3: Menambahkan Motor Servo dan Gulungan Kertas ke Basis

Menambahkan Motor Servo dan Gulungan Kertas ke Basis
Menambahkan Motor Servo dan Gulungan Kertas ke Basis
Menambahkan Motor Servo dan Gulungan Kertas ke Basis
Menambahkan Motor Servo dan Gulungan Kertas ke Basis

Saya menambahkan dua batu bata lagi ke satu sisi alas untuk menopang bagian servo dan saya menempelkannya di tempatnya. Kemudian saya menambahkan roda ke ujung alas yang jauh.

Langkah 4: Membangun Rangka Motor Stepper

Membangun Rangka Motor Stepper
Membangun Rangka Motor Stepper
Membangun Rangka Motor Stepper
Membangun Rangka Motor Stepper
Membangun Rangka Motor Stepper
Membangun Rangka Motor Stepper

Langkah ini sedikit menantang, karena motornya tidak dibuat pas dengan Lego secara sempurna. Namun, saya berhasil melakukannya dengan menggunakan dua lubang di motor untuk mengamankannya pada tempatnya. Selanjutnya saya menempelkan roda Lego ke ujung motor dan kemudian saya letakkan tepat di samping alas pada sisi yang saya biarkan terbuka pada langkah 1.

Langkah 5: Sentuhan Akhir

Sentuhan Akhir
Sentuhan Akhir
Sentuhan Akhir
Sentuhan Akhir
Sentuhan Akhir
Sentuhan Akhir
Sentuhan Akhir
Sentuhan Akhir

Saya menambahkan dua potongan busur untuk menutupi roda untuk memperbaiki kertas di tempatnya. Dan saya menambahkan dua potongan busur yang lebih kecil satu untuk menahan kabel motor stepper dan satu lagi untuk menahan kertas. Terakhir, saya mengubah roda motor stepper menjadi sedikit lebih besar yang menggerakkan kertas lebih baik daripada roda lama.

Langkah 6: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik

Terakhir, Anda harus menghubungkan motor ke Arduino dan mengunggah kodenya.

Kita akan mulai dengan motor servo, sambungkan kabel coklat (kabel ground) ke pin GND, lalu kabel merah (kabel power) ke pin 5V, dan kabel oranye (kabel sinyal) ke Dig #5 pin. Selanjutnya, motor stepper, sambungkan 1N1 ke Dig #11, 1N2 ke Dig #10, 1N3 ke Dig #9, 1N4 ke Dig #8, 5V ke sisi positif papan tempat memotong roti dan pin ground ke sisi negatif papan tempat memotong roti papan tempat memotong roti. Dan jangan lupa untuk menghubungkan modul catu daya ke papan tempat memotong roti untuk memastikan bahwa sisi positif dan negatifnya sejajar dengan benar ke sisi yang sesuai pada papan tempat memotong roti. Jika Anda lupa melakukannya, Anda akan membalikkan kekuatan ke proyek Anda, dan Anda tidak ingin melakukannya.

Untuk kodenya, saya menulis empat metode, satu untuk menulis titik, satu untuk menulis tanda hubung, dan dua untuk meninggalkan spasi di antara setiap huruf dan setiap kata. Dengan begitu, saya bisa memanggil metode ini saat saya membutuhkannya alih-alih menulisnya lagi untuk setiap huruf. Kemudian saya menulis loop for yang melewati setiap huruf dari teks dan menulisnya, Di dalamnya, saya menulis pernyataan if untuk setiap huruf tetapi Anda dapat menulisnya dalam pernyataan switch jika Anda mau. Tentu saja Anda dapat menambahkan kode untuk mengaktifkan program membaca angka. Ketika semua kabel sudah siap, cukup salin dan tempel kode ke IDE Anda. Jangan lupa untuk menginstal perpustakaan stepper, servo, dan string. Setelah itu, Anda baik untuk pergi.

Bagaimana itu bekerja

Ketika Arduino memulai program melihat huruf pertama dari teks, dan tergantung pada yang mana, ia memanggil fungsi yang menulisnya dalam kode Morse. Misalnya, ketika fungsi titik dipanggil, motor servo diatur ke 160 yang menggerakkan pena ke bawah, kemudian diatur kembali ke 90 yang memungkinkan pegas naik kembali dengan menggerakkan pena. Dan jika fungsi dasbor dipanggil, servo menggerakkan pena ke bawah, kemudian motor stepper memutar roda yang menarik kertas membuat pena menulis tanda hubung. Dan jika salah satu fungsi spasi disebut motor stepper berputar tetapi dengan pena ke atas sehingga menarik kertas membuat spasi antara huruf atau kata. Setelah selesai, ia pergi ke huruf berikutnya dan mengulangi proses yang sama. Saya harap Anda menyukainya;)

Kode

#termasuk

#include #include #include const int langkahPerRevolution = 150; // Ini adalah variabel untuk motor stepper String kalimat = "*hello"; //Ubah variabel ini untuk menulis kata yang berbeda tetapi hanya tulis dalam huruf kecil dan awali kata Anda dengan "*" Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11); Servo myServo; // Ini adalah metode yang membuat robot menulis sebuah titik void dot() { Serial.println("dot start"); myServo.write(160); penundaan (1000); myServo.write(90); penundaan (1000); myStepper.step(stepsPerRevolution); penundaan (1000); Serial.println("titik selesai"); } // Ini adalah metode yang membuat robot menulis tanda hubung void dash() { Serial.println("dash start"); myServo.write(160); penundaan (1000); myStepper.step(stepsPerRevolution); penundaan (1000); myServo.write(90); penundaan (1000); myStepper.step(stepsPerRevolution); penundaan (1000); Serial.println("tanda hubung selesai"); } // Ini adalah metode yang membuat robot meninggalkan spasi di antara setiap huruf void spasi() { Serial.println("spasi start"); myServo.write(90); penundaan (1000); langkahku.langkah(200); penundaan (1000); Serial.println("spasi selesai"); } // Ini adalah metode yang membuat robot meninggalkan ruang yang lebih besar di antara setiap kata void bigSpace() { myServo.write(90); langkahku.langkah(250); penundaan (1000); } void setup() { // letakkan kode setup Anda di sini, untuk dijalankan sekali: Serial.begin(9600); myStepper.setSpeed(100); myServo.attach(5); int pertama = kalimat.indexOf('*'); // loop for ini melewati setiap huruf dari string dan kemudian memanggil metode yang tepat untuk menuliskannya (int i = 0; i < kalimat.length(); i++) { if (sentence.charAt(first + i) == 'a') { Serial.print(".- "); dot(); berlari(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'b') { Serial.print("-… "); berlari(); dot(); dot(); dot(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'c') { Serial.print("-.-. "); berlari(); dot(); berlari(); dot(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'd') { Serial.print("-.. "); berlari(); dot(); dot(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'e') { Serial.print(". "); dot(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'f') { Serial.print("..-. "); dot(); dot(); berlari(); dot(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'g') { Serial.print("--. "); berlari(); berlari(); dot(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'h') { Serial.print("… "); dot(); dot(); dot(); dot(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'i') { Serial.print(".. "); dot(); dot(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'j') { Serial.print(".--- "); dot(); berlari(); berlari(); berlari(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'k') { Serial.print("-.- "); berlari(); dot(); berlari(); ruang angkasa(); } else if (sentence.charAt(first + i) == 'l') { Serial.print(".-.. "); dot(); berlari(); dot(); dot(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'm') { Serial.print("-- "); berlari(); berlari(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'n') { Serial.print("-. "); berlari(); dot(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'o') { Serial.print("--- "); berlari(); berlari(); berlari(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'p') { Serial.print(".--. "); dot(); berlari(); berlari(); dot(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'q') { Serial.print("--.- "); berlari(); berlari(); dot(); berlari(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'r') { Serial.print(".-. "); dot(); berlari(); dot(); ruang angkasa(); } else if (sentence.charAt(first + i) == 's') { Serial.print("… "); dot(); dot(); dot(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 't') { Serial.print("- "); berlari(); ruang angkasa(); } else if (kalimat.charAt(first + i) == 'u') { Serial.print("..- "); dot(); dot(); berlari(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'v') { Serial.print("…- "); dot(); dot(); dot(); berlari(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'w') { Serial.print(".-- "); dot(); berlari(); berlari(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'x') { Serial.print("-..- "); berlari(); dot(); dot(); berlari(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'y') { Serial.print("-.-- "); berlari(); dot(); berlari(); berlari(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == 'z') { Serial.print("--.. "); berlari(); berlari(); dot(); dot(); ruang angkasa(); } else if (kalimat.charAt(pertama + i) == ' ') { Serial.print("/ "); ruang besar(); } } } void loop() { //Jangan menulis apapun disini }

Langkah 7: Pemecahan Masalah

Roda tidak bergerak

Mungkin ada terlalu banyak gesekan antara roda dan kertas, coba naikkan roda sedikit atau ganti.

Roda menarik kertas tetapi terus berputar tanpa menarik kertas

Pastikan Anda menempelkan roda di tengah motor stepper

Titik dan garis terhubung

Periksa apakah fungsi titik, tanda hubung, dan spasi ditulis dengan benar, seharusnya seperti ini:

// Ini adalah metode yang membuat robot menulis dotvoid dot() { Serial.println("dot start"); myServo.write(160); penundaan (1000); myServo.write(90); penundaan (1000); myStepper.step(stepsPerRevolution); penundaan (1000); Serial.println("titik selesai"); }

// Ini adalah metode yang membuat robot menulis tanda hubung

void dasbor() { Serial.println("tanda hubung mulai"); myServo.write(160); penundaan (1000); myStepper.step(stepsPerRevolution); penundaan (1000); myServo.write(90); penundaan (1000); myStepper.step(stepsPerRevolution); penundaan (1000); Serial.println("tanda hubung selesai"); }

// Ini adalah metode yang membuat robot meninggalkan spasi di antara setiap huruf

void spasi() { Serial.println("spasi mulai"); myServo.write(90); penundaan (1000); langkahku.langkah(200); penundaan (1000); Serial.println("spasi selesai"); }

Direkomendasikan: