
Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-23 14:49



Dalam instruksi ini saya akan membuat lengan robot sederhana. Itu akan dikendalikan menggunakan lengan master. Lengan akan mengingat gerakan dan bermain secara berurutan. Konsepnya tidak baru. Saya mendapat Ide dari "lengan robot mini -oleh Stoerpeak" Saya ingin membuat ini untuk waktu yang lama, tetapi saat itu saya benar-benar noob dan tidak memiliki pengetahuan tentang pemrograman. Sekarang akhirnya saya membangun satu, Tetap sederhana, murah dan berbagi dengan Anda semua.
Jadi mari kita mulai….
Langkah 1: Hal-hal yang Anda Butuhkan:-


Berikut adalah daftar hal-hal yang Anda perlukan: -
1. Motor servo x 5 Link untuk AS:- https://amzn.to/2OxbSH7Link untuk Eropa:-
2. Potensiometer x 5 (Saya telah menggunakan 100k.)Tautan untuk AS:- https://amzn.to/2ROjhDMTautan untuk Eropa:-
3. Arduino UNO. (Anda juga dapat menggunakan Arduino Nano) Tautan untuk AS:- https://amzn.to/2DBbENWLink untuk Eropa:-
4. Papan tempat memotong roti. (Saya menyarankan kit ini) Tautan untuk AS:- https://amzn.to/2Dy86w4Link untuk Eropa:-
5. Baterai. (opsional, saya menggunakan adaptor 5v)
6. Karton/Kayu/Sun-board/acrylic apa pun yang tersedia atau mudah ditemukan.
Dan Anda juga perlu menginstal Arduino IDE.
Langkah 2: Membuat Lengan: -


Disini saya menggunakan stik es krim untuk membuat lengannya. Anda dapat menggunakan bahan apa pun yang tersedia untuk Anda. Dan Anda dapat mencoba desain mekanis yang berbeda untuk membuat lengan yang lebih baik. desain saya tidak terlalu stabil.
Saya hanya menggunakan selotip dua sisi untuk menempelkan servos ke stik es krim dan mengencangkannya menggunakan sekrup.
Untuk lengan Master saya menempelkan potensiometer ke stik es krim dan membuat lengan.
Mengacu pada gambar akan memberi Anda Ide yang lebih baik.
Saya telah memasang semuanya pada papan kanvas ukuran A4 yang digunakan sebagai alas.
Langkah 3: Membuat Koneksi: -



Pada langkah ini kita akan membuat semua koneksi yang diperlukan, Lihat gambar di atas.
- Pertama-tama sambungkan semua servo secara paralel ke catu daya (Kabel Merah ke +ve dan Kabel Hitam atau Coklat ke Gnd)
- Selanjutnya sambungkan kabel sinyal yaitu kabel Kuning atau Oranye ke pin PWM arduino.
- Sekarang hubungkan potensiometer ke +5v dan Gnd arduino secara paralel.
- Hubungkan terminal tengah ke pin Analog ardunio.
Di sini Pin Digital 3, 5, 6, 9 & 10 digunakan untuk mengontrol servos
Pin Analog A0 hingga A4 digunakan untuk Input dari Potensiometer.
Servo yang terhubung ke pin 3 akan dikontrol oleh potensiometer yang terhubung ke A0
Servo yang terhubung ke pin 5 akan dikendalikan oleh pot di A1, dan seterusnya….
Catatan: - Meskipun Servo tidak ditenagai oleh arduino, Pastikan untuk menghubungkan Gnd servos ke arduino atau lengan tidak akan berfungsi.
Langkah 4: Pengkodean: -

