Sisällysluettelo:

Robottivarsipeli - älypuhelimen ohjain: 6 vaihetta
Robottivarsipeli - älypuhelimen ohjain: 6 vaihetta

Video: Robottivarsipeli - älypuhelimen ohjain: 6 vaihetta

Video: Robottivarsipeli - älypuhelimen ohjain: 6 vaihetta
Video: PARAS LAPSUUDEN PELI - Age Of War | ILMAINEN PUHELINPELI! 2024, Heinäkuu
Anonim
Robotic Arm Game - älypuhelimen ohjain
Robotic Arm Game - älypuhelimen ohjain

Hei !

Tässä hauska kesäpeli: Älypuhelimen ohjaama robotti käsivarsi !!

Kuten videosta näet, voit ohjata käsivarsia joillakin älypuhelimen ohjaussauvoilla.

Voit myös tallentaa kuvion, jonka robotti toistaa silmukassa, jotta voidaan suorittaa esimerkiksi toistuvia tehtäviä. Mutta tämä malli on muokattavissa haluamallasi tavalla !!!!

Ole luova !

Vaihe 1: Materiaalit

Materiaalit
Materiaalit

Täältä näet tarvitsemasi materiaalin.

Tämän robottivarren rakentaminen maksaa noin 50 €. Ohjelmistot ja työkalut voidaan vaihtaa, mutta käytin niitä tässä projektissa.

Vaihe 2: 3D -tulosta robotti

3D -tulosta robotti
3D -tulosta robotti
3D -tulosta robotti
3D -tulosta robotti
3D -tulosta robotti
3D -tulosta robotti

Robottivarsi painettiin 3D -tulostimella (prusa i3: n kanssa).

HowtoMechatronics.com -sivuston ansiosta hänen STL -tiedostonsa ovat mahtavia 3D -käsivarren rakentamiseksi.

Kaikkien kappaleiden tulostaminen kestää noin 20 tuntia.

Vaihe 3: Elektroninen asennus

Elektroninen montaasi
Elektroninen montaasi

Kokoonpano on jaettu kahteen osaan:

Elektroninen osa, jossa arduino on kytketty servoihin digitaalisilla nastoilla ja Bluetooth -laitteella (Rx, Tx).

Virtaosa, jossa servot saavat virtaa kahdella puhelinlaturilla (5V, enintään 2A).

Vaihe 4: Älypuhelinsovellus

Älypuhelinsovellus
Älypuhelinsovellus

Sovellus tehtiin sovelluksen keksijällä 2. Käytämme 2 ohjaussauvaa 4 servon ohjaamiseen ja 2 muuta painiketta lopullisen otteen hallintaan.

Yhdistämme Arm ja Smartphone yhteen Bluetooth-moduulin (HC-06) avulla.

Lopuksi säästötila sallii käyttäjän tallentaa jopa 9 asentoa varteen.

Käsi siirtyy sitten automaattitilaan, jossa hän toistaa tallennetut sijainnit.

Vaihe 5: Arduino -koodi

Arduinon koodi
Arduinon koodi
Arduinon koodi
Arduinon koodi

// 08/19 - Robottivarsi Älypuhelinohjattu

#sisällytä #määrittele TOSI tosi #määritä EPÄTOSI väärin ***********

sana edustaja; // mot envoyé du du Module Arduino au smartphone

int chiffre_final = 0; int cmd = 3; // muuttuja commande du servo moteur (troisième fil (oranssi, jaune)) int cmd1 = 5; // servo1 int cmd2 = 9; // servo2 int cmd3 = 10; // servo3 // int cmd4 = 10; // servo4 int cmd5 = 11; // pince int active_saving = 0; Servomoottori; // on définit notre servomoteur Servo moteur1; Servomoottori2; Servomoottori3; // Servomoottori4; Servomoottori5; int step_angle_mini = 4; int askel_kulma = 3; int kulma, kulma1, kulma3, kulma5, kulma2; // kulma int pas; int r, r1, r2, r3; int rekisteröijä; boolean fin = EPÄTOSI; boolean fin1 = EPÄTOSI; boolean fin2 = EPÄTOSI; boolean fin3 = EPÄTOSI; boolean fin4 = EPÄTOSI; sana w; // muuttuja envoyé du smartphone au module Arduino int sauvegarde_positions1 [5]; int sauvegarde_positions2 [5]; int sauvegarde_positions3 [5]; int sauvegarde_positions4 [5]; int sauvegarde_positions5 [5]; int sauvegarde_positions6 [5]; int sauvegarde_positions7 [5]; int sauvegarde_positions8 [5]; int sauvegarde_positions9 [5];

