
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48

Խումբը կազմված է UCN- ի ավտոմատացման 2 ճարտարագետներից, ովքեր հանդես եկան փայլուն գաղափարով, որ մենք մոտիվացված ենք անել և զարգանալ: Գաղափարը հիմնված է Arduino տախտակի վրա, որը վերահսկում է ռոբոտացված ձեռքը: Arduino- ի տախտակը գործողության ուղեղն է, այնուհետև գործողության շարժիչը ՝ Robotic թևը, կանի այն, ինչ իրեն անհրաժեշտ է: Ավելի խորը բացատրությունը կգա ավելի ուշ:
Քայլ 1: Սարքավորումներ

Ռոբոտի թև.
Phantomx Pincher Robot Arm Kit Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
Ռոբոտի ծրագրակազմ- https://www.arduino.cc/hy/Main/OldSoftwareRelease… Գույնի հայտնաբերման տեսախցիկ.
CMUcam5 Pixy տեսախցիկ - (https://charmedlabs.com/default/pixy-cmucam5/)
Softwareրագրային ապահովում - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
Քայլ 2: Arduino- ի կարգավորում

Դուք կարող եք տեսնել տեղադրումը տախտակի վրա այստեղ, ինչը շատ հեշտ է:
Ձախ կողմում է Էներգամատակարարումը:
Միջինը առաջին սերվոյի համար է, որը հետագայում միանում է մյուս սերվոներին ՝ սերվոյով սերվոյով:
Ստորին մեկն այն է, որտեղ մենք վերահսկում ենք տախտակը համակարգչից կամ նոութբուքից, որը մյուս ծայրում ունի USB մուտք:
Քայլ 3: Վերջնական ծրագիր
||| ՐԱԳԻՐ |||
#ներառում
#ներառել #ներառել "poses.h" #include // Pixy Library #include
#սահմանեք ՊԱՇՏՈՆ 5
BioloidController bioloid = BioloidController (1000000);
const int ERԱՌԱՅՈԹՅՈՆ = 5; int id; int pos; բուլյան IDCheck; բուլյան RunCheck;
void setup () {pinMode (0, OUTPUT); ax12SetRegister2 (1, 32, 50); // համատեղ թիվ 1 գրանցամատյանը 32 սահմանել արագության 50. ax12SetRegister2 (2, 32, 50); // հոդի թիվ 2 գրանցամատյանը 32 սահմանել արագության 50. ax12SetRegister2 (3, 32, 50); // համատեղ թիվ 3 գրանցամատյան 32 -ը սահմանել արագության 50. ax12SetRegister2 (4, 32, 50); // համատեղ թիվ 4 գրանցամատյան 32 -ը սահմանել 50 արագության վրա: 32 -ից մինչև 100. // սկզբնականացնել փոփոխականներ id = 1; pos = 0; IDCheck = 1; RunCheck = 0; // բացել սերիական նավահանգիստ Serial.begin (9600); ուշացում (500); Serial.println ("############################"); Serial.println («Սերիական հաղորդակցությունը հաստատված է»);
// Ստուգեք Lipo մարտկոցի լարման CheckVoltage ();
// Սկանավորեք ծառայությունները, վերադարձի դիրքը MoveTest (); MoveHome (); MenuOptions (); RunCheck = 1; }
void loop () {// կարդալ սենսորը ՝ int inByte = Serial.read ();
անջատիչ (inByte) {
գործ '1'. MovePose1 (); ընդմիջում;
գործ '2'. MovePose2 (); ընդմիջում; գործ '3'. MovePose3 (); ընդմիջում;
գործ '4'. MovePose4 (); ընդմիջում;
գործ '5'. MoveHome (); ընդմիջում; գործ '6'. Գրավ (); ընդմիջում;
գործ '7'. LEDTest (); ընդմիջում;
գործ '8'. RelaxServos (); ընդմիջում; }}
անվավեր CheckVoltage () {// սպասեք, ապա ստուգեք լարման (LiPO անվտանգություն) բոց լարման = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; Serial.println ("############################"); Serial.print ("Համակարգի լարումը."); Serial.print (լարման); Serial.println («վոլտ»); if (լարման 10.0) {Serial.println («Լարման մակարդակները անվանական»); } if (RunCheck == 1) {MenuOptions (); } Serial.println ("############################"); }
անվավեր MoveHome () {հետաձգում (100); // առաջարկվող դադար bioloid.loadPose (Տուն); // բեռնել դիրքը FLASH- ից, nextPose բուֆերային bioloid.readPose (); // ընթացիկ սերվոյի դիրքերում կարդալ curPose բուֆերային Serial.println ("############################"); Serial.println («Սերվոների տեղափոխում տնային դիրք»); Serial.println ("############################"); ուշացում (1000); bioloid.interpolateSetup (1000); // միջակայքի տեղադրում ընթացիկից-> հաջորդ 1/2 վայրկյանի ընթացքում (bioloid.interpolating> 0) {// դա արեք, քանի դեռ չենք հասել մեր նոր դիրքին bioloid.interpolateStep (); // անհրաժեշտության դեպքում տեղափոխել սերվերը: ուշացում (3); } if (RunCheck == 1) {MenuOptions (); }}
անվավեր MovePose1 () {հետաձգում (100); // առաջարկվող դադար bioloid.loadPose (Pose1); // բեռնել դիրքորոշումը FLASH- ից, nextPose բուֆերային bioloid.readPose (); // ընթացիկ սերվոյի դիրքերում կարդալ curPose բուֆերային Serial.println ("############################"); Serial.println («Սերվոների տեղափոխում 1 -ին դիրք»); Serial.println ("############################"); ուշացում (1000); bioloid.interpolateSetup (1000); // միջակայքի տեղադրում ընթացիկից-> հաջորդ 1/2 վայրկյանի ընթացքում (bioloid.interpolating> 0) {// դա արեք, քանի դեռ չենք հասել մեր նոր դիրքին bioloid.interpolateStep (); // անհրաժեշտության դեպքում տեղափոխել սերվերը: ուշացում (3); } SetPosition (3, 291); // հոդի 3 -ի դիրքը սահմանել «0» հետաձգման (100); // սպասել, մինչև հոդի տեղաշարժը, եթե (RunCheck == 1) {MenuOptions (); }}
անվավեր MovePose2 () {հետաձգում (100); // առաջարկվող դադար bioloid.loadPose (Pose2); // բեռնել դիրքը FLASH- ից, nextPose բուֆերային bioloid.readPose (); // ընթացիկ սերվոյի դիրքերում կարդալ curPose բուֆերային Serial.println ("############################"); Serial.println («Սպասարկողների տեղափոխում 2 -րդ դիրք»); Serial.println ("############################"); ուշացում (1000); bioloid.interpolateSetup (1000); // կարգավորում ինտերպոլացիայի համար ընթացիկից-> հաջորդ 1/2 վայրկյանի ընթացքում (bioloid.interpolating> 0) {// դա արեք, քանի դեռ չենք հասել մեր նոր դիրքին bioloid.interpolateStep (); // անհրաժեշտության դեպքում տեղափոխել սերվերը: ուշացում (3); } SetPosition (3, 291); // հոդի 3 -ի դիրքը սահմանել «0» հետաձգման (100); // սպասել, մինչև հոդի տեղաշարժը, եթե (RunCheck == 1) {MenuOptions (); }} անվավեր MovePose3 () {հետաձգում (100); // առաջարկվող դադար bioloid.loadPose (Pose3); // բեռնել դիրքը FLASH- ից, nextPose բուֆերային bioloid.readPose (); // ընթացիկ սերվոյի դիրքերում կարդալ curPose բուֆերային Serial.println ("############################"); Serial.println («Սերվոների տեղափոխում 3 -րդ դիրք»); Serial.println ("############################"); ուշացում (1000); bioloid.interpolateSetup (1000); // միջակայքի տեղադրում ընթացիկից-> հաջորդ 1/2 վայրկյանի ընթացքում (bioloid.interpolating> 0) {// դա արեք, քանի դեռ չենք հասել մեր նոր դիրքին bioloid.interpolateStep (); // անհրաժեշտության դեպքում տեղափոխել սերվերը: ուշացում (3); } SetPosition (3, 291); // հոդի 3 -ի դիրքը սահմանել «0» հետաձգման (100); // սպասել, մինչև հոդի տեղաշարժը, եթե (RunCheck == 1) {MenuOptions (); }}
անվավեր MovePose4 () {հետաձգում (100); // առաջարկվող դադար bioloid.loadPose (Pose4); // բեռնել դիրքորոշումը FLASH- ից, nextPose բուֆերային bioloid.readPose (); // ընթացիկ սերվոյի դիրքերում կարդալ curPose բուֆերային Serial.println ("############################"); Serial.println («Սերվոների տեղափոխում 4 -րդ դիրք»); Serial.println ("############################"); ուշացում (1000); bioloid.interpolateSetup (1000); // կարգավորում ինտերպոլացիայի համար ընթացիկից-> հաջորդ 1/2 վայրկյանի ընթացքում (bioloid.interpolating> 0) {// դա արեք, քանի դեռ չենք հասել մեր նոր դիրքին bioloid.interpolateStep (); // անհրաժեշտության դեպքում տեղափոխել սերվերը: ուշացում (3); } SetPosition (3, 291); // հոդի 3 -ի դիրքը սահմանել «0» հետաձգման (100); // սպասել, մինչև հոդի տեղաշարժը, եթե (RunCheck == 1) {MenuOptions (); }}
void MoveTest () {Serial.println ("#############################"); Serial.println («Շարժման նշանի թեստի սկզբնականացում»); Serial.println ("############################"); ուշացում (500); id = 1; pos = 512; while (id <= SERVOCOUNT) {Serial.print ("Սերվոյի ID- ի տեղափոխում."); Serial.println (id);
while (pos> = 312) {SetPosition (id, pos); pos = pos--; ուշացում (10); }
while (pos <= 512) {SetPosition (id, pos); pos = pos ++; ուշացում (10); }
// կրկնել հաջորդ սերվոյի ID id = id ++;
} if (RunCheck == 1) {MenuOptions (); }}
void MenuOptions () {Serial.println ("#############################"); Serial.println ("Խնդրում ենք մուտքագրել 1-5-րդ տարբերակը` անհատական թեստերը կրկին գործարկելու համար "); Serial.println («1) 1 -ին պաշտոն»); Serial.println («2) 2 -րդ պաշտոն»); Serial.println («3) 3 -րդ պաշտոն»); Serial.println («4» 4 -րդ պաշտոն »); Serial.println ("5) Տնային պաշտոն"); Serial.println ("6) Ստուգեք համակարգի լարումը"); Serial.println ("7) Կատարել LED թեստ"); Serial.println ("8" Relax Servos "); Serial.println ("############################"); }
դատարկ RelaxServos () {id = 1; Serial.println ("############################"); Serial.println («Հանգստացնող ծառայություններ»); Serial.println ("############################"); while (id <= SERVOCOUNT) {Relax (id); id = (id ++)%ERԱՌԱՅՈԹՅՈՆ; ուշացում (50); } if (RunCheck == 1) {MenuOptions (); }}
անվավեր LEDTest () {id = 1; Serial.println ("############################"); Serial.println («Վազում է LED թեստ»); Serial.println ("############################"); while (id <= SERVOCOUNT) {ax12SetRegister (id, 25, 1); Serial.print ("LED ON - Servo ID:"); Serial.println (id); ուշացում (3000); ax12SetRegister (id, 25, 0); Serial.print ("LED OFF - Servo ID:"); Serial.println (id); ուշացում (3000); id = id ++; } if (RunCheck == 1) {MenuOptions (); }}
void Grab () {SetPosition (5, 800); // հոդի 1 -ի դիրքը սահմանել «0» հետաձգման (100); // սպասել, որ հոդի շարժումը տեղի ունենա
}
Մենք մեր ծրագիրը հիմնվել ենք արտադրողների PincherTest ծրագրի վրա `դիրքավորման դեպքում որոշ խոշոր փոփոխություններով: Մենք ռոբոտի համար օգտագործեցինք poses.h- ն `հիշողության մեջ դիրքեր ունենալու համար: Սկզբում մենք փորձեցինք ստեղծել Pixycam- ի հետ խաղային թևը ավտոմատ, բայց լույսի և փոքր էկրանի խնդիրների պատճառով դա տեղի չունեցավ: Ռոբոտը ունի հիմնական տնային դիրք, ծրագիրը վերբեռնելուց հետո այն կփորձարկի ռոբոտի մեջ հայտնաբերված բոլոր ծառայությունները: Մենք սահմանել ենք 1-4 կոճակների պոզերը, այնպես որ դա հեշտ կլինի հիշել: Ազատ զգալ օգտագործել ծրագիրը:
Քայլ 4: Տեսաուղեցույց
Քայլ 5: Եզրակացություն
Եզրափակելով ՝ ռոբոտը մեզ համար զվարճալի փոքր նախագիծ է և զվարճալի խաղ, որը կարող է խաղալ և փորձարկել: Ես խրախուսում եմ ձեզ փորձել և հարմարեցնել այն նույնպես:
Խորհուրդ ենք տալիս:
Ռոբոտի բազուկ. 15 քայլ

Ռոբոտի բազուկ. Ունենալ ավտոմատ համակարգ
Պտտվող կոդավորմամբ կառավարվող ռոբոտի բազուկ. 6 քայլ

Rotary Encoder Controlled Robot Arm. Ես այցելեցի howtomechatronics.com և այնտեղ տեսա bluetooth- ով կառավարվող ռոբոտի թևը: Ես չեմ սիրում օգտագործել bluetooth- ը, բացի այդ, ես տեսա, որ մենք կարող ենք վերահսկել servo- ն պտտվող կոդավորիչով, ուստի այն վերափոխում եմ, որ կարող եմ կառավարել ռոբոտը: թևը օգտագործեք պտտվող կոդավորիչ և գրանցեք այն
DIY ռոբոտաշինություն - Ուսումնական 6 առանցքի ռոբոտի բազուկ. 6 քայլ (նկարներով)

DIY ռոբոտաշինություն | Ուսումնական 6 առանցքի ռոբոտի բազուկ. DIY-Robotics կրթական բջիջը հարթակ է, որը ներառում է 6 առանցքի ռոբոտային բազուկ, էլեկտրոնային կառավարման միացում և ծրագրավորման ծրագրակազմ: Այս հարթակը ներդրում է արդյունաբերական ռոբոտաշինության աշխարհում: Այս նախագծի միջոցով DIY-Robotics- ը ցանկանում է
4dof Ps2 Control Arduino ակրիլային ռոբոտի բազուկ ՝ 5 քայլ

4dof Ps2 Control Arduino Acrylic Robot Arm. It based on mearmlist: 1set mearm acrylic arm1pc arduino uno2pc ps2
Arduino - դաշնամուրի սալիկներ. 16 քայլ (նկարներով)

Arduino - Դաշնամուրի սալիկներ. Ողջույն, ինտերնետային ժողովուրդ, սա կլինի այն մասին, թե ինչպես կարելի է անել այն, ինչ ՄԻՇՏ ՀԱՇՎՈՎ չի arduino uno r3 բջջային խաղից: սկսելու համար ձեզ հարկավոր կլինեն բոլոր մասերը, որոնք հետևյալն են. ! 1x Arduino Uno r3 (42 դոլար) 2x LCD ստեղնաշարի վահան (յուրաքանչյուրը 19 դոլար) 5