Përmbajtje:

Lojë Robotike e Krahëve - Kontrolluesi i Smartphone: 6 hapa
Lojë Robotike e Krahëve - Kontrolluesi i Smartphone: 6 hapa

Video: Lojë Robotike e Krahëve - Kontrolluesi i Smartphone: 6 hapa

Video: Lojë Robotike e Krahëve - Kontrolluesi i Smartphone: 6 hapa
Video: Hiq sun i Dalloj FEMIJET 😄 2024, Nëntor
Anonim
Lojë Robotike e Krahëve - Kontrollues i Smartphone
Lojë Robotike e Krahëve - Kontrollues i Smartphone

Përshëndetje !

Këtu është një lojë argëtuese verore: Krahu robotik i kontrolluar nga Smartphone !!

Siç mund ta shihni në Video, ju mund të kontrolloni krahun me disa Joysticks në smartphone tuaj.

Ju gjithashtu mund të ruani një model, që roboti do të riprodhohet në një lak, në mënyrë që të bëjë disa detyra të përsëritura si shembull. Por ky model është i modulueshëm ashtu siç dëshironi !!!!

Behu krijues !

Hapi 1: Materialet

Materiale
Materiale

Këtu mund të shihni materialin që ju nevojitet.

Do t'ju kushtojë rreth 50 € për të ndërtuar këtë krah robotik. Softueri dhe mjetet mund të zëvendësohen, por unë i përdor ato për këtë projekt.

Hapi 2: Shtypni 3D Krahun Robotik

Shtypni 3D Krahun Robotik
Shtypni 3D Krahun Robotik
Shtypni 3D Krahun Robotik
Shtypni 3D Krahun Robotik
Shtypni 3D Krahun Robotik
Shtypni 3D Krahun Robotik

Krahu Robotik u printua 3D (me prusa tonë i3).

Falë faqes në internet "HowtoMechatronics.com", skedarët e tij STL janë të mrekullueshëm për të ndërtuar një krah 3D.

Do të duhen rreth 20 orë për të printuar të gjitha pjesët.

Hapi 3: Montimi elektronik

Montimi elektronik
Montimi elektronik

Montimi është i ndarë në 2 pjesë:

Një pjesë elektronike, ku arduino është e lidhur me servos nga kunjat dixhitale, dhe me pajisjen Bluetooth (Rx, Tx).

Një pjesë e energjisë, ku servot mundësohen me 2 karikues telefoni (5V, 2A max).

Hapi 4: Aplikimi për smartphone

Aplikimi për smartphone
Aplikimi për smartphone

Aplikacioni u bë në shpikësin e aplikacionit 2. Ne përdorim 2 Joystick për të kontrolluar 4 Servos dhe 2 Butona të tjerë për të kontrolluar Mbërthimin përfundimtar.

Ne lidhim krahun dhe smartphone-in së bashku duke përdorur një modul Bluetooth (HC-06).

Së fundi, një mënyrë kursimi i lejon përdoruesit të kursejë deri në 9 pozicione për Krahun.

Krahu pastaj do të kalojë në një mënyrë automatike, ku ai do të riprodhojë pozicionet e ruajtura.

Hapi 5: Kodi Arduino

Kodi Arduino
Kodi Arduino
Kodi Arduino
Kodi Arduino

// 08/19 - Smartphone Robotic Arm i kontrolluar

#përfshi #përcakto E VUERTET trueN E VRTET #përcaktoni FALSE të rreme // ******************* DEKLARATA ***************** ***********

fjala rep; // mot envoyé du module Arduino ose smartphone