// int kulma; // kääntökulma (0-180)

//********************PERUSTAA*************************** ******** 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.attach (cmd); // on relie l'objet au pin de commande moteur1.attach (cmd1); moteur2.attach (cmd2); moteur3.attach (cmd3); // moteur4.attach (cmd4); moteur5.attach (cmd5); moteur.write (6); kulma = 6; moteur1.write (100); kulma1 = 100; moteur2.write (90); moteur3.write (90); //moteur4.write (12); moteur5.write (90); kulma = 6; kulma1 = 100; kulma2 = 90; kulma3 = 90; kulma5 = 90; Sarja.alku (9600); // Bluetooth -moduulin tiedonsiirtoyksikkö} // ******************* BOUCLE ****************** ***************** void loop () {

// Serial.print ("kulma");

//Sarjan.juliste (kulma);Sarjanjälki ("\ t"); Sarjajälki (kulma1); Sarjajälki ("\ t"); Sarjajälki (kulma2); Sarjajälki ("\ t "); Serial.print (kulma3); Serial.print (" / t "); Serial.print (kulma5); Serial.print (" / n ");

//Sarja.juliste ("kulma ");

int i; w = vastaanotto (); // älypuhelimen vastaanottotiedot, muuttuva w -kytkin (w) {tapaus 1: TouchDown_Release (); break; tapaus 2: TouchDown_Grab (); break; tapaus 3: Base_Rotation (); break; tapaus 4: Base_AntiRotation (); break; tapaus 5: Vyötärön kierto (); tauko; tapaus 6: Waist_AntiRotation (); tauko; tapaus 7: Third_Arm_Rotation (); break; tapaus 8: Third_Arm_AntiRotation (); break; tapaus 9: Fourth_Arm_Rotation (); break; tapaus 10: Fourth_Arm_AntiRotation (); break; // tapaus 11: Fifth_Arm_Rotation (); break; // tapaus 12: Fifth_Arm_AntiRotation (); break; tapaus 21: Serial.print ("tapauspainike 1"); chiffre_final = 1; sauvegarde_positions1 [0] = kulma; sauvegarde_positions1 [1] = kulma1; sauvegarde_positions1 [2] = kulma2; sauvegarde_positions1 [3] = kulma3; sauvegarde_positions1 [4] = kulma5; Serial.println (sauvegarde_positions1 [1]); Serial.println (sauvegarde_positions1 [2]); Serial.println (sauvegarde_positions1 [3]); Serial.println (sauvegarde_positions1 [4]); tauko; tapaus 22: chiffre_final = 2; sauvegarde_positions2 [0] = kulma; sauvegarde_positions2 [1] = kulma1; sauvegarde_positions2 [2] = kulma2; sauvegarde_positions2 [3] = kulma3; sauvegarde_positions2 [4] = kulma5; tauko; tapaus 23: chiffre_final = 3; sauvegarde_positions3 [0] = kulma; sauvegarde_positions3 [1] = kulma1; sauvegarde_positions3 [2] = kulma2; sauvegarde_positions3 [3] = kulma3; sauvegarde_positions3 [4] = kulma5; tauko; tapaus 24: chiffre_final = 4; sauvegarde_positions4 [0] = kulma; sauvegarde_positions4 [1] = kulma1; sauvegarde_positions4 [2] = kulma2; sauvegarde_positions4 [3] = kulma3; sauvegarde_positions4 [4] = kulma5; tauko; tapaus 25: chiffre_final = 5; sauvegarde_positions5 [0] = kulma; sauvegarde_positions5 [1] = kulma1; sauvegarde_positions5 [2] = kulma2; sauvegarde_positions5 [3] = kulma3; sauvegarde_positions5 [4] = kulma5; tauko; tapaus 26: chiffre_final = 6; sauvegarde_positions6 [0] = kulma; sauvegarde_positions6 [1] = kulma1; sauvegarde_positions6 [2] = kulma2; sauvegarde_positions6 [3] = kulma3; sauvegarde_positions6 [4] = kulma5; tauko; tapaus 27: chiffre_final = 7; sauvegarde_positions7 [0] = kulma; sauvegarde_positions7 [1] = kulma1; sauvegarde_positions7 [2] = kulma2; sauvegarde_positions7 [3] = kulma3; sauvegarde_positions7 [4] = kulma5; tauko; tapaus 28: chiffre_final = 8; sauvegarde_positions8 [0] = kulma; sauvegarde_positions8 [1] = kulma1; sauvegarde_positions8 [2] = kulma2; sauvegarde_positions8 [3] = kulma3; sauvegarde_positions8 [4] = kulma5; tauko; tapaus 29: chiffre_final = 9; sauvegarde_positions9 [0] = kulma; sauvegarde_positions9 [1] = kulma1; sauvegarde_positions9 [2] = kulma2; sauvegarde_positions9 [3] = kulma3; sauvegarde_positions9 [4] = kulma5; tauko;

