Isi kandungan:

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

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

Video: Penulis Kod Arduino Morse: 7 Langkah (dengan Gambar)
Video: 【ARDUINO】Membuat Sandi Morse Dengan LED Dan LCD Di Proteus 2024, November
Anonim
Image
Image
Penulis Kod Arduino Morse
Penulis Kod Arduino Morse

Saya membuat robot yang dapat mengubah teks yang diberikan menjadi kod Morse dan kemudian menulisnya !! Ia terbuat dari kadbod dan Lego dan untuk elektronik saya menggunakan Arduino dan hanya dua motor.

Bekalan

Arduino Uno board Stepper motor Micro servo SG90ULN2003 stepper motor driver module Power supply modul Breadboard4 × Jumper wire6 × Female-to-Male dupont wires9V1A AdapterUSB cable Cardboard 2 × Dowels kayu 2 × Springs Straw White paperLegoSuper lem Hot glue gun Pita elastik (untuk membuat a pemegang pen) Pemotong Gunting

Langkah 1: Membina Pangkalan

Membina Pangkalan
Membina Pangkalan
Membina Pangkalan
Membina Pangkalan
Membina Pangkalan
Membina Pangkalan

Mulakan dengan membina pangkalan. Tambang selebar 4 kancing dan panjang 20 kancing, setelah membina satu lapisan dengan panjang itu, saya membina papan selebar satu pejalan di sekelilingnya meninggalkan jurang di satu sisi untuk meninggalkan ruang untuk motor stepper, kemudian saya menambah kepingan jubin ke bahagian tengah di mana jalur kertas akan berada. Menggunakan Lego menjadikannya sangat kukuh dan mudah diubah suai. Untuk membuat gulungan kertas, saya memotong helai kertas A4 selebar 1.2cm (saya memilih lebar ini kerana lebarnya sama dengan roda Lego yang saya gunakan, anda boleh menjadikannya lebih besar atau lebih kecil bergantung pada roda anda) dan saya menempelkan hujungnya bersama-sama untuk membentuk satu jalur yang sangat panjang, kemudian saya melilitnya pada roda.

Langkah 2: Potongan Servo

Potongan Servo
Potongan Servo
Potongan Servo
Potongan Servo
Potongan Servo
Potongan Servo

Untuk langkah ini, anda memerlukan:

  • dua dowel kayu sepanjang 4cm
  • dua mata air sepanjang 2cm
  • satu jerami dipotong menjadi dua keping masing-masing 2cm
  • satu kepingan kadbod 12cm x 4cm
  • dua keping kadbod 4cm x 1.5cm
  • satu keping kadbod 4cm x 2cm

Pertama, tempelkan dowel ke salah satu dari 4 dengan 1.5 keping, kemudian masukkan mata air dan jerami di dowel, kemudian tempelkan kepingan kadbod yang lain di sisi lain untuk menahan semuanya di tempatnya.

Kedua, lekatkan kepingan 4cm dengan 2cm di atas jerami.

Ketiga, balikkan keseluruhan bahagian dan tempelkan dowel kecil ke belakangnya, bukan di tengah tetapi sedikit ke kiri. (Saya terlupa menambah dowel kecil pada gambar pertama)

Akhirnya, potong lubang pada kepingan besar dari kadbod bersaiz depan motor servo dan tempelkan motor ke dalamnya, kemudian tempelkan potongan yang baru kita buat dengan dowel ke bahagian besar sehingga ketika servo bergerak, ia mendorong dowel kecil ke bawah yang seterusnya mendorong mata air ke bawah juga.

Saya akhirnya memotong kira-kira 3cm dari bahagian bawah kepingan 12cm x 4cm dan menempelkan dua keping lagi 4cm dengan 1.5cm, kemudian menutupnya dengan sekeping kadbod 5.5cm x 4cm. Dan untuk memegang penanda saya membuat kecil gelung jalur elastik dan lekatkan pada sekeping kadbod kecil kemudian saya lekatkan pada kepingan 4cm dengan 2cm yang akan bergerak ke bawah ketika servo bermula. Penambahan ini menghentikan penanda bergerak dari sisi ke sisi ketika mata air kembali naik.

Langkah 3: Menambah Motor Servo dan Gulungan Kertas ke Pangkalan

Menambah Motor Servo dan Gulungan Kertas ke Pangkalan
Menambah Motor Servo dan Gulungan Kertas ke Pangkalan
Menambah Motor Servo dan Gulungan Kertas ke Pangkalan
Menambah Motor Servo dan Gulungan Kertas ke Pangkalan

Saya menambah dua batu bata ke satu sisi pangkalan untuk menyokong bahagian servo dan saya melekatkannya di tempat. Kemudian saya menambah roda ke hujung pangkalan.

Langkah 4: Membina Stepper Motor Frame

