Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-23 14:49
Grup ini terdiri dari 2 Insinyur Otomasi dari UCN, yang memiliki ide cemerlang yang memotivasi kami untuk melakukan dan mengembangkannya. Idenya didasarkan pada papan Arduino yang mengendalikan lengan robot. Papan Arduino adalah otak dari operasi dan kemudian aktuator operasi, lengan Robot, akan melakukan apa yang diperlukan. Penjelasan lebih mendalam akan datang nanti.
Langkah 1: Peralatan
Lengan robot:
Phantomx Pincher Robot Arm Kit Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
Perangkat lunak untuk robot- https://www.arduino.cc/en/Main/OldSoftwareRelease… Kamera pendeteksi warna:
Kamera Pixy CMUcam5 - (https://charmedlabs.com/default/pixy-cmucam5/)
Perangkat Lunak - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
Langkah 2: Pengaturan Arduino
Anda dapat melihat pengaturan di papan di sini, yang sangat mudah.
Di sebelah kiri adalah Power Supply.
Yang tengah untuk servo pertama, yang kemudian dihubungkan ke servo lainnya, servo demi servo.
Yang paling bawah adalah tempat kita mengontrol papan dari PC atau Laptop, yang memiliki input USB di ujung lainnya.
Langkah 3: Program Akhir
||| PROGRAM |||
#termasuk
#include #include "poses.h" #include //Pixy Library #include
#tentukan POSECOUNT 5
BioloidController bioloid = BioloidController(1000000);
const int SERVOCOUNT = 5; int.id; int pos; boolean IDPeriksa; boolean RunCheck;
void setup(){ pinMode(0, OUTPUT); ax12SetRegister2(1, 32, 50);//set nomor gabungan 1 register 32 ke kecepatan 50. ax12SetRegister2(2, 32, 50);//set nomor gabungan 2 register 32 ke kecepatan 50. ax12SetRegister2(3, 32, 50);//set nomor gabungan 3 register 32 ke kecepatan 50. ax12SetRegister2(4, 32, 50);//set nomor gabungan 4 register 32 ke kecepatan 50. ax12SetRegister2(5, 32, 100);//set nomor gabungan 5 register 32 untuk mempercepat 100. //inisialisasi variabel id = 1; pos = 0; IDPeriksa = 1; JalankanPeriksa = 0; //buka port serial Serial.begin(9600); penundaan (500); Serial.println("########################################"); Serial.println("Komunikasi Serial Terbentuk.");
//Periksa Tegangan Baterai Lipo Periksa Tegangan();
//Scan Servos, kembalikan posisi MoveTest(); Pindah rumah(); Pilihan Menu(); JalankanPeriksa = 1; }
void loop(){ // membaca sensor: int inByte = Serial.read();
beralih (dalamByte) {
kasus '1': MovePose1(); merusak;
kasus '2': MovePose2(); merusak; kasus '3': MovePose3(); merusak;
kasus '4': MovePose4(); merusak;
kasus '5': MoveHome(); merusak; kasus '6': Ambil(); merusak;
kasus '7': LEDTest(); merusak;
kasus '8': RelaxServos(); merusak; } }
void CheckVoltage(){ // tunggu, lalu periksa voltase (keamanan LiPO) voltase float = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; Serial.println("########################################"); Serial.print ("Tegangan Sistem: "); Serial.print (tegangan); Serial.println("volt."); if (tegangan 10.0){ Serial.println("Tingkat tegangan nominal."); } if (RunCheck == 1){ MenuOptions(); } Serial.println("########################################"); }
batal MoveHome(){ delay(100); // disarankan jeda bioloid.loadPose(Home); // memuat pose dari FLASH, ke buffer nextPose bioloid.readPose(); // membaca posisi servo saat ini ke buffer curPose Serial.println("############################################"); Serial.println("Memindahkan servo ke posisi Home"); Serial.println("########################################"); penundaan (1000); bioloid.interpolateSetup(1000); // setup untuk interpolasi dari saat ini->berikutnya selama 1/2 detik while(bioloid.interpolating > 0){ // lakukan ini saat kita belum mencapai pose baru kita bioloid.interpolateStep(); // pindahkan servos, jika perlu. penundaan (3); } if (RunCheck == 1){ MenuOptions(); } }
void MovePose1(){ delay(100); // disarankan jeda bioloid.loadPose(Pose1); // memuat pose dari FLASH, ke buffer nextPose bioloid.readPose(); // membaca posisi servo saat ini ke buffer curPose Serial.println("############################################"); Serial.println("Memindahkan servo ke posisi 1"); Serial.println("########################################"); penundaan (1000); bioloid.interpolateSetup(1000); // setup untuk interpolasi dari saat ini->berikutnya lebih dari 1/2 detik while(bioloid.interpolating > 0){ // lakukan ini saat kita belum mencapai pose baru kita bioloid.interpolateStep(); // pindahkan servos, jika perlu. penundaan (3); } SetPosition(3, 291); //set posisi joint 3 ke '0' delay(100);//tunggu joint bergerak if (RunCheck == 1){ MenuOptions(); } }
void MovePose2(){ delay(100); // disarankan jeda bioloid.loadPose(Pose2); // memuat pose dari FLASH, ke buffer nextPose bioloid.readPose(); // membaca dalam posisi servo saat ini ke buffer curPose Serial.println("############################################"); Serial.println("Memindahkan servo ke posisi 2"); Serial.println("########################################"); penundaan (1000); bioloid.interpolateSetup(1000); // setup untuk interpolasi dari saat ini->berikutnya selama 1/2 detik while(bioloid.interpolating > 0){ // lakukan ini saat kita belum mencapai pose baru kita bioloid.interpolateStep(); // pindahkan servos, jika perlu. penundaan (3); } SetPosition(3, 291); //set posisi joint 3 ke '0' delay(100);//tunggu joint bergerak if (RunCheck == 1){ MenuOptions(); } } batal MovePose3(){ delay(100); // disarankan jeda bioloid.loadPose(Pose3); // memuat pose dari FLASH, ke buffer nextPose bioloid.readPose(); // membaca posisi servo saat ini ke buffer curPose Serial.println("############################################"); Serial.println("Memindahkan servo ke posisi 3"); Serial.println("########################################"); penundaan (1000); bioloid.interpolateSetup(1000); // setup untuk interpolasi dari saat ini->berikutnya selama 1/2 detik while(bioloid.interpolating > 0){ // lakukan ini saat kita belum mencapai pose baru kita bioloid.interpolateStep(); // pindahkan servos, jika perlu. penundaan (3); } SetPosition(3, 291); //set posisi joint 3 ke '0' delay(100);//tunggu joint bergerak if (RunCheck == 1){ MenuOptions(); } }
void MovePose4(){ delay(100); // disarankan jeda bioloid.loadPose(Pose4); // memuat pose dari FLASH, ke buffer nextPose bioloid.readPose(); // membaca dalam posisi servo saat ini ke buffer curPose Serial.println("############################################"); Serial.println("Memindahkan servo ke posisi 4"); Serial.println("########################################"); penundaan (1000); bioloid.interpolateSetup(1000); // setup untuk interpolasi dari saat ini->berikutnya lebih dari 1/2 detik while(bioloid.interpolating > 0){ // lakukan ini saat kita belum mencapai pose baru kita bioloid.interpolateStep(); // pindahkan servos, jika perlu. penundaan (3); } SetPosition(3, 291); //set posisi joint 3 ke '0' delay(100);//tunggu joint bergerak if (RunCheck == 1){ MenuOptions(); } }
void MoveTest(){ Serial.println("##############################################"); Serial.println("Inisialisasi Tes Tanda Gerakan"); Serial.println("########################################"); penundaan (500); nomor = 1; pos = 512; while(id <= SERVOCOUNT){ Serial.print("Memindahkan ID Servo: "); Serial.println(id);
while(pos >= 312){ SetPosition(id, pos); pos = pos--; penundaan (10); }
while(pos <= 512){ SetPosition(id, pos); pos = pos++; penundaan (10); }
// beralih ke servo ID berikutnya id = id++;
} if (RunCheck == 1){ MenuOptions(); } }
void MenuOptions(){ Serial.println("##############################################"); Serial.println("Silakan masukkan opsi 1-5 untuk menjalankan tes individu lagi."); Serial.println("1) Posisi 1"); Serial.println("2) Posisi 2"); Serial.println("3) Posisi 3"); Serial.println("4) Posisi 4"); Serial.println("5) Posisi Awal"); Serial.println("6) Periksa Tegangan Sistem"); Serial.println("7) Lakukan Uji LED"); Serial.println("8) Servo Santai"); Serial.println("########################################"); }
void RelaxServos(){ id = 1; Serial.println("########################################"); Serial.println("Servo Santai."); Serial.println("########################################"); while(id <= SERVOCOUNT){ Santai(id); id = (id++)%SERVOCOUNT; penundaan (50); } if (RunCheck == 1){ MenuOptions(); } }
void LEDTest(){ id = 1; Serial.println("########################################"); Serial.println("Menjalankan Tes LED"); Serial.println("########################################"); while(id <= SERVOCOUNT){ ax12SetRegister(id, 25, 1); Serial.print("LED NYALA - ID Servo: "); Serial.println(id); penundaan(3000); ax12SetRegister(id, 25, 0); Serial.print("LED MATI - ID Servo: "); Serial.println(id); penundaan(3000); id = id++; } if (RunCheck == 1){ MenuOptions(); } }
void Grab(){ SetPosition(5, 800); //set posisi joint 1 ke '0' delay(100);//tunggu joint bergerak
}
Kami telah mendasarkan program kami pada program PincherTest pabrikan dengan beberapa penyesuaian besar dalam hal penentuan posisi. Kami menggunakan poses.h agar robot memiliki posisi dalam memori. Pertama kami mencoba membuat lengan permainan kami dengan Pixycam menjadi otomatis, tetapi karena masalah layar yang ringan dan kecil, itu tidak dapat terjadi. Robot memiliki posisi dasar rumah, setelah meng-upload program, ia akan menguji semua servos yang terdapat pada robot. Kami telah mengatur pose untuk 1-4 tombol, sehingga akan mudah diingat. Jangan ragu untuk menggunakan program ini.
Langkah 4: Panduan Video
Langkah 5: Kesimpulan
Kesimpulannya, robot adalah proyek kecil yang menyenangkan bagi kami dan hal yang menyenangkan untuk dimainkan dan bereksperimen. Saya mendorong Anda untuk mencobanya dan menyesuaikannya juga.
Direkomendasikan:
Dinding Ubin LED Interaktif (Lebih Mudah Dari Kelihatannya): 7 Langkah (dengan Gambar)
Dinding Ubin LED Interaktif (Lebih Mudah Dari Kelihatannya): Dalam proyek ini saya membangun tampilan dinding LED interaktif menggunakan Arduino dan komponen cetak 3D. Inspirasi untuk proyek ini sebagian datang dari ubin Nanoleaf. Saya ingin membuat versi saya sendiri yang tidak hanya lebih terjangkau, tetapi juga
Prima - Robot yang Memainkan Piano: 13 Langkah
Prima - Robot yang Memainkan Piano: Ide tentang robot yang memainkan alat musik selalu membuat saya terpesona, dan saya selalu ingin membuatnya sendiri. Namun, saya tidak pernah memiliki banyak pengetahuan tentang musik dan alat musik, jadi saya tidak pernah tahu bagaimana sebenarnya saya akan memulainya. Sampai r
Arduino - Ubin Piano: 16 Langkah (dengan Gambar)
Arduino - Piano Tiles: Halo orang-orang internet, Ini akan menjadi tentang bagaimana membuat apa yang PASTI bukan rip off dari game mobile pada arduino uno r3.so untuk memulai, Anda akan membutuhkan semua bagian, yaitu sebagai berikut !1x Arduino Uno r3 ($42)2x LCD Keypad Shield ($19 masing-masing)5
Cara Memasang Ubin Tangguh Kelas Komersial: 6 Langkah
Cara Memasang Ubin Tangguh Kelas Komersial: Instruksi ini menunjukkan kepada Anda cara memasang ubin Tangguh, juga dikenal sebagai ubin "Komposisi Vinil" atau "Aspal", jenis yang ditemukan di sebagian besar pengaturan komersial, seperti toko kelontong. Ini mungkin lebih mudah dari yang Anda pikirkan
Membuat Gambar Ubin di Photoshop: 5 Langkah
Membuat Gambar Ubin di Photoshop: Pelajari cara membuat gambar yang dapat diulang ke segala arah di Photoshop 7.0 atau yang lebih baru. Gambar ubin sangat bagus untuk desktop