tapaus 31: Serial.print ("31"); aktivoi_tallennus = 1; chiffre_final = 0; tauko; // BEGIN

tapaus 33: Serial.print ("33"); aktivoi_tallennus = 0; break; // BUTTON SAVE oletus: break; } if (w == 32) {Serial.print ("\ nTuotanto / nChiffre final:"); Serial.print (chiffre_final); Serial.print ("\ n Sauvegarde -asema 1: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde -asema 2: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde -asema 3: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions3 ); Serial.print ("\ t");} for (i = 1; i <= chiffre_final; i ++) {Sarja. print ("\ n / n BEGIN / nLoop:"); Serial.print (i); Serial.print ("\ n"); kytkin (i) {tapaus 1: goto_moteur (*(sauvegarde_positions1)); viive (200); goto_moteur1 (*(sauvegarde_positions1+1)); viive (200); goto_moteur2 (*(sauvegarde_positions1+2)); delay (200); goto_moteur3 (*(sauvegarde_positions1+3)); viive (200); goto_moteur5 (*(sauvegarde_positions1+4)); delay (200); tauko; tapaus 2: goto_moteur (*(sauvegarde_positions2)); delay (200); goto_moteur1 (*(sauvegarde_positions2+1)); viive (200); goto_moteur2 (*(sauvegarde_positions2+2)); delay (200); goto_moteur3 (*(sauvegarde_positions2+3)); viive (200); goto_moteur5 (*(sauvegarde_positions2+4)); delay (200); tauko; tapaus 3: goto_moteur (*(sauvegarde_positions3)); delay (200); goto_moteur1 (*(sauvegarde_positions3+1)); viive (200); goto_moteur2 (*(sauvegarde_positions3+2)); delay (200); goto_moteur3 (*(sauvegarde_positions3+3)); viive (200); goto_moteur5 (*(sauvegarde_positions3+4)); delay (200); tauko; tapaus 4: goto_moteur (*(sauvegarde_positions4)); delay (200); goto_moteur1 (*(sauvegarde_positions4+1)); viive (200); goto_moteur2 (*(sauvegarde_positions4+2)); delay (200); goto_moteur3 (*(sauvegarde_positions4+3)); viive (200); goto_moteur5 (*(sauvegarde_positions4+4)); delay (200); tauko; tapaus 5: goto_moteur (*(sauvegarde_positions5)); delay (200); goto_moteur1 (*(sauvegarde_positions5+1)); viive (200); goto_moteur2 (*(sauvegarde_positions5+2)); delay (200); goto_moteur3 (*(sauvegarde_positions5+3)); viive (200); goto_moteur5 (*(sauvegarde_positions5+4)); delay (200); tauko; tapaus 6: goto_moteur (*(sauvegarde_positions6)); delay (200); goto_moteur1 (*(sauvegarde_positions6+1)); viive (200); goto_moteur2 (*(sauvegarde_positions6+2)); delay (200); goto_moteur3 (*(sauvegarde_positions6+3)); viive (200); goto_moteur5 (*(sauvegarde_positions6+4)); delay (200); tauko; tapaus 7: goto_moteur (*(sauvegarde_positions7)); viive (200); goto_moteur1 (*(sauvegarde_positions7+1)); viive (200); goto_moteur2 (*(sauvegarde_positions7+2)); delay (200); goto_moteur3 (*(sauvegarde_positions7+3)); viive (200); goto_moteur5 (*(sauvegarde_positions7+4)); delay (200); tauko; tapaus 8: goto_moteur (*(sauvegarde_positions8)); delay (200); goto_moteur1 (*(sauvegarde_positions8+1)); viive (200); goto_moteur2 (*(sauvegarde_positions8+2)); delay (200); goto_moteur3 (*(sauvegarde_positions8+3)); viive (200); goto_moteur5 (*(sauvegarde_positions8+4)); delay (200); tauko; tapaus 9: goto_moteur (*(sauvegarde_positions9)); delay (200); goto_moteur1 (*(sauvegarde_positions9+1)); viive (200); goto_moteur2 (*(sauvegarde_positions9+2)); delay (200); goto_moteur3 (*(sauvegarde_positions9+3)); viive (200); goto_moteur5 (*(sauvegarde_positions9+4)); delay (200); tauko; } Serial.print ("\ n ************************ FIN REPRODUCE ***************** / n "); viive (500); }} /*Serial.print ("debyytti / 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");*/