Logika kode ini cukup sederhana, nilai potensiometer disimpan dalam array, catatan kemudian dilalui menggunakan loop for dan servos melakukan langkah-langkah sesuai nilai. Anda dapat melihat tutorial ini yang saya gunakan untuk referensi "Kontrol & Memori Servo Potensiometer Arduino"
Kode:- (File yang dapat diunduh terlampir di bawah.)
Pertama kita akan mendeklarasikan semua variabel yang diperlukan secara global sehingga kita dapat menggunakannya di seluruh program. Tidak diperlukan penjelasan khusus untuk ini
#termasuk
//Objek Servo Servo Servo_0; Servo Servo_1; Servo Servo_2; Servo Servo_3; Servo Servo_4; //Objek Potensiometer int Pot_0; int Pot_1; int Pot_2; int Pot_3; int Pot_4; //Variabel untuk menyimpan Posisi Servo int Servo_0_Pos; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; //Variabel untuk menyimpan nilai posisi sebelumnya int Prev_0_Pos; int Sebelumnya_1_Pos; int Sebelumnya_2_Pos; int Sebelumnya_3_Pos; int Sebelumnya_4_Pos; //Variabel untuk menyimpan nilai posisi saat ini int Current_0_Pos; int Current_1_Pos; int Saat Ini_2_Pos; int Current_3_Pos; int Current_4_Pos; int Servo_Position; //Menyimpan sudut int Servo_Number; //Tidak menyimpan servo int Storage[600]; //Array untuk menyimpan data (Meningkatkan ukuran array akan menghabiskan lebih banyak memori) int Index = 0; // Indeks array dimulai dari posisi 0 data char = 0; //variabel untuk menyimpan data dari input serial.
Sekarang kita akan menulis fungsi setup, di mana kita mengatur pin dan fungsinya. Ini adalah fungsi utama yang dijalankan terlebih dahulu
batalkan pengaturan()
{ Serial.begin(9600); //Untuk komunikasi serial antara arduino dan IDE. // Objek servo dilampirkan ke pin PWM. Servo_0.attach(3); Servo_1.attach(5); Servo_2.attach(6); Servo_3.attach (9); Servo_4.attach(10); //Servo diatur ke posisi 100 saat inisialisasi. Servo_0.write(100); Servo_1.write(100); Servo_2.write(100); Servo_3.write(100); Servo_4.write(100); Serial.println("Tekan 'R' untuk Merekam dan 'P' untuk memutar"); }
Sekarang kita harus membaca nilai potensiometer menggunakan pin Input Analog dan memetakannya untuk mengontrol servos. Untuk ini kita akan mendefinisikan sebuah fungsi dan menamakannya Map_Pot();, Anda dapat memberi nama apa pun yang Anda inginkan itu adalah fungsi yang ditentukan pengguna
batalkan Map_Pot()
{ /* Servo berputar pada 180 derajat tetapi menggunakannya untuk membatasi bukanlah ide yang baik karena membuat servos berdengung terus menerus yang mengganggu sehingga kami membatasi servo untuk bergerak antara: 1-179 */ Pot_0 = analogRead(A0); // Baca input dari pot dan simpan di Variabel Pot_0. Servo_0_Pos = peta(Pot_0, 0, 1023, 1, 179); //Peta servo sesuai nilai antara 0 hingga 1023 Servo_0.write(Servo_0_Pos); //Pindahkan servo ke posisi itu. Pot_1 = analogRead(A1); Servo_1_Pos = peta(Pot_1, 0, 1023, 1, 179); Servo_1.write(Servo_1_Pos); Pot_2 = analogBaca(A2); Servo_2_Pos = peta(Pot_2, 0, 1023, 1, 179); Servo_2.write(Servo_2_Pos); Pot_3 = analogBaca(A3); Servo_3_Pos = peta(Pot_3, 0, 1023, 1, 179); Servo_3.write(Servo_3_Pos); Pot_4 = analogBaca(A4); Servo_4_Pos = peta(Pot_4, 0, 1023, 1, 179); Servo_4.write(Servo_4_Pos); }
Sekarang kita akan menulis fungsi loop:
lingkaran kosong()
{ Pot_Peta(); //Fungsi panggilan untuk membaca nilai pot while (Serial.available() > 0) { data = Serial.read(); if (data == 'R') Serial.println("Merekam Pergerakan…"); if (data == 'P') Serial.println("Memainkan Gerakan yang Direkam…"); } if (data == 'R') //Jika 'R' dimasukkan, mulailah merekam. { //Menyimpan nilai dalam variabel Prev_0_Pos = Servo_0_Pos; Sebelumnya_1_Pos = Servo_1_Pos; Sebelumnya_2_Pos = Servo_2_Pos; Sebelumnya_3_Pos = Servo_3_Pos; Sebelumnya_4_Pos = Servo_4_Pos; Peta_Pot(); // Fungsi peta dipanggil kembali untuk perbandingan jika (abs(Prev_0_Pos == Servo_0_Pos)) // nilai absolut diperoleh dengan membandingkan { Servo_0.write(Servo_0_Pos); // Jika nilai cocok servo direposisi jika (Current_0_Pos != Servo_0_Pos) // Jika nilai tidak cocok { Storage[Index] = Servo_0_Pos + 0; // Nilai ditambahkan ke array Indeks++; // Nilai indeks bertambah 1 } Current_0_Pos = Servo_0_Pos; } /* Demikian pula perbandingan nilai dilakukan untuk semua servo, +100 ditambahkan setiap entri sebagai nilai diferensial. */ if (abs(Sebelumnya_1_Pos == Servo_1_Pos)) { Servo_1.write(Servo_1_Pos); if (Current_1_Pos != Servo_1_Pos) { Penyimpanan[Indeks] = Servo_1_Pos + 100; Indeks++; } Current_1_Pos = Servo_1_Pos; } if (abs(Sebelumnya_2_Pos == Servo_2_Pos)) { Servo_2.write(Servo_2_Pos); if (Current_2_Pos != Servo_2_Pos) { Penyimpanan[Indeks] = Servo_2_Pos + 200; Indeks++; } Current_2_Pos = Servo_2_Pos; } if (abs(Prev_3_Pos == Servo_3_Pos)) { Servo_3.write(Servo_3_Pos); if (Current_3_Pos != Servo_3_Pos) { Penyimpanan[Indeks] = Servo_3_Pos + 300; Indeks++; } Current_3_Pos = Servo_3_Pos; } if (abs(Sebelumnya_4_Pos == Servo_4_Pos)) { Servo_4.write(Servo_4_Pos); if (Current_4_Pos != Servo_4_Pos) { Penyimpanan[Indeks] = Servo_4_Pos + 400; Indeks++; } Current_4_Pos = Servo_4_Pos; } /* Nilai dicetak pada monitor serial, '\t' untuk menampilkan nilai dalam format tabel */ Serial.print(Servo_0_Pos); Serial.print("\t"); Serial.print(Servo_1_Pos); Serial.print("\t"); Serial.print(Servo_2_Pos); Serial.print("\t"); Serial.print(Servo_3_Pos); Serial.print("\t"); Serial.println(Servo_4_Pos); Serial.print("Indeks = "); Serial.println(Indeks); penundaan (50); } if (data == 'P') //JIKA 'P' dimasukkan, Mulai mainkan gerakan yang direkam. { for (int i = 0; i < Index; i++) //Melintasi larik menggunakan for loop { Servo_Number = Storage / 100; // Mencari jumlah servo Servo_Position = Storage % 100; // Menemukan posisi sakelar servo(Servo_Number) { case 0: Servo_0.write(Servo_Position); merusak; kasus 1: Servo_1.write(Servo_Position); merusak; kasus 2: Servo_2.write(Servo_Position); merusak; kasus 3: Servo_3.write(Servo_Position); merusak; kasus 4: Servo_4.write(Servo_Position); merusak; } penundaan(50); } } }
Setelah kode siap, Sekarang unggah ke papan arduino
Lengan Pintar siap bekerja. Fungsinya memang belum semulus yang dibuat Stoerpeak.
Jika Anda dapat membuat kode lebih baik atau memiliki saran untuk saya, beri tahu saya di bagian komentar.
Dengan itu, mari kita lanjutkan ke pengujian….
Langkah 5: Pengujian: -
Setelah berhasil mengupload kode ke board, Buka 'Serial Monitor' Anda dapat menemukannya di opsi Tools. Ketika Serial monitor dimulai, arduino akan mengatur ulang. Sekarang Anda dapat mengontrol lengan robot menggunakan lengan master. Tapi tidak ada yang direkam.
Untuk mulai merekam, Masukkan 'R' di monitor sekarang Anda dapat melakukan gerakan yang ingin Anda rekam.
Setelah gerakan selesai, Anda harus memasukkan 'P' untuk memainkan gerakan yang direkam. Servo akan terus melakukan gerakan selama papan tidak diatur ulang.
Direkomendasikan:
Lampu LED Meja Cerdas - Pencahayaan Cerdas Dengan Arduino - Ruang Kerja Neopiksel: 10 Langkah (dengan Gambar)

Lampu LED Meja Cerdas | Pencahayaan Cerdas Dengan Arduino | Ruang Kerja Neopiksel: Saat ini kita menghabiskan banyak waktu di rumah, belajar dan bekerja secara virtual, jadi mengapa tidak membuat ruang kerja kita lebih luas dengan sistem pencahayaan khusus dan cerdas berbasis Arduino dan LED Ws2812b. Di sini saya tunjukkan cara membangun Smart Anda Lampu LED Meja yang
Kontrol Gerakan Sederhana - Kontrol Mainan RC Anda Dengan Gerakan Lengan Anda: 4 Langkah (dengan Gambar)

Kontrol Gerakan Sederhana - Kontrol Mainan RC Anda Dengan Gerakan Lengan Anda: Selamat datang di 'ible' saya #45. Beberapa waktu yang lalu saya membuat BB8 versi RC yang berfungsi penuh menggunakan bagian Lego Star Wars … https://www.instructables.com/id/Whats-Inside-My-R…Ketika saya melihat betapa kerennya itu Force Band yang dibuat oleh Sphero, saya berpikir: "Ok, saya c
Jam Alarm Cerdas: Jam Alarm Cerdas Dibuat Dengan Raspberry Pi: 10 Langkah (dengan Gambar)

Jam Alarm Cerdas: Jam Alarm Cerdas yang Dibuat Dengan Raspberry Pi: Pernahkah Anda menginginkan jam pintar? Jika iya, ini solusinya untuk Anda! Saya membuat Smart Alarm Clock, ini adalah jam yang bisa Anda ubah waktu alarmnya sesuai dengan website. Saat alarm berbunyi, akan ada suara (buzzer) dan 2 lampu akan
Berkebun Cerdas Berbasis IoT dan Pertanian Cerdas Menggunakan ESP32: 7 Langkah

Berkebun Cerdas dan Pertanian Cerdas Berbasis IoT Menggunakan ESP32: Dunia berubah seiring waktu dan pertanian. Saat ini, Orang mengintegrasikan elektronik di setiap bidang dan pertanian tidak terkecuali untuk ini. Penggabungan elektronik dalam pertanian ini membantu petani dan orang-orang yang mengelola kebun.Dalam hal ini
Lengan Robot Sederhana Terkendali Atas Gerakan Tangan Sebenarnya: 7 Langkah (dengan Gambar)

Lengan Robot Sederhana yang Terkendali Atas Gerakan Tangan Aktual: Ini adalah lengan robot DOF yang sangat sederhana untuk pemula. Lengan dikendalikan Arduino. Terhubung dengan sensor yang terpasang di tangan operator. Oleh karena itu operator dapat mengontrol siku lengan dengan menekuk gerakan sikunya sendiri.Pada