int chiffre_final = 0; int cmd = 3; // variable commande du servo moteur (troisième fil (portokalli, jaune)) int cmd1 = 5; // servo1 int cmd2 = 9; // servo2 int cmd3 = 10; // servo3 // int cmd4 = 10; // servo4 int cmd5 = 11; // pince int activ_saving = 0; Servo moteur; // në shërbimin définit notre Servo moteur1; Servo moteur2; Servo moteur3; // Servo moteur4; Servo moteur5; int step_angle_mini = 4; int_kapi = 3; kënd int, kënd 1, kënd 3, kënd 5, kënd 2; // kënd int pas; int r, r1, r2, r3; int regjistrues; fin boolean = FALSE; fin boolean1 = FALSE; fin boolean2 = FALSE; fin boolean3 = FALSE; fin boolean4 = FALSE; fjala w; // ndryshues i dërguar i smartphone -it ose modulit Arduino int sauvegarde_positions1 [5]; int sauvegarde_pozicionet2 [5]; int sauvegarde_pozicionet3 [5]; int sauvegarde_pozicionet4 [5]; int sauvegarde_pozicionet5 [5]; int sauvegarde_pozicionet6 [5]; int sauvegarde_pozicionet7 [5]; int sauvegarde_positions8 [5]; int sauvegarde_pozicionet9 [5];

// këndi int; // këndi i rrotullimit (0 në 180)

// ******************* SETUP ************************* ******** void setup () {sauvegarde_positions1 [0] = sauvegarde_positions1 [1] = sauvegarde_positions1 [2] = sauvegarde_positions1 [3] = sauvegarde_positions1 [4] = 0; sauvegarde_positions2 [0] = sauvegarde_positions2 [1] = sauvegarde_positions2 [2] = sauvegarde_positions2 [3] = sauvegarde_positions2 [4] = 0; sauvegarde_positions3 [0] = sauvegarde_positions3 [1] = sauvegarde_positions3 [2] = sauvegarde_positions3 [3] = sauvegarde_positions3 [4] = 0; sauvegarde_positions4 [0] = sauvegarde_positions4 [1] = sauvegarde_positions4 [2] = sauvegarde_positions4 [3] = sauvegarde_positions4 [4] = 0; sauvegarde_positions5 [0] = sauvegarde_positions5 [1] = sauvegarde_positions5 [2] = sauvegarde_positions5 [3] = sauvegarde_positions5 [4] = 0; sauvegarde_positions6 [0] = sauvegarde_positions6 [1] = sauvegarde_positions6 [2] = sauvegarde_positions6 [3] = sauvegarde_positions6 [4] = 0; sauvegarde_positions7 [0] = sauvegarde_positions7 [1] = sauvegarde_positions7 [2] = sauvegarde_positions7 [3] = sauvegarde_positions7 [4] = 0; sauvegarde_positions8 [0] = sauvegarde_positions8 [1] = sauvegarde_positions8 [2] = sauvegarde_positions8 [3] = sauvegarde_positions8 [4] = 0; sauvegarde_positions9 [0] = sauvegarde_positions9 [1] = sauvegarde_positions9 [2] = sauvegarde_positions9 [3] = sauvegarde_positions9 [4] = 0; moteur.shtoj (cmd); // on relie l'objet au pin de commande moteur1.attach (cmd1); moteur2.attach (cmd2); moteur3.tash (cmd3); // moteur4.tash (cmd4); moteur5.shtoj (cmd5); moteur.shkruaj (6); kënd = 6; moteur1.shkruaj (100); kënd1 = 100; moteur2.shkruaj (90); moteur3.shkruaj (90); //moteur4.shkruaj (12); moteur5.shkruaj (90); kënd = 6; kënd1 = 100; kënd2 = 90; kënd3 = 90; kënd5 = 90; Serial.filloj (9600); // permettra de communiquer au module Bluetooth} // ******************* BOUCLE ****************** ***************** void loop () {

// Serial.print ("kënd");

//Serial.print(angle);Serial.print ("\ t"); Serial.print (angle1); Serial.print ("\ t"); Serial.print (angle2); Serial.print ("\ t "); Serial.print (angle3); Serial.print (" / t "); Serial.print (angle5); Serial.print (" / n ");

//Serial.print("angle ");

