Sisukord:
- Samm: varustus
- Samm: Arduino seadistamine
- 3. samm: lõplik programm
- 4. samm: videojuhend
- 5. samm: järeldus
Video: Klaveriplaadid mängivad robotkätt: 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Gruppi kuuluvad 2 automaatikainseneri UCN -ist, kes tulid geniaalse ideega, mida oleme motiveeritud tegema ja arendama. Idee põhineb Arduino plaadil, mis juhib robotkätt. Arduino plaat on operatsiooni ajud ja seejärel teeb operatsiooni täitur Robotic arm seda, mida vaja. Põhjalikum selgitus tuleb hiljem.
Samm: varustus
Roboti käsi:
Phantomx Pincher robotkäe komplekt Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
Roboti tarkvara- https://www.arduino.cc/en/Main/OldSoftwareRelease… Värvide tuvastamise kaamera:
CMUcam5 Pixy kaamera - (https://charmedlabs.com/default/pixy-cmucam5/)
Tarkvara - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
Samm: Arduino seadistamine
Seadistust näete tahvlil siin, mis on väga lihtne.
Vasakul on toiteallikas.
Keskmine on esimese servo jaoks, mis on hiljem ühendatud teiste servodega, servo servo kaupa.
Alumine on koht, kus me juhime tahvlit arvutist või sülearvutist, mille teises otsas on USB -sisend.
3. samm: lõplik programm
||| PROGRAMM |||
#kaasake
#include #include "poses.h" #include // Pixy Library #include
#define POSECOUNT 5
BioloidController bioloid = BioloidController (1000000);
const int SERVOCOUNT = 5; int id; int pos; boolean IDCheck; loogiline RunCheck;
void setup () {pinMode (0, VÄLJUND); ax12SetRegister2 (1, 32, 50); // määrake liigendi number 1 register 32 kiirusele 50. ax12SetRegister2 (2, 32, 50); // määrake liigendi number 2 register 32 kiirusele 50. ax12SetRegister2 (3, 32, 50); // määrake ühisnumbri 3 register 32 kiirusele 50. ax12SetRegister2 (4, 32, 50); // määrake ühisnumbri 4 register 32 kiirusele 50. ax12SetRegister2 (5, 32, 100); // määrake ühisnumbri 5 register 32 kuni kiirus 100. // initsialiseerida muutujad id = 1; pos = 0; IDCheck = 1; RunCheck = 0; // ava jadaport Serial.begin (9600); viivitus (500); Serial.println ("#########################"); Serial.println ("Seeriaühendus loodud.");
// Kontrolli Lipo aku pinget CheckVoltage ();
// Scan Servos, tagastusasend MoveTest (); MoveHome (); Menüüvalikud (); RunCheck = 1; }
void loop () {// loe andurit: int inByte = Serial.read ();
lüliti (inByte) {
juhtum '1': MovePose1 (); murda;
juhtum '2': MovePose2 (); murda; juhtum '3': MovePose3 (); murda;
juhtum '4': MovePose4 (); murda;
juhtum '5': MoveHome (); murda; juhtum '6': Haara (); murda;
juhtum '7': LEDTest (); murda;
juhtum '8': RelaxServos (); murda; }}
void CheckVoltage () {// oota, siis kontrolli pinget (LiPO ohutus) ujukpinge = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; Serial.println ("#########################"); Serial.print ("Süsteemi pinge:"); Jadajälg (pinge); Serial.println ("volti"); if (pinge 10,0) {Serial.println ("Pingetasemed nominaalsed."); } if (RunCheck == 1) {MenuOptions (); } Serial.println ("##########################"); }
tühine MoveHome () {viivitus (100); // soovitatav paus bioloid.loadPose (Home); // laadige poseerimine FLASH -ist järgmisesse poosi puhverisse bioloid.readPose (); // lugeda praegustes servopositsioonides curPose puhvrisse Serial.println ("##########################"); Serial.println ("Servode liigutamine algasendisse"); Serial.println ("#########################"); viivitus (1000); bioloid.interpolateSetup (1000); // seadistus interpoleerimiseks praegusest-> järgmine üle 1/2 sekundi (bioloid.interpolating> 0) {// tehke seda seni, kuni me pole jõudnud oma uue poosi bioloid.interpolateStep (); // liiguta servosid, kui vaja. viivitus (3); } if (RunCheck == 1) {MenuOptions (); }}
tühine MovePose1 () {viivitus (100); // soovitatav paus bioloid.loadPose (Pose1); // laadige poseerimine FLASH -ist järgmisesse poosi puhverisse bioloid.readPose (); // lugeda praegustes servopositsioonides curPose puhvrisse Serial.println ("##########################"); Serial.println ("Servode liigutamine 1. positsioonile"); Serial.println ("#########################"); viivitus (1000); bioloid.interpolateSetup (1000); // seadistus interpoleerimiseks voolust-> järgmine üle 1/2 sekundi (bioloid.interpolating> 0) {// tehke seda seni, kuni me pole jõudnud oma uuele positsioonile bioloid.interpolateStep (); // liiguta servosid, kui vaja. viivitus (3); } SetPosition (3, 291); // määrake liigendi 3 asendiks '0' viivitus (100); // oodake liigese liikumist, kui (RunCheck == 1) {MenuOptions (); }}
tühine MovePose2 () {viivitus (100); // soovitatav paus bioloid.loadPose (Pose2); // laadige poseerimine FLASH -ist järgmisesse poosi puhverisse bioloid.readPose (); // lugeda praegustes servopositsioonides curPose puhvrisse Serial.println ("##########################"); Serial.println ("Servode teisaldamine 2. positsioonile"); Serial.println ("#########################"); viivitus (1000); bioloid.interpolateSetup (1000); // seadistus interpoleerimiseks praegusest-> järgmine üle 1/2 sekundi (bioloid.interpolating> 0) {// tehke seda seni, kuni me pole jõudnud oma uue poosi bioloid.interpolateStep (); // liiguta servosid, kui vaja. viivitus (3); } SetPosition (3, 291); // määrake liigendi 3 asendiks '0' viivitus (100); // oodake liigese liikumist, kui (RunCheck == 1) {MenuOptions (); }} tühine MovePose3 () {delay (100); // soovitatav paus bioloid.loadPose (Pose3); // laadige poseerimine FLASH -ist järgmisesse poosi puhverisse bioloid.readPose (); // lugeda praegustes servopositsioonides curPose puhvrisse Serial.println ("##########################"); Serial.println ("Servode liigutamine 3. positsioonile"); Serial.println ("#########################"); viivitus (1000); bioloid.interpolateSetup (1000); // seadistus interpoleerimiseks voolust-> järgmine üle 1/2 sekundi (bioloid.interpolating> 0) {// tehke seda seni, kuni me pole jõudnud oma uuele positsioonile bioloid.interpolateStep (); // liiguta servosid, kui vaja. viivitus (3); } SetPosition (3, 291); // määrake liigendi 3 asendiks '0' viivitus (100); // oodake liigese liikumist, kui (RunCheck == 1) {MenuOptions (); }}
tühine MovePose4 () {viivitus (100); // soovitatav paus bioloid.loadPose (Pose4); // laadige poos FLASH -ist järgmisesse poosi puhverisse bioloid.readPose (); // lugeda praegustes servopositsioonides curPose puhvrisse Serial.println ("##########################"); Serial.println ("Servode liigutamine 4. positsioonile"); Serial.println ("#########################"); viivitus (1000); bioloid.interpolateSetup (1000); // seadistus interpoleerimiseks praegusest-> järgmine üle 1/2 sekundi (bioloid.interpolating> 0) {// tehke seda seni, kuni me pole jõudnud oma uue poosi bioloid.interpolateStep (); // liiguta servosid, kui vaja. viivitus (3); } SetPosition (3, 291); // määrake liigendi 3 asendiks '0' viivitus (100); // oodake liigese liikumist, kui (RunCheck == 1) {MenuOptions (); }}
void MoveTest () {Serial.println ("#########################" "); Serial.println ("Liikumismärgi testi initsialiseerimine"); Serial.println ("#########################"); viivitus (500); id = 1; pos = 512; while (id <= SERVOCOUNT) {Serial.print ("Liikuva servo ID:"); Serial.println (id);
while (pos> = 312) {SetPosition (id, pos); pos = pos--; viivitus (10); }
while (pos <= 512) {SetPosition (id, pos); pos = pos ++; viivitus (10); }
// iteraat järgmise servo ID -ga id = id ++;
} if (RunCheck == 1) {MenuOptions (); }}
void MenuOptions () {Serial.println ("#########################" "); Serial.println ("Palun sisestage valik 1-5 üksikute testide uuesti käivitamiseks."); Serial.println ("1) 1. positsioon"); Serial.println ("2) 2. positsioon"); Serial.println ("3) 3. positsioon"); Serial.println ("4) 4. positsioon"); Serial.println ("5) Kodupositsioon"); Serial.println ("6) Kontrollige süsteemi pinget"); Serial.println ("7) Tehke LED -test"); Serial.println ("8) Relax Servos"); Serial.println ("#########################"); }
tühine RelaxServos () {id = 1; Serial.println ("#########################"); Serial.println ("Lõõgastavad servod."); Serial.println ("#########################"); while (id <= SERVOCOUNT) {Lõdvestu (id); id = (id ++)%SERVOCOUNT; viivitus (50); } if (RunCheck == 1) {MenuOptions (); }}
tühine LEDTest () {id = 1; Serial.println ("#########################"); Serial.println ("Jooksev LED -test"); Serial.println ("#########################"); while (id <= SERVOCOUNT) {ax12SetRegister (id, 25, 1); Serial.print ("LED ON - Servo ID:"); Serial.println (id); viivitus (3000); ax12SetRegister (id, 25, 0); Serial.print ("LED OFF - Servo ID:"); Serial.println (id); viivitus (3000); id = id ++; } if (RunCheck == 1) {MenuOptions (); }}
void Grab () {SetPosition (5, 800); // määrake liigendi 1 asend „0” viivitusele (100); // oodake liigese liikumist
}
Oleme oma programmi aluseks võtnud tootjate PincherTesti programmi, mille positsioneerimise puhul on tehtud mõningaid suuri muudatusi. Kasutasime poses.h, et robotil oleks mälus positsioonid. Esiteks proovisime luua oma mängukäe Pixycamiga automaatseks, kuid valguse ja väikeste ekraaniprobleemide tõttu ei saanud seda juhtuda. Robotil on põhiline koduasend, pärast programmi üleslaadimist testib see kõiki robotist leitud servosid. Oleme määranud 1-4 nuppude poosid, nii et seda on lihtne meelde jätta. Kasutage programmi julgelt.
4. samm: videojuhend
5. samm: järeldus
Kokkuvõtteks võib öelda, et robot on meie jaoks lõbus väike projekt ning lõbus mängimine ja katsetamine. Soovitan teil seda proovida ja kohandada.
Soovitan:
PlotClock, WeMos ja Blynk mängivad Vintage AMI Jukeboxi: 6 sammu (koos piltidega)
PlotClock, WeMos ja Blynk Playing Vintage AMI Jukebox: Neli tehnilist uuendust tegid selle projekti võimalikuks: 1977. aasta Rowe AMI Jukebox, PlotClock robotkätekomplekt, mikrokontroller WeMos/ESP 8266 ja Blynk App/Cloud teenus. MÄRKUS. Jukebox käepärast - ärge lõpetage lugemist! See projekt võib
Kuidas juhtida 4dof suure võimsusega suure suurusega robotkätt Arduino ja Ps2 kaugjuhtimispuldiga?: 4 sammu
Kuidas juhtida 4dof suure võimsusega suure suurusega robotkätt Arduino ja Ps2 kaugjuhtimispuldiga?: See komplekt kasutab suure võimsusega mootorit mg996, see vajab suurt voolu, meil on testitud palju sisendit. Töötab ainult 5v 6a adapter. Ja arduino plaat töötab ka 6dofi robotkäel. lõpp: kirjuta osta SINONING DIY mänguasja pood
Kuidas teha traadita robotkätt Airsofti kuulidega: 9 sammu
Airsofti kuulidega traadita robotkäe valmistamine: Tere sõbrad, selles juhendatavas näitan teile, kuidas teha traadita robotkäsi, mis suudab kiikuda, liikuda üles ja alla ning tulistada juhtmevaba kaugjuhtimispuldi abil airsoftkuule
Juhtige robotkätt Zio moodulitega 1. osa: 8 sammu
Robotkäe juhtimine Zio moodulitega Osa 1: See ajaveebi postitus on osa Zio Robotics seeriast. Sissejuhatus Selles õpetuses koostame projekti, milles kasutame robotkäe juhtimiseks Zio mooduleid. See projekt õpetab teile, kuidas oma robotkäe küünist avada ja sulgeda panna. See n
Arduino - klaveriplaadid: 16 sammu (piltidega)
Arduino - klaveriplaadid: Tere Interneti -inimesed, see on sellest, kuidas teha seda, mis KINDLASTI pole mobiilimängu rippimine arduino uno r3. -l. Nii et alustamiseks vajate kõiki järgmisi osi. ! 1x Arduino Uno r3 (42 dollarit) 2x LCD -klahvistiku kilp (igaüks 19 dollarit) 5