Taula de continguts:
- Pas 1: equipament
- Pas 2: Configuració d'Arduino
- Pas 3: Programa final
- Pas 4: Guia de vídeo
- Pas 5: Conclusió
Vídeo: Rajoles de piano que toquen el braç del robot: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
El grup està format per 2 enginyers d'automatització d'UCN, que van tenir una idea brillant que estem motivats a fer i desenvolupar. La idea es basa en una placa Arduino que controla un braç robòtic. La placa Arduino és el cervell de l’operació i, a continuació, l’actuador de l’operació, el braç robotitzat, farà el que necessiti. L’explicació més profunda arribarà més endavant.
Pas 1: equipament
Braç del robot:
Phantomx Pincher Robot Arm Kit Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
Programari per al robot- https://www.arduino.cc/en/Main/OldSoftwareRelease… Càmera de detecció de color:
Càmera CMUcam5 Pixy - (https://charmedlabs.com/default/pixy-cmucam5/)
Programari: PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
Pas 2: Configuració d'Arduino
Podeu veure la configuració al tauler aquí, que és molt fàcil.
A l’esquerra hi ha la font d’alimentació.
El central és per al primer servo, que més endavant es connecta als altres servos, servo per servo.
La part inferior és on controlem la placa des d’un PC o portàtil, que té una entrada USB a l’altre extrem.
Pas 3: Programa final
||| PROGRAMA |||
#incloure
#include #include "poses.h" #include // Biblioteca Pixy #include
#define POSECOUNT 5
BioloidController bioloid = BioloidController (1000000);
const int SERVOCOUNT = 5; int id; int pos; IDCheck booleà; RunCheck booleà;
void setup () {pinMode (0, OUTPUT); ax12SetRegister2 (1, 32, 50); // establir el número 1 de registre conjunt 32 a velocitat 50. ax12SetRegister2 (2, 32, 50); // establir número 2 de registre conjunt 32 a velocitat 50. ax12SetRegister2 (3, 32, 50); // estableix el número 3 de l’articulació registre 32 a la velocitat 50. ax12SetRegister2 (4, 32, 50); // estableix el número 4 de l’articulació registre 32 a la velocitat 50. ax12SetRegister2 (5, 32, 100); // estableix el registre número 5 de l’articulació 32 a la velocitat 100. // inicialitza les variables id = 1; pos = 0; IDCheck = 1; RunCheck = 0; // obriu el port sèrie Serial.begin (9600); retard (500); Serial.println ("#############################"); Serial.println ("S'ha establert la comunicació en sèrie");
// Comproveu la tensió de la bateria Lipo CheckVoltage ();
// Escaneja els servos, torna la posició MoveTest (); MoveHome (); MenuOptions (); RunCheck = 1; }
void loop () {// llegir el sensor: int inByte = Serial.read ();
commutador (inByte) {
cas '1': MovePose1 (); trencar;
cas '2': MovePose2 (); trencar; cas '3': MovePose3 (); trencar;
cas '4': MovePose4 (); trencar;
cas '5': MoveHome (); trencar; cas '6': Grab (); trencar;
cas '7': LEDTest (); trencar;
cas '8': RelaxServos (); trencar; }}
void CheckVoltage () {// espera i, a continuació, comprova la tensió flotant de la tensió (seguretat LiPO) = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; Serial.println ("#############################"); Serial.print ("Voltatge del sistema:"); Serial.print (voltatge); Serial.println ("volts"); if (tensió 10,0) {Serial.println ("Nivells de tensió nominal"); } if (RunCheck == 1) {MenuOptions (); } Serial.println ("############################"); }
void MoveHome () {delay (100); // pausa recomanada bioloid.loadPose (Inici); // carregueu la pose de FLASH al buffer nextPose bioloid.readPose (); // llegir en les posicions servo actuals al buffer curPose Serial.println ("#############################"); Serial.println ("Moure servos a la posició inicial"); Serial.println ("#############################"); retard (1000); bioloid.interpolateSetup (1000); // configuració per a la interpolació de current-> següent més de 1/2 segon mentre (bioloid.interpolating> 0) {// feu-ho mentre no hem arribat a la nostra nova posició bioloid.interpolateStep (); // moure servos, si cal. retard (3); } if (RunCheck == 1) {MenuOptions (); }}
void MovePose1 () {delay (100); // pausa recomanada bioloid.loadPose (Pose1); // carregueu la pose de FLASH al buffer nextPose bioloid.readPose (); // llegir en les posicions servo actuals al buffer curPose Serial.println ("#############################"); Serial.println ("Moure servos a la 1a posició"); Serial.println ("#############################"); retard (1000); bioloid.interpolateSetup (1000); // configuració per a la interpolació de current-> següent més de 1/2 segon mentre (bioloid.interpolating> 0) {// feu-ho mentre no hem arribat a la nostra nova posició bioloid.interpolateStep (); // moure servos, si cal. retard (3); } SetPosition (3, 291); // estableix la posició de la junta 3 a un retard de '0' (100); // espera que la junta es mogui si (RunCheck == 1) {MenuOptions (); }}
void MovePose2 () {delay (100); // pausa recomanada bioloid.loadPose (Pose2); // carregueu la pose de FLASH al buffer nextPose bioloid.readPose (); // llegir en les posicions servo actuals al buffer curPose Serial.println ("#############################"); Serial.println ("Moure servos a la 2a posició"); Serial.println ("#############################"); retard (1000); bioloid.interpolateSetup (1000); // configuració per a la interpolació de current-> següent més de 1/2 segon mentre (bioloid.interpolating> 0) {// feu-ho mentre no hem arribat a la nostra nova posició bioloid.interpolateStep (); // moure servos, si cal. retard (3); } SetPosition (3, 291); // estableix la posició de la junta 3 a un retard de '0' (100); // espera que la junta es mogui si (RunCheck == 1) {MenuOptions (); }} void MovePose3 () {delay (100); // pausa recomanada bioloid.loadPose (Pose3); // carregueu la pose de FLASH al buffer nextPose bioloid.readPose (); // llegir en les posicions servo actuals al buffer curPose Serial.println ("#############################"); Serial.println ("Moure servos a la 3a posició"); Serial.println ("#############################"); retard (1000); bioloid.interpolateSetup (1000); // configuració per a la interpolació de current-> següent més de 1/2 segon mentre (bioloid.interpolating> 0) {// feu-ho mentre no hem arribat a la nostra nova posició bioloid.interpolateStep (); // moure servos, si cal. retard (3); } SetPosition (3, 291); // estableix la posició de la junta 3 a un retard de '0' (100); // espera que la junta es mogui si (RunCheck == 1) {MenuOptions (); }}
void MovePose4 () {delay (100); // pausa recomanada bioloid.loadPose (Pose4); // carregueu la pose de FLASH al buffer nextPose bioloid.readPose (); // llegir en les posicions actuals del servo al buffer curPose Serial.println ("#############################"); Serial.println ("Moure servos a la 4a posició"); Serial.println ("#############################"); retard (1000); bioloid.interpolateSetup (1000); // configuració per a la interpolació de current-> següent més de 1/2 segon mentre (bioloid.interpolating> 0) {// feu-ho mentre no hem arribat a la nostra nova posició bioloid.interpolateStep (); // moure servos, si cal. retard (3); } SetPosition (3, 291); // estableix la posició de la junta 3 a un retard de '0' (100); // espera que la junta es mogui si (RunCheck == 1) {MenuOptions (); }}
void MoveTest () {Serial.println ("############################"); Serial.println ("Inicialització de la prova del signe del moviment"); Serial.println ("#############################"); retard (500); id = 1; pos = 512; while (id <= SERVOCOUNT) {Serial.print ("Moving Servo ID:"); Serial.println (id);
while (pos> = 312) {SetPosition (id, pos); pos = pos--; retard (10); }
while (pos <= 512) {SetPosition (id, pos); pos = pos ++; retard (10); }
// itera al següent ID de serv id = id ++;
} if (RunCheck == 1) {MenuOptions (); }}
void MenuOptions () {Serial.println ("############################"); Serial.println ("Introduïu l'opció 1-5 per tornar a executar proves individuals."); Serial.println ("1) 1a posició"); Serial.println ("2) 2a posició"); Serial.println ("3) 3a posició"); Serial.println ("4) 4a posició"); Serial.println ("5) Posició inicial"); Serial.println ("6) Comproveu la tensió del sistema"); Serial.println ("7) Realitza la prova del LED"); Serial.println ("8) Relax Servos"); Serial.println ("#############################"); }
void RelaxServos () {id = 1; Serial.println ("#############################"); Serial.println ("Servos relaxants"); Serial.println ("#############################"); while (id <= SERVOCOUNT) {Relax (id); id = (id ++)% SERVOCOUNT; retard (50); } if (RunCheck == 1) {MenuOptions (); }}
void LEDTest () {id = 1; Serial.println ("#############################"); Serial.println ("Prova LED en execució"); Serial.println ("#############################"); while (id <= SERVOCOUNT) {ax12SetRegister (id, 25, 1); Serial.print ("LED ON - ID del servidor:"); Serial.println (id); retard (3000); ax12SetRegister (identificador, 25, 0); Serial.print ("LED apagat: identificador de servidor:"); Serial.println (id); retard (3000); id = id ++; } if (RunCheck == 1) {MenuOptions (); }}
void Grab () {SetPosition (5, 800); // Estableix la posició de la junta 1 a "0" de retard (100); // espera que la junta es mogui
}
Hem basat el nostre programa en el programa PincherTest dels fabricants amb alguns canvis importants en el cas del posicionament. Hem utilitzat poses.h perquè el robot tingui les posicions a la memòria. En primer lloc, vam intentar que el nostre braç de joc amb Pixycam fos automàtic, però a causa de la llum i els petits problemes de pantalla, això no podia passar. El robot té una posició inicial bàsica, després de carregar el programa, provarà tots els servos que es troben al robot. Hem establert les postures dels botons 1-4, de manera que serà fàcil de recordar. No dubteu a utilitzar el programa.
Pas 4: Guia de vídeo
Pas 5: Conclusió
En conclusió, el robot és un petit projecte divertit per a nosaltres i un divertit joc per jugar i experimentar. Us animo a provar-lo i personalitzar-lo també.
Recomanat:
Control del braç del robot amb TLV493D, joystick i Arduino: 3 passos
Control del braç del robot amb TLV493D, Joystick And, Arduino: un controlador alternatiu per al vostre robot amb un sensor TLV493D, un sensor magnètic amb 3 graus de llibertat (x, y, z) amb els quals podreu controlar els vostres nous projectes amb comunicació I2C al vostre microcontroladors i placa electrònica que Bast P
Mur interactiu de rajoles LED (més fàcil del que sembla): 7 passos (amb imatges)
Paret de rajoles LED interactiu (més fàcil del que sembla): en aquest projecte vaig construir una pantalla de paret LED interactiva amb peces impreses Arduino i 3D. La inspiració d’aquest projecte va venir parcialment de rajoles Nanoleaf. Volia arribar a la meva pròpia versió que no només fos més assequible, sinó també mo
BRAÇ ROBOTTIC Xbox 360 [ARDUINO]: BRAÇ AXIOM: 4 passos
BRAÇ ROBOTTIC Xbox 360 [ARDUINO]: BRAÇ AXIOM:
Arduino - Rajoles de piano: 16 passos (amb imatges)
Arduino - Piano Tiles: Hola gent d’Internet, es tractarà de com fer el que DEFINITIVAMENT no és una arrencada d’un joc mòbil en un arduino uno r3.so per començar, necessitareu totes les parts, que són les següents ! 1x Arduino Uno r3 (42 dòlars) 2x Escut del teclat LCD (19 dòlars cadascun) 5
COM MUNTAR UN IMPRESSIONANT BRAÇ DE ROBOT DE FUSTA (PART3: BRAÇ DE ROBOT) - BASAT AL MICRO: BITN: 8 passos
COM MUNTAR UN BRAÇ IMPRESSIONANT DE ROBOT DE FUSTA (PART3: BRAÇ DE ROBOT) - BASAT AL MICRO: BITN: El següent procés d'instal·lació es basa en la finalització del mode d'obstacles per evitar. El procés d'instal·lació de la secció anterior és el mateix que el procés d'instal·lació en mode de seguiment de línia. A continuació, donem un cop d'ull a la forma final d'A