Membina Rangka Motor Stepper
Membina Rangka Motor Stepper
Membina Rangka Motor Stepper
Membina Rangka Motor Stepper
Membina Rangka Motor Stepper
Membina Rangka Motor Stepper

Langkah ini agak mencabar, kerana motornya tidak dibuat sesuai dengan Lego dengan sempurna. Namun, saya berjaya melakukannya dengan menggunakan dua lubang pada motor untuk menahannya di tempatnya. Seterusnya, saya menempelkan roda Lego ke hujung motor dan kemudian meletakkannya tepat di sebelah pangkal di sebelah kiri yang saya tinggalkan pada langkah 1.

Langkah 5: Menyentuh Sentuhan

Sentuhan terakhir
Sentuhan terakhir
Sentuhan terakhir
Sentuhan terakhir
Sentuhan terakhir
Sentuhan terakhir
Sentuhan terakhir
Sentuhan terakhir

Saya menambah dua kepingan busur untuk menutupi roda untuk memperbaiki kertas di tempatnya. Dan saya menambah dua kepingan busur yang lebih kecil satu untuk memegang wayar motor stepper dan satu lagi untuk memegang kertas. Terakhir, saya menukar roda motor stepper menjadi roda yang sedikit lebih besar yang menggerakkan kertas lebih baik daripada roda lama.

Langkah 6: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik

Akhirnya, anda perlu menyambungkan motor ke Arduino dan memuat naik kodnya.

Kita akan mulakan dengan motor servo, sambungkan wayar coklat (wayar tanah) ke pin GND, kemudian wayar merah (wayar kuasa) ke pin 5V, dan wayar oren (wayar isyarat) ke Dig # 5 sematkan. Seterusnya, motor stepper, sambungkan 1N1 ke Dig # 11, 1N2 ke Dig # 10, 1N3 ke Dig # 9, 1N4 hingga Dig # 8, 5V ke sisi positif papan roti dan pin ground ke sisi negatif papan roti. Dan jangan lupa untuk menyambungkan modul bekalan kuasa ke papan roti memastikan sisi positif dan negatifnya sejajar dengan sisi yang sesuai di papan roti. Sekiranya anda terlupa, anda akan mengembalikan kuasa ke projek anda, dan anda tidak mahu melakukannya.

Untuk kodnya, saya menulis empat kaedah, satu untuk menulis titik, satu untuk menulis tanda hubung, dan dua untuk meninggalkan ruang antara setiap huruf dan setiap perkataan. Dengan cara itu, saya hanya dapat memanggil kaedah ini apabila saya memerlukannya dan bukannya menulisnya lagi untuk setiap huruf. Kemudian saya menulis untuk gelung untuk setiap huruf teks dan menulisnya, Di dalamnya, saya menulis pernyataan if untuk setiap huruf tetapi anda boleh menulisnya dalam pernyataan beralih jika anda mahu. Sudah tentu anda boleh menambah kod untuk membolehkan program membaca nombor. Apabila semua pendawaian sudah siap, salin dan tampal kod ke IDE anda. Jangan lupa untuk memasang perpustakaan stepper, servo, dan string. Selepas itu, anda boleh pergi.

Bagaimana ia berfungsi

Semasa Arduino memulakan program melihat huruf pertama teks., Dan bergantung pada yang mana satu, ia memanggil fungsi yang menulisnya dalam kod Morse. Sebagai contoh, apabila fungsi titik dipanggil, motor servo diatur ke 160 yang menggerakkan pen ke bawah, kemudian diatur kembali ke 90 yang membolehkan mata air kembali bergerak menggerakkan pen dengan mereka. Dan jika fungsi dash dipanggil, servo menggerakkan pen ke bawah, maka motor stepper memutar roda yang menarik kertas menjadikan pen menulis tanda sempang. Dan jika salah satu fungsi ruang disebut motor stepper berputar tetapi dengan pena ke atas sehingga menarik kertas membuat ruang antara huruf atau kata-kata. Setelah selesai, ia pergi ke huruf seterusnya dan mengulangi proses yang sama. Saya harap awak sukakannya;)

Kodnya

#sertakan

