Turinys:
- 1 žingsnis: įranga
- 2 žingsnis: „Arduino“sąranka
- 3 žingsnis: galutinė programa
- 4 žingsnis: vaizdo vadovas
- 5 žingsnis: Išvada
Video: Fortepijoninės plytelės, grojančios roboto ranką: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Grupę sudaro 2 automatikos inžinieriai iš UCN, kurie sugalvojo puikią idėją, kurią esame motyvuoti daryti ir tobulėti. Idėja paremta „Arduino“lenta, valdančia robotą ranką. „Arduino“lenta yra operacijos smegenys, o tada operacijos pavara - robotų ranka padarys tai, ko reikia. Išsamesnis paaiškinimas bus pateiktas vėliau.
1 žingsnis: įranga
Roboto ranka:
„Phantomx Pincher“robotų rankų komplektas „Maek II“(https://learn.trossenrobotics.com/38-interbotix-ro…)
Programinė įranga robotui- https://www.arduino.cc/en/Main/OldSoftwareRelease… Spalvų aptikimo kamera:
„CMUcam5 Pixy“kamera - (https://charmedlabs.com/default/pixy-cmucam5/)
Programinė įranga - „PixyMon“(https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
2 žingsnis: „Arduino“sąranka
Čia galite pamatyti sąranką lentoje, o tai labai paprasta.
Kairėje yra maitinimo šaltinis.
Vidurinis yra skirtas pirmajam servui, kuris vėliau prijungiamas prie kitų servo, servo prie servo.
Apatinėje dalyje mes valdome plokštę iš kompiuterio ar nešiojamojo kompiuterio, kurio kitame gale yra USB įvestis.
3 žingsnis: galutinė programa
||| PROGRAMA |||
#įtraukti
#include #include "pozes.h" #include // Pixy Library #include
#define POSECOUNT 5
BioloidController bioloid = BioloidController (1000000);
const int SERVOCOUNT = 5; int id; int pos; loginis IDCheck; loginis „RunCheck“;
void setup () {pinMode (0, OUTPUT); ax12SetRegister2 (1, 32, 50); // nustatykite jungties 1 registrą 32 į greitį 50. ax12SetRegister2 (2, 32, 50); // nustatykite jungties 2 registrą 32 į greitį 50. ax12SetRegister2 (3, 32, 50); // nustatykite jungties numerio 3 registrą 32 į greitį 50. ax12SetRegister2 (4, 32, 50); // nustatykite jungties numerio 4 registrą 32 į greitį 50. ax12SetRegister2 (5, 32, 100); // nustatykite jungties numerio 5 registrą 32 iki greičio 100. // inicijuoti kintamuosius id = 1; poz = 0; IDCheck = 1; „RunCheck“= 0; // atidaryti nuoseklųjį prievadą Serial.begin (9600); vėlavimas (500); Serial.println ("########################"); Serial.println („Serial Communication Established“);
// Tikrinti Lipo baterijos įtampą CheckVoltage ();
// Nuskaityti servus, grąžinti poziciją MoveTest (); „MoveHome“(); „MenuOptions“(); „RunCheck“= 1; }
void loop () {// skaityti jutiklį: int inByte = Serial.read ();
jungiklis (inByte) {
atvejis '1': MovePose1 (); pertrauka;
atvejis „2“: „MovePose2“(); pertrauka; atvejis „3“: „MovePose3“(); pertrauka;
atvejis „4“: „MovePose4“(); pertrauka;
atvejis „5“: „MoveHome“(); pertrauka; atvejis „6“: patraukti (); pertrauka;
atvejis '7': LEDTest (); pertrauka;
atvejis „8“: „RelaxServos“(); pertrauka; }}
void CheckVoltage () {// palaukite, tada patikrinkite įtampą (LiPO saugumas) plūdės įtampa = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; Serial.println ("########################"); Serial.print („Sistemos įtampa:“); Serijinis atspaudas (įtampa); Serial.println („voltai“); if (įtampa 10,0) {Serial.println ("Įtampos lygiai nominalūs."); } if (RunCheck == 1) {MenuOptions (); } Serial.println ("#########################"); }
void MoveHome () {delay (100); // rekomenduojama pauzė bioloid.loadPose (Pagrindinis); // įkelkite pozą iš FLASH, į nextPose buferį bioloid.readPose (); // skaityti dabartinėse servo pozicijose į curPose buferį Serial.println ("#########################"); Serial.println („Servo perkėlimas į pradinę padėtį“); Serial.println ("########################"); vėlavimas (1000); bioloid.interpolateSetup (1000); // sąrankos interpoliacijai iš srovės-> kito per 1/2 sekundės (bioloid.interpolating> 0) {// darykite tai, kol nepasiekėme naujos pozos bioloid.interpolateStep (); // perkelti servus, jei reikia. vėlavimas (3); } if (RunCheck == 1) {MenuOptions (); }}
void MovePose1 () {delay (100); // rekomenduojama pauzė bioloid.loadPose (Pose1); // įkelti pozą iš FLASH, į nextPose buferį bioloid.readPose (); // skaityti dabartinėse servo pozicijose į curPose buferį Serial.println ("#########################"); Serial.println („Servo perkėlimas į 1 poziciją“); Serial.println ("########################"); vėlavimas (1000); bioloid.interpolateSetup (1000); // sąranka interpoliacijai iš srovės-> kitas per 1/2 sekundės (bioloid.interpolating> 0) {// darykite tai, kol nepasiekėme naujos pozos bioloid.interpolateStep (); // perkelti servus, jei reikia. vėlavimas (3); } „SetPosition“(3, 291); // nustatykite jungties 3 padėtį į „0“uždelsimą (100); // palaukite, kol jungtis pajudės, jei (RunCheck == 1) {MenuOptions (); }}
void MovePose2 () {delay (100); // rekomenduojama pauzė bioloid.loadPose (Pose2); // įkelti pozą iš FLASH, į nextPose buferį bioloid.readPose (); // skaityti dabartinėse servo pozicijose į curPose buferį Serial.println ("#########################"); Serial.println („Servo perkėlimas į 2 poziciją“); Serial.println ("#########################"); vėlavimas (1000); bioloid.interpolateSetup (1000); // sąranka interpoliacijai iš srovės-> kitas per 1/2 sekundės (bioloid.interpolating> 0) {// darykite tai, kol nepasiekėme naujos pozos bioloid.interpolateStep (); // perkelti servus, jei reikia. vėlavimas (3); } „SetPosition“(3, 291); // nustatykite jungties 3 padėtį į „0“uždelsimą (100); // palaukite, kol jungtis pajudės, jei (RunCheck == 1) {MenuOptions (); }} void MovePose3 () {delay (100); // rekomenduojama pauzė bioloid.loadPose (Pose3); // įkelkite pozą iš FLASH, į nextPose buferį bioloid.readPose (); // skaityti dabartinėse servo pozicijose į curPose buferį Serial.println ("#########################"); Serial.println („Servo perkėlimas į 3 poziciją“); Serial.println ("#########################"); vėlavimas (1000); bioloid.interpolateSetup (1000); // sąranka interpoliacijai iš srovės-> kitas per 1/2 sekundės (bioloid.interpolating> 0) {// darykite tai, kol nepasiekėme naujos pozos bioloid.interpolateStep (); // perkelti servus, jei reikia. vėlavimas (3); } „SetPosition“(3, 291); // nustatykite jungties 3 padėtį į „0“uždelsimą (100); // palaukite, kol jungtis pajudės, jei (RunCheck == 1) {MenuOptions (); }}
void MovePose4 () {delay (100); // rekomenduojama pauzė bioloid.loadPose (Pose4); // įkelkite pozą iš FLASH, į nextPose buferį bioloid.readPose (); // skaityti dabartinėse servo pozicijose į curPose buferį Serial.println ("#########################"); Serial.println („Servo perkėlimas į 4 poziciją“); Serial.println ("#########################"); vėlavimas (1000); bioloid.interpolateSetup (1000); // sąrankos interpoliacijai iš srovės-> kito per 1/2 sekundės (bioloid.interpolating> 0) {// darykite tai, kol nepasiekėme naujos pozos bioloid.interpolateStep (); // perkelti servus, jei reikia. vėlavimas (3); } „SetPosition“(3, 291); // nustatykite jungties 3 padėtį į „0“uždelsimą (100); // palaukite, kol jungtis pajudės, jei (RunCheck == 1) {MenuOptions (); }}
void MoveTest () {Serial.println ("########################")); Serial.println („Judėjimo ženklų testo inicijavimas“); Serial.println ("#########################"); vėlavimas (500); id = 1; poz = 512; while (id <= SERVOCOUNT) {Serial.print ("Judantis servo ID:"); Serial.println (id);
while (poz> = 312) {SetPosition (id, pos); poz = poz--; vėlavimas (10); }
while (poz <= 512) {SetPosition (id, pos); poz = poz ++; vėlavimas (10); }
// kartoti į kitą servo ID id = id ++;
} if (RunCheck == 1) {MenuOptions (); }}
void MenuOptions () {Serial.println ("########################")); Serial.println ("Įveskite 1-5 parinktį, kad vėl atliktumėte atskirus testus."); Serial.println ("1) 1 pozicija"); Serial.println ("2) 2 pozicija"); Serial.println ("3) 3 pozicija"); Serial.println ("4) 4 pozicija"); Serial.println ("5) Pradinė padėtis"); Serial.println ("6) Patikrinkite sistemos įtampą"); Serial.println ("7) Atlikti LED testą"); Serial.println ("8) Relax Servos"); Serial.println ("########################"); }
negaliojantis „RelaxServos“() {id = 1; Serial.println ("#########################"); Serial.println („Atpalaiduojantys servai“); Serial.println ("#########################"); while (id <= SERVOCOUNT) {Atsipalaiduoti (id); id = (id ++)%SERVOCOUNT; vėlavimas (50); } if (RunCheck == 1) {MenuOptions (); }}
void LEDTest () {id = 1; Serial.println ("########################"); Serial.println („Veikiantis LED testas“); Serial.println ("########################"); while (id <= SERVOCOUNT) {ax12SetRegister (id, 25, 1); Serial.print ("LED ON - Servo ID:"); Serial.println (id); vėlavimas (3000); ax12SetRegister (id, 25, 0); Serial.print ("LED OFF - Servo ID:"); Serial.println (id); vėlavimas (3000); id = id ++; } if (RunCheck == 1) {MenuOptions (); }}
void Grab () {SetPosition (5, 800); // nustatykite 1 jungties padėtį į „0“uždelsimą (100); // palaukite, kol jungtis judės
}
Mes savo programą grindėme gamintojo „PincherTest“programa, padėdami keletą svarbių padėties nustatymo pakeitimų. Mes naudojome pozas.h, kad robotas atmintyje turėtų pozicijas. Pirmiausia bandėme sukurti automatinę žaidimo ranką su „Pixycam“, tačiau dėl šviesos ir mažų ekrano problemų tai negalėjo įvykti. Robotas turi pagrindinę namų padėtį, įkėlęs programą, jis patikrins visas robote esančias servo sistemas. Mes nustatėme 1-4 mygtukų pozas, todėl tai bus lengva prisiminti. Nesivaržykite naudotis programa.
4 žingsnis: vaizdo vadovas
5 žingsnis: Išvada
Apibendrinant galima pasakyti, kad robotas mums yra įdomus mažas projektas ir įdomus žaidimas, kuriame galima žaisti ir eksperimentuoti. Kviečiu išbandyti ir taip pat pritaikyti.
Rekomenduojamas:
Servo roboto ranka: 4 žingsniai
Servo roboto ranka: tai paprasta servo roboto ranka, galinti pasiimti daiktus ir padėti juos tam skirtoje vietoje. Šiam projektui surinkti reikės daugiausiai laiko, nes svarbu įsitikinti, kad ranka yra stabili ir gali atlikti užduotis be
„Pasidaryk pats“robotika - Mokomoji 6 ašių roboto ranka: 6 žingsniai (su paveikslėliais)
„Pasidaryk pats“robotika | Mokomoji 6 ašių robotų svirtis: „DIY-Robotics“mokomoji ląstelė yra platforma, kurią sudaro 6 ašių robotinė ranka, elektroninė valdymo grandinė ir programavimo programinė įranga. Ši platforma yra įvadas į pramoninės robotikos pasaulį. Per šį projektą „pasidaryk pats“robotas nori
„4dof Ps2 Control“„Arduino“akrilo roboto ranka: 5 žingsniai
4dof Ps2 Control Arduino akrilo robotų svirtis
Kaip valdyti 4dof didelės galios didelio dydžio roboto ranką naudojant „Arduino“ir „Ps2“nuotolinio valdymo pultą?: 4 žingsniai
Kaip valdyti „4dof“didelės galios didelio dydžio roboto ranką su „Arduino“ir „Ps2“nuotolinio valdymo pultu? „arduino“lentos darbas taip pat atliekamas „6dof“roboto rankoje. pabaiga: rašyti pirkti SINONING „Pasidaryk pats“žaislų parduotuvė
Balso valdoma roboto ranka: 8 žingsniai (su nuotraukomis)
Valdoma balsu valdoma roboto ranka: a. Straipsniai {šrifto dydis: 110,0%; šrifto svoris: paryškintas; šrifto stilius: kursyvas; teksto dekoravimas: nėra; fono spalva: raudona;} a. straipsniai: užveskite pelės žymeklį {fono spalva: juoda;} Šioje instrukcijoje paaiškinta, kaip sukurti balsu valdomą robotų ranką naudojant