int i; w = marrës (); // për marrjen e informacionit nga smartphone, ndryshues i ndryshueshëm w (w) {rasti 1: TouchDown_Release (); pushim; rasti 2: TouchDown_Grab (); pushim; rasti 3: Baza_Rotacioni (); pushim; rasti 4: Baza_AntiRotation (); pushim; rasti 5: Rrotullimi i belit (); pushim; rasti 6: Waist_AntiRotation (); pushim; rasti 7: Arma e tretë_Rrotullimi (); pushim; rasti 8: Arma e tretë_AntiRotation (); pushim; rasti 9: Fourth_Arm_Rotation (); pushim; rasti 10: Fourth_Arm_AntiRotation (); pushim; // rasti 11: Fryth_Arm_Rotation (); pushim; // rasti 12: Fifth_Arm_AntiRotation (); pushim; rasti 21: Serial.print ("butoni i rastit 1"); chiffre_final = 1; sauvegarde_positions1 [0] = kënd; sauvegarde_positions1 [1] = angle1; sauvegarde_positions1 [2] = angle2; sauvegarde_positions1 [3] = angle3] = angle5; Serial.println (sauvegarde_positions1 [1]); Serial.println (sauvegarde_positions1 [2]); Serial.println (sauvegarde_positions1 [3]); Serial.println (sauvegarde_positions1 [4]); pushim; rasti 22: chiffre_final = 2; sauvegarde_positions2 [0] = angle; sauvegarde_positions2 [1] = angle1; sauvegarde_positions2 [2] = angle2; sauvegarde_positions2 [3] = angle3; sauvegarde_positions2 [4] = angle5; pushim; rasti 23: chiffre_final = 3; sauvegarde_positions3 [0] = angle; sauvegarde_positions3 [1] = angle1; sauvegarde_positions3 [2] = angle2; sauvegarde_positions3 [3] = angle3; sauvegarde_positions3 [4] = angle5; rasti 24: chiffre_final = 4; sauvegarde_positions4 [0] = angle; sauvegarde_positions4 [1] = angle1; sauvegarde_positions4 [2] = angle2; sauvegarde_positions4 [3] = angle3; sauvegarde_positions4 [4] = angle5; pushim; rasti 25: chiffre_final = 5; sauvegarde_positions5 [0] = angle; sauvegarde_positions5 [1] = angle1; sauvegarde_positions5 [2] = angle2; sauvegarde_positions5 [3] = angle3; sauvegarde_positions5 [4] = angle5; pushim; rasti 26: chiffre_final = 6; sauvegarde_positions6 [0] = angle; sauvegarde_positions6 [1] = angle1; sauvegarde_positions6 [2] = angle2; sauvegarde_positions6 [3] = angle3; sauvegarde_positions6 [4] = angle5; pushim; rasti 27: chiffre_final = 7; sauvegarde_positions7 [0] = angle; sauvegarde_positions7 [1] = angle1; sauvegarde_positions7 [2] = angle2; sauvegarde_positions7 [3] = angle3; sauvegarde_positions7 [4] = angle5; pushim; rasti 28: chiffre_final = 8; sauvegarde_positions8 [0] = angle; sauvegarde_positions8 [1] = angle1; sauvegarde_positions8 [2] = angle2; sauvegarde_positions8 [3] = angle3; sauvegarde_positions8 [4] = angle5; pushim; rasti 29: chiffre_final = 9; sauvegarde_positions9 [0] = angle; sauvegarde_positions9 [1] = angle1; sauvegarde_positions9 [2] = angle2; sauvegarde_positions9 [3] = angle3; sauvegarde_positions9 [4] = angle5; pushim;

rasti 31: Serial.print ("31"); activ_saving = 1; chiffre_final = 0; pushim; // FILLO