#include #include #include const int stepsPerRevolution = 150; // Ini adalah pemboleh ubah untuk ayat String motor stepper = "* hello"; // Tukar pemboleh ubah ini untuk menulis perkataan yang berbeza tetapi hanya menulis dengan huruf kecil dan mulakan perkataan anda dengan "*" Stepper myStepper (stepPerRevolution, 8, 10, 9, 11); Servo myServo; // Ini adalah kaedah yang membuat robot menulis dot void dot () {Serial.println ("dot start"); myServo.write (160); kelewatan (1000); myServo.write (90); kelewatan (1000); myStepper.step (stepPerRevolution); kelewatan (1000); Serial.println ("dot selesai"); } // Ini adalah kaedah yang membuat robot menulis dash void dash () {Serial.println ("dash start"); myServo.write (160); kelewatan (1000); myStepper.step (stepPerRevolution); kelewatan (1000); myServo.write (90); kelewatan (1000); myStepper.step (stepPerRevolution); kelewatan (1000); Serial.println ("sengkang selesai"); } // Ini adalah kaedah yang membuat robot meninggalkan ruang di antara setiap huruf kosong ruang () {Serial.println ("space start"); myServo.write (90); kelewatan (1000); myStepper.step (200); kelewatan (1000); Serial.println ("ruang selesai"); } // Ini adalah kaedah yang membuat robot meninggalkan ruang yang lebih besar di antara setiap perkataan batal bigSpace () {myServo.write (90); myStepper.step (250); kelewatan (1000); } batalkan persediaan () {// letakkan kod persediaan anda di sini, untuk dijalankan sekali: Serial.begin (9600); myStepper.setSpeed (100); myServo.attach (5); int pertama = ayat.indexOf ('*'); // ini untuk gelung melalui setiap huruf rentetan dan kemudian memanggil kaedah yang tepat untuk menuliskannya untuk (int i = 0; i <ayat.length (); i ++) {if (ayat.charAt (pertama + i) == 'a') {Serial.print (".-"); titik (); tanda sempang (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'b') {Serial.print ("-…"); tanda sempang (); titik (); titik (); titik (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'c') {Serial.print ("-.-."); tanda sempang (); titik (); tanda sempang (); titik (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'd') {Serial.print ("-.."); tanda sempang (); titik (); titik (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'e') {Serial.print ("."); titik (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'f') {Serial.print ("..-."); titik (); titik (); tanda sempang (); titik (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'g') {Serial.print ("-."); tanda sempang (); tanda sempang (); titik (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'h') {Serial.print ("…."); titik (); titik (); titik (); titik (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'i') {Serial.print (".."); titik (); titik (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'j') {Serial.print (".---"); titik (); tanda sempang (); tanda sempang (); tanda sempang (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'k') {Serial.print ("-.-"); tanda sempang (); titik (); tanda sempang (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'l') {Serial.print (".-.."); titik (); tanda sempang (); titik (); titik (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'm') {Serial.print ("-"); tanda sempang (); tanda sempang (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'n') {Serial.print ("-."); tanda sempang (); titik (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'o') {Serial.print ("---"); tanda sempang (); tanda sempang (); tanda sempang (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'p') {Serial.print (".--."); titik (); tanda sempang (); tanda sempang (); titik (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'q') {Serial.print ("--.-"); tanda sempang (); tanda sempang (); titik (); tanda sempang (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'r') {Serial.print (".-."); titik (); tanda sempang (); titik (); ruang (); } lain jika (ayat.charAt (pertama + i) == 's') {Serial.print ("…"); titik (); titik (); titik (); ruang (); } lain jika (ayat.charAt (pertama + i) == 't') {Serial.print ("-"); tanda sempang (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'u') {Serial.print ("..-"); titik (); titik (); tanda sempang (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'v') {Serial.print ("… -"); titik (); titik (); titik (); tanda sempang (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'w') {Serial.print (".--"); titik (); tanda sempang (); tanda sempang (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'x') {Serial.print ("-..-"); tanda sempang (); titik (); titik (); tanda sempang (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'y') {Serial.print ("-.--"); tanda sempang (); titik (); tanda sempang (); tanda sempang (); ruang (); } lain jika (ayat.charAt (pertama + i) == 'z') {Serial.print ("-.."); tanda sempang (); tanda sempang (); titik (); titik (); ruang (); } lain jika (ayat.charAt (pertama + i) == '') {Serial.print ("/"); bigSpace (); }}} gelung kosong () {// Jangan tulis apa-apa di sini}

Langkah 7: Penyelesaian masalah

Roda tidak bergerak

Mungkin terdapat terlalu banyak geseran antara roda dan kertas, cuba angkat roda sedikit atau ubah.

Roda menarik kertas tetapi kemudian ia terus berputar tanpa menarik kertas

Pastikan anda menempelkan roda di tengah motor stepper

Titik dan tanda hubung dihubungkan

Periksa sama ada fungsi titik, tanda hubung dan ruang ditulis dengan betul, fungsi seperti ini:

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

// Ini adalah kaedah yang membuat robot menulis sedikit

tanda kosong () {Serial.println ("dash start"); myServo.write (160); kelewatan (1000); myStepper.step (stepPerRevolution); kelewatan (1000); myServo.write (90); kelewatan (1000); myStepper.step (stepPerRevolution); kelewatan (1000); Serial.println ("sengkang selesai"); }

// Ini adalah kaedah yang membuat robot meninggalkan ruang antara setiap huruf

ruang kosong () {Serial.println ("ruang permulaan"); myServo.write (90); kelewatan (1000); myStepper.step (200); kelewatan (1000); Serial.println ("ruang selesai"); }

Disyorkan: