Isi kandungan:
- Langkah 1: Peralatan
- Langkah 2: Persediaan Arduino
- Langkah 3: Program Akhir
- Langkah 4: Panduan Video
- Langkah 5: Kesimpulannya
Video: Jubin Piano Memainkan Lengan Robot: 5 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Kumpulan ini terdiri daripada 2 Jurutera Automasi dari UCN, yang menghasilkan idea bernas bahawa kami termotivasi untuk melakukan dan mengembangkan. Ideanya berdasarkan pada papan Arduino yang mengendalikan lengan robot. Papan Arduino adalah otak operasi dan kemudian penggerak operasi, lengan Robotik, akan melakukan apa yang diperlukannya. Penjelasan yang lebih mendalam akan datang kemudian.
Langkah 1: Peralatan
Lengan robot:
Phantomx Pincher Robot Arm Kit Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
Perisian untuk robot- https://www.arduino.cc/en/Main/OldSoftwareRelease… Kamera pengesanan warna:
Kamera CMUcam5 Pixy - (https://charmedlabs.com/default/pixy-cmucam5/)
Perisian - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
Langkah 2: Persediaan Arduino
Anda dapat melihat persediaan di papan di sini, yang sangat mudah.
Di sebelah kiri adalah Bekalan Kuasa.
Yang tengah adalah untuk servo pertama, yang kemudiannya disambungkan ke servo yang lain, servo dengan servo.
Yang paling bawah adalah di mana kita mengendalikan papan dari PC atau Laptop, yang mempunyai input USB di hujung yang lain.
Langkah 3: Program Akhir
||| PROGRAM |||
#sertakan
#include #include "poses.h" #include // Pixy Library #include
#tentukan POSECOUNT 5
BioloidController bioloid = BioloidController (1000000);
const int SERVOCOUNT = 5; int id; int pos; IDCheck boolean; RunCheck boolean;
batal persediaan () {pinMode (0, OUTPUT); ax12SetRegister2 (1, 32, 50); // tetapkan nombor sambungan 1 daftar 32 ke kelajuan 50. ax12SetRegister2 (2, 32, 50); // tetapkan nombor sambungan 2 daftar 32 ke kelajuan 50. ax12SetRegister2 (3, 32, 50); // tetapkan nombor sambungan 3 daftar 32 ke kelajuan 50. ax12SetRegister2 (4, 32, 50); // tetapkan nombor sambungan 4 daftar 32 ke kelajuan 50. ax12SetRegister2 (5, 32, 100); // tetapkan nombor bersama 5 daftar 32 hingga laju 100. // memulakan pemboleh ubah id = 1; pos = 0; IDCheck = 1; RunCheck = 0; // port bersiri terbuka Serial.begin (9600); kelewatan (500); Serial.println ("###########################"); Serial.println ("Komunikasi Bersiri Ditubuhkan.");
// Periksa Voltan Bateri Lipo CheckVoltage ();
// Imbas Servos, kembali kedudukan MoveTest (); MoveHome (); MenuPilihan (); RunCheck = 1; }
gelung void () {// baca sensor: int inByte = Serial.read ();
tukar (dalamByte) {
kes '1': MovePose1 (); rehat;
kes '2': MovePose2 (); rehat; kes '3': MovePose3 (); rehat;
kes '4': MovePose4 (); rehat;
kes '5': MoveHome (); rehat; kes '6': Ambil (); rehat;
kes '7': LEDTest (); rehat;
kes '8': RelaxServos (); rehat; }}
batal CheckVoltage () {// tunggu, kemudian periksa voltan (keselamatan LiPO) voltan apungan = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; Serial.println ("###########################"); Serial.print ("Voltan Sistem:"); Cetakan bersiri (voltan); Serial.println ("volt."); jika (voltan 10.0) {Serial.println ("Tahap voltan nominal."); } jika (RunCheck == 1) {MenuOptions (); } Serial.println ("###########################"); }
batal MoveHome () {kelewatan (100); // disyorkan jeda bioloid.loadPose (Rumah); // muatkan pose dari FLASH, ke bioloid.readPose buffer nextPose (); // baca dalam posisi servo semasa ke curPose buffer Serial.println ("###########################"); Serial.println ("Memindahkan servos ke kedudukan Rumah"); Serial.println ("###########################"); kelewatan (1000); bioloid.interpolateSetup (1000); // persediaan untuk interpolasi dari arus-> seterusnya lebih dari 1/2 saat sementara (bioloid.interpolating> 0) {// lakukan ini sementara kami belum mencapai bioloid baru.interpolateStep (); // pindahkan servos, jika perlu. kelewatan (3); } jika (RunCheck == 1) {MenuOptions (); }}
batal MovePose1 () {kelewatan (100); // disyorkan jeda bioloid.loadPose (Pose1); // muatkan pose dari FLASH, ke bioloid.readPose buffer nextPose (); // baca dalam kedudukan servo semasa ke curPose buffer Serial.println ("###########################"); Serial.println ("Memindahkan servos ke kedudukan pertama"); Serial.println ("###########################"); kelewatan (1000); bioloid.interpolateSetup (1000); // persediaan untuk interpolasi dari arus-> seterusnya lebih dari 1/2 saat sementara (bioloid.interpolating> 0) {// lakukan ini sementara kami belum mencapai bioloid.interpolateStep (); // pindahkan servos, jika perlu. kelewatan (3); } SetPosition (3, 291); // tetapkan kedudukan sendi 3 hingga kelewatan '0' (100); // tunggu sendi bergerak jika (RunCheck == 1) {MenuOptions (); }}
batal MovePose2 () {kelewatan (100); // disyorkan jeda bioloid.loadPose (Pose2); // muatkan pose dari FLASH, ke bioloid.readPose buffer nextPose (); // baca dalam kedudukan servo semasa ke curPose buffer Serial.println ("###########################"); Serial.println ("Memindahkan servos ke kedudukan ke-2"); Serial.println ("###########################"); kelewatan (1000); bioloid.interpolateSetup (1000); // persediaan untuk interpolasi dari arus-> seterusnya lebih dari 1/2 saat sementara (bioloid.interpolating> 0) {// lakukan ini sementara kami belum mencapai bioloid baru.interpolateStep (); // pindahkan servos, jika perlu. kelewatan (3); } SetPosition (3, 291); // tetapkan kedudukan sambungan 3 hingga kelewatan '0' (100); // tunggu sendi bergerak jika (RunCheck == 1) {MenuOptions (); }} batal MovePose3 () {kelewatan (100); // disyorkan jeda bioloid.loadPose (Pose3); // muatkan pose dari FLASH, ke bioloid.readPose buffer nextPose (); // baca dalam posisi servo semasa ke curPose buffer Serial.println ("###########################"); Serial.println ("Memindahkan servos ke kedudukan ke-3"); Serial.println ("###########################"); kelewatan (1000); bioloid.interpolateSetup (1000); // persediaan untuk interpolasi dari arus-> seterusnya lebih dari 1/2 saat sementara (bioloid.interpolating> 0) {// lakukan ini sementara kami belum mencapai bioloid baru.interpolateStep (); // pindahkan servos, jika perlu. kelewatan (3); } SetPosition (3, 291); // tetapkan kedudukan sambungan 3 hingga kelewatan '0' (100); // tunggu sendi bergerak jika (RunCheck == 1) {MenuOptions (); }}
batal MovePose4 () {kelewatan (100); // disyorkan jeda bioloid.loadPose (Pose4); // muatkan pose dari FLASH, ke bioloid.readPose buffer nextPose (); // baca dalam posisi servo semasa ke curPose buffer Serial.println ("###########################"); Serial.println ("Memindahkan servos ke kedudukan ke-4"); Serial.println ("###########################"); kelewatan (1000); bioloid.interpolateSetup (1000); // persediaan untuk interpolasi dari arus-> seterusnya lebih dari 1/2 saat sementara (bioloid.interpolating> 0) {// lakukan ini sementara kami belum mencapai bioloid.interpolateStep (); // pindahkan servos, jika perlu. kelewatan (3); } SetPosition (3, 291); // tetapkan kedudukan sambungan 3 hingga kelewatan '0' (100); // tunggu sendi bergerak jika (RunCheck == 1) {MenuOptions (); }}
batal MoveTest () {Serial.println ("###########################"); Serial.println ("Memulakan Ujian Tanda Pergerakan"); Serial.println ("###########################"); kelewatan (500); id = 1; pos = 512; sementara (id <= SERVOCOUNT) {Serial.print ("Moving Servo ID:"); Serial.println (id);
sementara (pos> = 312) {SetPosition (id, pos); pos = pos--; kelewatan (10); }
sementara (pos <= 512) {SetPosition (id, pos); pos = pos ++; kelewatan (10); }
// iterate ke id servo seterusnya id = id ++;
} jika (RunCheck == 1) {MenuOptions (); }}
batal MenuOptions () {Serial.println ("###########################"); Serial.println ("Sila masukkan pilihan 1-5 untuk menjalankan ujian individu sekali lagi."); Serial.println ("1) Kedudukan 1"); Serial.println ("2) Kedudukan ke-2"); Serial.println ("3) Kedudukan ke-3"); Serial.println ("4) Kedudukan ke-4"); Serial.println ("5) Kedudukan Rumah"); Serial.println ("6) Periksa Voltan Sistem"); Serial.println ("7) Lakukan Ujian LED"); Serial.println ("8) Relax Servos"); Serial.println ("###########################"); }
batal RelaxServos () {id = 1; Serial.println ("###########################"); Serial.println ("Santai Servo."); Serial.println ("###########################"); sambil (id <= SERVOCOUNT) {Santai (id); id = (id ++)% PERKHIDMATAN; kelewatan (50); } jika (RunCheck == 1) {MenuOptions (); }}
batal LEDTest () {id = 1; Serial.println ("###########################"); Serial.println ("Running LED Test"); Serial.println ("###########################"); sementara (id <= SERVOCOUNT) {ax12SetRegister (id, 25, 1); Serial.print ("LED ON - Servo ID:"); Serial.println (id); kelewatan (3000); ax12SetRegister (id, 25, 0); Serial.print ("LED OFF - Servo ID:"); Serial.println (id); kelewatan (3000); id = id ++; } jika (RunCheck == 1) {MenuOptions (); }}
kekosongan Grab () {SetPosition (5, 800); // tetapkan kedudukan sendi 1 hingga '0' kelewatan (100); // tunggu sendi bergerak
}
Kami telah mendasarkan program kami pada program PincherTest pengeluar dengan beberapa perubahan utama dalam hal kedudukan. Kami menggunakan pose.h agar robot mempunyai kedudukan dalam ingatan. Mula-mula kami cuba menjadikan permainan bermain dengan Pixycam agar automatik, tetapi kerana masalah skrin kecil dan ringan, itu tidak dapat terjadi. Robot mempunyai kedudukan rumah asas, setelah memuat naik program, ia akan menguji semua servo yang terdapat di robot. Kami telah menetapkan pose untuk butang 1-4, jadi akan mudah diingat. Jangan ragu untuk menggunakan program ini.
Langkah 4: Panduan Video
Langkah 5: Kesimpulannya
Kesimpulannya, robot adalah projek kecil yang menyeronokkan untuk kita dan keseronokan untuk bermain-main dan bereksperimen. Saya mendorong anda untuk mencubanya dan menyesuaikannya juga.
Disyorkan:
Bercakap Arduino - Memainkan MP3 Dengan Arduino Tanpa Modul - Memainkan Fail Mp3 Dari Arduino Menggunakan PCM: 6 Langkah
Bercakap Arduino | Memainkan MP3 Dengan Arduino Tanpa Modul | Memainkan Fail Mp3 Dari Arduino Menggunakan PCM: Dalam instruksional ini kita akan belajar cara memainkan fail mp3 dengan arduino tanpa menggunakan modul audio, di sini kita akan menggunakan perpustakaan PCM untuk Arduino yang memainkan 16 bit frekuensi 8kHZ 16M jadi mari kita lakukan ini
Prima - Robot yang Memainkan Piano: 13 Langkah
Prima - Robot Yang Memainkan Piano: Idea robot memainkan alat muzik selalu memikat saya, dan saya selalu mahu membina sendiri. Namun, saya tidak pernah mempunyai banyak pengetahuan mengenai muzik dan alat muzik, jadi tidak pernah dapat mengetahui bagaimana sebenarnya saya akan memulakannya. Sehingga r
Arduino - Jubin Piano: 16 Langkah (dengan Gambar)
Arduino - Piano Tiles: Hello orang-orang internet, Ini akan menjadi bagaimana membuat apa yang TIDAK DILAKUKAN dari permainan mudah alih pada arduino uno r3.Jadi untuk memulakan, anda memerlukan semua bahagian, seperti berikut ! 1x Arduino Uno r3 ($ 42) 2x LCD Keypad Shield ($ 19 setiap satu) 5
Cara Memasang Jubin Ketahanan Gred Komersial: 6 Langkah
Cara Memasang Jubin Ketahanan Gred Komersial: Petunjuk ini menunjukkan kepada anda cara memasang jubin Ketahanan, juga dikenali sebagai jubin "Komposisi Vinil" atau "Asfalt", jenis yang terdapat di kebanyakan tetapan komersial, seperti kedai runcit. Ia mungkin lebih mudah daripada yang anda fikirkan
Buat Gambar Jubin di Photoshop: 5 Langkah
Buat Gambar Ubin di Photoshop: Pelajari cara membuat gambar yang boleh berulang dalam semua arah di Photoshop 7.0 atau lebih baru. Gambar jubin sangat bagus untuk komputer meja