rasti 33: Serial.print ("33"); activ_saving = 0; pushim; // BUTONI RUAJ parazgjedhje: pushim; } if (w == 32) {Serial.print ("\ nRiprodho / nFinalja e çifres:"); Serial.print (chiffre_final); Serial.print ("\ n Pozicioni Sauvegarde 1: / n"); për (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); Serial.print ("\ t");} Serial.print ("\ / Sauvegarde position 2: / n"); për (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); Serial.print ("\ t");} Serial.print ("\ / Sauvegarde position 3: / n"); për (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions3 ); Serial.print ("\ t");} për (i = 1; i <= chiffre_final; i ++) {Serial print ("\ n / n FILLIM / nLapë:"); Serial.print (i); Serial.print ("\ n"); kaloni (i) {rasti 1: goto_moteur (*(sauvegarde_positions1))); vonesë (200); goto_moteur1 (*(sauvegarde_positions1+1)); vonesë (200); goto_moteur2 (*(sauvegarde_positions1+2)); vonesë (200); goto_moteur3 (*(sauvegarde_positions1+3)); vonesë (200); goto_moteur5 (*(sauvegarde_positions1+4)); vonesë (200); pushim; rasti 2: goto_moteur (*(sauvegarde_positions2)); vonesë (200); goto_moteur1 (*(sauvegarde_positions2+1)); vonesë (200); goto_moteur2 (*(sauvegarde_positions2+2)); vonesë (200); goto_moteur3 (*(sauvegarde_positions2+3)); vonesë (200); goto_moteur5 (*(sauvegarde_positions2+4)); vonesë (200); pushim; rasti 3: goto_moteur (*(sauvegarde_positions3)); vonesë (200); goto_moteur1 (*(sauvegarde_positions3+1)); vonesë (200); goto_moteur2 (*(sauvegarde_positions3+2)); vonesë (200); goto_moteur3 (*(sauvegarde_positions3+3)); vonesë (200); goto_moteur5 (*(sauvegarde_positions3+4)); vonesë (200); pushim; rasti 4: goto_moteur (*(sauvegarde_positions4)); vonesë (200); goto_moteur1 (*(sauvegarde_positions4+1)); vonesë (200); goto_moteur2 (*(sauvegarde_positions4+2)); vonesë (200); goto_moteur3 (*(sauvegarde_positions4+3)); vonesë (200); goto_moteur5 (*(sauvegarde_positions4+4)); vonesë (200); pushim; rasti 5: goto_moteur (*(sauvegarde_positions5)); vonesë (200); goto_moteur1 (*(sauvegarde_positions5+1)); vonesë (200); goto_moteur2 (*(sauvegarde_positions5+2)); vonesë (200); goto_moteur3 (*(sauvegarde_positions5+3)); vonesë (200); goto_moteur5 (*(sauvegarde_positions5+4)); vonesë (200); pushim; rasti 6: goto_moteur (*(sauvegarde_positions6)); vonesë (200); goto_moteur1 (*(sauvegarde_positions6+1)); vonesë (200); goto_moteur2 (*(sauvegarde_positions6+2)); vonesë (200); goto_moteur3 (*(sauvegarde_positions6+3)); vonesë (200); goto_moteur5 (*(sauvegarde_positions6+4)); vonesë (200); pushim; rasti 7: goto_moteur (*(sauvegarde_positions7)); vonesë (200); goto_moteur1 (*(sauvegarde_positions7+1)); vonesë (200); goto_moteur2 (*(sauvegarde_positions7+2)); vonesë (200); goto_moteur3 (*(sauvegarde_positions7+3)); vonesë (200); goto_moteur5 (*(sauvegarde_positions7+4)); vonesë (200); pushim; rasti 8: goto_moteur (*(sauvegarde_positions8)); vonesë (200); goto_moteur1 (*(sauvegarde_positions8+1)); vonesë (200); goto_moteur2 (*(sauvegarde_positions8+2)); vonesë (200); goto_moteur3 (*(sauvegarde_positions8+3)); vonesë (200); goto_moteur5 (*(sauvegarde_positions8+4)); vonesë (200); pushim; rasti 9: goto_moteur (*(sauvegarde_positions9)); vonesë (200); goto_moteur1 (*(sauvegarde_positions9+1)); vonesë (200); goto_moteur2 (*(sauvegarde_positions9+2)); vonesë (200); goto_moteur3 (*(sauvegarde_positions9+3)); vonesë (200); goto_moteur5 (*(sauvegarde_positions9+4)); vonesë (200); pushim; } Serial.print ("\ n ********************* FIN RIPRODUCE ***************** / n "); vonesë (500); }} /*Serial.print ("debutimi / n"); Serial.print (sauvegarde_positions1 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [2]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [4]); Serial.print ("\ n"); Serial.print (sauvegarde_positions2 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [2]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [4]); Serial.print ("\ n"); Serial.print (sauvegarde_positions3 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [2]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [4]); Serial.print ("\ n"); Serial.print (sauvegarde_positions4 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [2]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [4]); Serial.print ("\ n");