viive (100); } // *********************************************************************************** *******************

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

if (Serial.available ()) {w = Serial.read ();

Sarja.huuhtelu ();

paluu w; }}

void goto_moteur (int kulma_kohde)

{while (kulma_kohdekulma+askel_kulma) {Sarjajälki ("\ n -------------- * * * * * * -------------- ---- / n "); Serial.print ("kulman_kohde = / t"); Serial.print (kulman_kohde); Sarjajälki ("\ n kulma1 = / t"); Sarjajälki (kulma); if (kulma_kohdekulma + askelkulma) {kulma = kulma + askelkulma; moteur.write (kulma);} viive (100); } moteur.write (kulma_kohde); } void goto_moteur1 (int kulma_kohde) {while (kulma_kohde kulma1+askel_kulma) {Sarjajälki ("\ n -------------- * * * * * * ------- ----------- / n "); Serial.print ("kulma_kohde = / t"); Serial.print (kulman_kohde); Sarjajälki ("\ n kulma2 = / t"); Sarjajälki (kulma1); if (kulma_kohdekulma1 +askelkulma) {kulma1 += askelkulma; moteur1.write (kulma1);;} viive (100); } moteur1.write (kulma_kohde); } void goto_moteur2 (int kulma_kohde) {

while (kulma_kohdekulma2+askelkulma)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("kulman_kohde = / t"); Serial.print (kulman_kohde); Sarjajälki ("\ n kulma3 = / t"); Sarjajälki (kulma2); if (kulma_kohdekulma2 +askelkulma) {kulma2 += askelkulma; moteur2.write (kulma2);} viive (100); } moteur2.write (kulma_kohde); } void goto_moteur3 (int kulma_kohde) {

while (kulma_kohdekulma3+askelkulma)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("kulman_kohde = / t"); Serial.print (kulman_kohde); Sarjajälki ("\ n kulma4 = / t"); Sarjajälki (kulma3); if (kulma_kohdekulma3 +askelkulma) {kulma3 += askelkulma; moteur3.write (kulma3);} viive (100); } moteur3.write (kulma_kohde); } void goto_moteur5 (int kulma_kohde) {

while (kulma_kohdekulma5+askelkulma)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("kulma_kohde = / t"); Serial.print (kulman_kohde); Sarjajälki ("\ n kulma5 = / t"); Sarjajälki (kulma5); if (kulmakohdekulma5 +askelkulma) {kulma5 += askelkulma; moteur5.write (kulma5);} viive (100); } moteur5.write (kulma_kohde); }

void TouchDown_Release () // TouchDown -painikkeen vapautus

{jos (kulma5 <180) {kulma5 = kulma5+askel_kulmamini; } moteur5.write (kulma5); }

void TouchDown_Grab () // TouchDown -painike

{if (kulma5> 0) {kulma5 = kulma5-askel_kulmamini; } moteur5.write (kulma5); } void Base_Rotation () {if (kulma 0) {kulma = kulma-askel_kulma; } muu kulma = 0; moteur.write (kulma); } tyhjä Vyötärökierto () {if (kulma1 20) {kulma1 = kulma1-askel_kulma; } muu kulma1 = 20; moteur1.write (kulma1); } mitätön Kolmas_Käsivarsikierros () {if (kulma2 0) {kulma2 = kulma2-askel_kulma; } moteur2.write (kulma2); } void Fourth_Arm_Rotation () {if (kulma3 = 0) {kulma3 = kulma3-askel_kulmamini; } moteur3.write (kulma3); }

Vaihe 6: Se on siinä

Kiitos katsomisestasi, toivottavasti arvostit!

Jos pidit tästä Instructable -ohjelmasta, voit varmasti vierailla lisää! =)

Suositeltava: