Sadržaj:
- Korak 1: Oprema
- Korak 2: Postavljanje Arduina
- Korak 3: Završni program
- Korak 4: Video vodič
- Korak 5: Zaključak
Video: Robotske sviračke pločice za klavir: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Grupu čine 2 inženjera automatizacije iz UCN -a, koji su došli do briljantne ideje za koju smo motivirani raditi i razvijati se. Ideja se temelji na Arduino ploči koja kontrolira robotsku ruku. Arduino ploča je mozak operacije i tada će pokretač operacije, robotska ruka, učiniti ono što treba. Detaljnije objašnjenje doći će kasnije.
Korak 1: Oprema
Robotska ruka:
Phantomx Pincher Robot Arm Kit Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
Softver za robota- https://www.arduino.cc/en/Main/OldSoftwareRelease… Kamera za otkrivanje boje:
CMUcam5 Pixy kamera - (https://charmedlabs.com/default/pixy-cmucam5/)
Softver - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
Korak 2: Postavljanje Arduina
Postavke na ploči možete vidjeti ovdje, što je vrlo jednostavno.
S lijeve strane nalazi se Napajanje.
Srednji je za prvi servo, koji je kasnije povezan s ostalim servo, servo po servo.
Sa donje strane upravljamo pločom s računala ili prijenosnog računala koja ima USB ulaz na drugom kraju.
Korak 3: Završni program
||| PROGRAM |||
#uključi
#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; boolean RunCheck;
void setup () {pinMode (0, OUTPUT); ax12SetRegister2 (1, 32, 50); // postavite registar broj 1 zgloba 32 na brzinu 50. ax12SetRegister2 (2, 32, 50); // postavite registar broja 2 zgloba 32 na brzinu 50. ax12SetRegister2 (3, 32, 50); // postavite registar broja 3 zgloba 32 na brzinu 50. ax12SetRegister2 (4, 32, 50); // postavite registar broja zgloba 4 na brzinu 50. ax12SetRegister2 (5, 32, 100); // postavite registar broja zgloba 5 32 do brzine 100. // inicijalizirati varijable id = 1; pos = 0; IDCheck = 1; RunCheck = 0; // otvaranje serijskog porta Serial.begin (9600); kašnjenje (500); Serial.println ("###########################"); Serial.println ("Uspostavljena serijska komunikacija.");
// Provjera napona Lipo baterije CheckVoltage ();
// Skeniranje servomotora, povratni položaj MoveTest (); MoveHome (); MenuOptions (); RunCheck = 1; }
void loop () {// čitanje senzora: int inByte = Serial.read ();
switch (inByte) {
slučaj '1': MovePose1 (); pauza;
slučaj '2': MovePose2 (); pauza; slučaj '3': MovePose3 (); pauza;
slučaj '4': MovePose4 (); pauza;
slučaj '5': MoveHome (); pauza; slučaj '6': Grab (); pauza;
slučaj '7': LEDTest (); pauza;
slučaj '8': RelaxServos (); pauza; }}
void CheckVoltage () {// pričekajte, zatim provjerite napon (LiPO sigurnosni) plivajući napon = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10,0; Serial.println ("###########################"); Serial.print ("Napon sustava:"); Serijski.ispis (napon); Serial.println ("volti."); if (napon 10,0) {Serial.println ("Razine napona nominalne."); } if (RunCheck == 1) {MenuOptions (); } Serial.println ("##########################"); }
void MoveHome () {odgoda (100); // preporučena stanka bioloid.loadPose (Početna); // učitavanje poze iz FLASH -a, u nextPose međuspremnik bioloid.readPose (); // očitavanje na trenutnim pozicijama serva u međuspremniku curPose Serial.println ("#########################"); Serial.println ("Premještanje servo upravljača u početni položaj"); Serial.println ("###########################"); kašnjenje (1000); bioloid.interpolateSetup (1000); // postavljanje za interpolaciju od trenutne-> slijedeće više od 1/2 sekunde while (bioloid.interpolating> 0) {// učinite to dok nismo dosegli našu novu pozu bioloid.interpolateStep (); // premjestiti servomotore, ako je potrebno. kašnjenje (3); } if (RunCheck == 1) {MenuOptions (); }}
void MovePose1 () {odgoda (100); // preporučena stanka bioloid.loadPose (Pose1); // učitati pozu iz FLASH -a, u nextPose međuspremnik bioloid.readPose (); // očitavanje na trenutnim pozicijama serva u međuspremniku curPose Serial.println ("#########################"); Serial.println ("Premještanje servomotora na 1. poziciju"); Serial.println ("###########################"); kašnjenje (1000); bioloid.interpolateSetup (1000); // postavljanje za interpolaciju od trenutne-> slijedeće više od 1/2 sekunde while (bioloid.interpolating> 0) {// učinite to dok nismo dosegli našu novu pozu bioloid.interpolateStep (); // premjestiti servomotore, ako je potrebno. kašnjenje (3); } SetPosition (3, 291); // postavljamo položaj spoja 3 na '0' delay (100); // čekamo da se zglob pomakne if (RunCheck == 1) {MenuOptions (); }}
void MovePose2 () {odgoda (100); // preporučena stanka bioloid.loadPose (Pose2); // učitavanje poze iz FLASH -a, u nextPose međuspremnik bioloid.readPose (); // očitavanje u trenutnim pozicijama serva u međuspremnik curPose Serial.println ("#########################"); Serial.println ("Premještanje servomotora na 2. poziciju"); Serial.println ("###########################"); kašnjenje (1000); bioloid.interpolateSetup (1000); // postavljanje za interpolaciju od trenutne-> slijedeće više od 1/2 sekunde while (bioloid.interpolating> 0) {// učinite to dok nismo dosegli našu novu pozu bioloid.interpolateStep (); // premjestiti servomotore, ako je potrebno. kašnjenje (3); } SetPosition (3, 291); // postavljamo položaj spoja 3 na '0' delay (100); // čekamo da se zglob pomakne if (RunCheck == 1) {MenuOptions (); }} void MovePose3 () {delay (100); // preporučena stanka bioloid.loadPose (Pose3); // učitavanje poze iz FLASH -a, u nextPose međuspremnik bioloid.readPose (); // očitavanje na trenutnim pozicijama serva u međuspremniku curPose Serial.println ("#########################"); Serial.println ("Premještanje servomotora na 3. poziciju"); Serial.println ("###########################"); kašnjenje (1000); bioloid.interpolateSetup (1000); // postavljanje za interpolaciju od trenutne-> slijedeće više od 1/2 sekunde while (bioloid.interpolating> 0) {// učinite to dok nismo dosegli našu novu pozu bioloid.interpolateStep (); // premjestiti servomotore, ako je potrebno. kašnjenje (3); } SetPosition (3, 291); // postavljamo položaj spoja 3 na '0' delay (100); // čekamo da se zglob pomakne if (RunCheck == 1) {MenuOptions (); }}
void MovePose4 () {odgoda (100); // preporučena stanka bioloid.loadPose (Pose4); // učitavanje poze iz FLASH -a, u nextPose međuspremnik bioloid.readPose (); // očitavanje na trenutnim pozicijama serva u međuspremniku curPose Serial.println ("#########################"); Serial.println ("Premještanje servomotora na 4. poziciju"); Serial.println ("###########################"); kašnjenje (1000); bioloid.interpolateSetup (1000); // postavljanje za interpolaciju od trenutne-> sljedećih više od 1/2 sekunde while (bioloid.interpolating> 0) {// učinite to dok nismo dosegli našu novu bioloidnu pozu.interpolateStep (); // premjestiti servomotore, ako je potrebno. kašnjenje (3); } SetPosition (3, 291); // postavljamo položaj spoja 3 na '0' delay (100); // čekamo da se zglob pomakne if (RunCheck == 1) {MenuOptions (); }}
void MoveTest () {Serial.println ("###########################"); Serial.println ("Pokretanje testa znakova kretanja"); Serial.println ("###########################"); kašnjenje (500); id = 1; poz = 512; while (id <= SERVOCOUNT) {Serial.print ("Premještanje servo ID -a:"); Serial.println (id);
while (pos> = 312) {SetPosition (id, pos); pos = pos--; kašnjenje (10); }
while (pos <= 512) {SetPosition (id, pos); pos = pos ++; kašnjenje (10); }
// ponavljanje na sljedeći servo ID id = id ++;
} if (RunCheck == 1) {MenuOptions (); }}
void MenuOptions () {Serial.println ("###########################"); Serial.println ("Molimo unesite opciju 1-5 za ponovno pokretanje pojedinačnih testova."); Serial.println ("1) 1. pozicija"); Serial.println ("2) 2. pozicija"); Serial.println ("3) 3. pozicija"); Serial.println ("4) 4. pozicija"); Serial.println ("5) Početna pozicija"); Serial.println ("6) Provjerite napon sustava"); Serial.println ("7) Izvođenje LED ispitivanja"); Serial.println ("8) Opustite servomotore"); Serial.println ("###########################"); }
void RelaxServos () {id = 1; Serial.println ("###########################"); Serial.println ("Opuštajući servomotori".); Serial.println ("###########################"); while (id <= SERVOCOUNT) {Opustite se (id); id = (id ++)%SERVOCOUNT; kašnjenje (50); } if (RunCheck == 1) {MenuOptions (); }}
void LEDTest () {id = 1; Serial.println ("###########################"); Serial.println ("Running LED Test"); Serial.println ("###########################"); while (id <= SERVOCOUNT) {ax12SetRegister (id, 25, 1); Serial.print ("LED UKLJUČEN - Servo ID:"); Serial.println (id); kašnjenje (3000); ax12SetRegister (id, 25, 0); Serial.print ("LED OFF - Servo ID:"); Serial.println (id); kašnjenje (3000); id = id ++; } if (RunCheck == 1) {MenuOptions (); }}
void Grab () {SetPosition (5, 800); // postavljamo položaj zgloba 1 na '0' delay (100); // čekamo da se zglob pomakne
}
Naš smo program temeljili na programu proizvođača PincherTest s nekim velikim izmjenama u slučaju pozicioniranja. Koristili smo poze.h da robot ima pozicije u memoriji. Prvo smo pokušali stvoriti automatsku ruku za igranje s Pixycamom, no zbog problema sa svjetlom i malim zaslonom to se nije moglo dogoditi. Robot ima osnovni početni položaj, nakon što učita program, testirat će sve servomotore koji se nalaze u robotu. Postavili smo poze za gumbe 1-4, pa će se lako zapamtiti. Slobodno koristite program.
Korak 4: Video vodič
Korak 5: Zaključak
Zaključno, robot je za nas zabavan mali projekt i zabavno lupanje s kojim se možemo igrati i eksperimentirati. Potičem vas da ga isprobate i prilagodite.
Preporučeni:
ESP01 Programiranje tiskane pločice: 5 koraka
ESP01 Programiranje tiskane ploče: Nedavno sam morao napisati kôd na svoj ESP01 i odlučio koristiti adapter za prijenos koda na CHIP. Međutim, bilo je potrebno napraviti neke izmjene na adapteru kako bi se kod mogao prenijeti. Odnosno, adapter nije bio uključen
Pločice / ElectroMódulos: 6 koraka
Kružne ploče / ElectroMódulos: Estos ElectroM ó dulos pueden ser una opci ó n viable para comenzar a comprender la electr ó nica, adem á s de que te puedes divertir con los resultados. Para hacer esta ingeniosa idea necesitas: Regla l á piz Clavos sin c
Izrada LEGO pločice: 9 koraka (sa slikama)
Izrada LEGO pločice: Već imamo mnogo različitih vrsta ploča za izradu! Zašto napraviti drugu? Imam više razloga:- To je sjajan način da naučite bilo koga kako radi ploča i osnovama izrade prototipova krugova, a da im ne pokažete dosadan dijagram.- Zabavno je.- LE
Arduino i držač za pločice: 5 koraka (sa slikama)
Nositelj Arduina i Breadboard -a: Ako ste se ikada igrali s Arduinom, znali biste da može postati prilično neuredan, pogotovo ako koristite puno žica, pa sam u posljednje vrijeme radio na projektu koji uključuje Arduino i došao je do trenutak kada sam morao učiniti nešto po tom pitanju. A
Kako programirati PIC MCU s programom PICkit pomoću pločice: 3 koraka
Kako programirati PIC MCU s programom PICkit pomoću pločice: Ne trebaju vam skupi i sofisticirani alati za igru s PIC (ili bilo kojim drugim) mikrokontrolerima. Sve što trebate je matična ploča na kojoj testirate svoj krug i programiranje. Naravno da je potrebna neka vrsta programera i IDE -a. U ovom uputstvu