Serial.print ("\ nfin / n");*/

vonesë (100); } // ************************** FONCTIONS ***************** ******************

fjalë recevoir () {// fonction permettant de recevoir l'information du smartphone

nëse (Serial.disponueshëm ()) {w = Serial.lexim ();

Serial.flush ();

kthehu w; }}

void goto_moteur (int angle_destination)

{ndërsa (këndi_këndi i destinacionit+këndi i hapit) {Serial.print ("\ n -------------- * * * * * * -------------- ---- / n "); Serial.print ("angle_destination = / t"); Serial.print (destinacioni_kënd); Serial.print ("\ n kënd1 = / t"); Serial.print (kënd); nëse (këndi_këndi i_destinimit + këndi i hapit) {këndi = këndi + këndi i hapit; moteur.shkruaj (këndi);} vonesë (100); } moteur.write (këndi_destinimi); } void goto_moteur1 (int angle_destination) {ndërsa (angle_destination angle11+step_angle) {Serial.print ("\ n -------------- * * * * * * ------- ----------- / n "); Serial.print ("angle_destination = / t"); Serial.print (destinacioni_kënd); Serial.print ("\ n angle2 = / t"); Serial.print (angle1); nëse (këndi_këndi i destinimit1 +këndi i hapit) {këndi1 += këndi i hapit; moteur1.shkruaj (këndi1);;} vonesë (100); } moteur1.write (këndi_destinimi); } void goto_moteur2 (int angle_destination) {

ndërsa (këndi_këndi i përcaktimit2+këndi i hapit)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("angle_destination = / t"); Serial.print (kendi_destinimi); Serial.print ("\ n angle3 = / t"); Serial.print (angle2); nëse (këndi_këndi i destinimit2 +këndi i hapit) {këndi2 += këndi i hapit; moteur2.shkruaj (këndi2);} vonesë (100); } moteur2.write (këndi_destinimi); } void goto_moteur3 (int angle_destination) {

ndërsa (këndi_këndi i destinimit3+këndi i hapit)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("angle_destination = / t"); Serial.print (kendi_destinimi); Serial.print ("\ n angle4 = / t"); Serial.print (angle3); nëse (këndi_këndi i destinimit3 +këndi i hapit) {këndi3 += këndi i hapit; moteur3.shkruaj (këndi3);} vonesë (100); } moteur3.write (këndi_destinimi); } void goto_moteur5 (int angle_destination) {

ndërsa (këndi_këndi i destinimit5+këndi i hapit)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("angle_destination = / t"); Serial.print (kendi_destinimi); Serial.print ("\ n angle5 = / t"); Serial.print (angle5); nëse (këndi_këndi i destinimit5 +këndi i hapit) {këndi5 += këndi i hapit; moteur5.shkruaj (këndi5);} vonesë (100); } moteur5.write (këndi_destinimi); }

i pavlefshëm TouchDown_Release () // TouchDown Button Release

{if (angle5 <180) {angle5 = angle5+step_angle_mini; } moteur5.shkruaj (këndi5); }

i pavlefshëm TouchDown_Grab () // Kapni Butonin TouchDown

{if (angle5> 0) {angle5 = angle5-step_angle_mini; } moteur5.shkruaj (këndi5); } void Base_Rotation () {if (angle 0) {angle = angle-step_angle; } tjetër kënd = 0; moteur.shkruaj (kënd); } void Waist_Rotation () {if (angle1 20) {angle1 = angle1-step_angle; } tjetër kënd1 = 20; moteur1.shkruaj (këndi 1); } void Third_Arm_Rotation () {if (angle2 0) {angle2 = angle2-step_angle; } moteur2.shkruaj (këndi2); } void Fourth_Arm_Rotation () {if (angle3 = 0) {angle3 = angle3-step_angle_mini; } moteur3.shkruaj (këndi3); }

Hapi 6: Kjo është ajo

Faleminderit për shikimin, shpresoj të keni vlerësuar!

Nëse ju pëlqeu ky Instructable, me siguri mund të na vizitoni për më shumë! =)

Recommended: