Turinys:

Robotų rankų žaidimas - išmaniųjų telefonų valdiklis: 6 žingsniai
Robotų rankų žaidimas - išmaniųjų telefonų valdiklis: 6 žingsniai

Video: Robotų rankų žaidimas - išmaniųjų telefonų valdiklis: 6 žingsniai

Video: Robotų rankų žaidimas - išmaniųjų telefonų valdiklis: 6 žingsniai
Video: Nov 5th, 2023 Podcast: Winter is Coming. Apps Not Paying Drivers! 2024, Liepa
Anonim
Robotų rankų žaidimas - išmaniųjų telefonų valdiklis
Robotų rankų žaidimas - išmaniųjų telefonų valdiklis

Sveiki !

Čia yra įdomus vasaros žaidimas: Robotinė ranka, valdoma išmaniojo telefono !!

Kaip matote vaizdo įraše, ranką galite valdyti naudodami kai kuriuos išmaniojo telefono vairasvirtes.

Taip pat galite išsaugoti modelį, kurį robotas atkartos ciklu, kad, pavyzdžiui, atliktų kai kurias pasikartojančias užduotis. Bet šis modelis yra moduliuojamas, kaip norite !!!!

Būk kūrybingas !

1 žingsnis: medžiagos

Medžiagos
Medžiagos

Čia galite pamatyti reikalingą medžiagą.

Šio roboto rankos sukūrimas jums kainuos apie 50 eurų. Programinę įrangą ir įrankius galima pakeisti, bet aš juos naudoju šiam projektui.

2 žingsnis: 3D spausdinkite roboto ranką

3D spausdinkite roboto ranką
3D spausdinkite roboto ranką
3D spausdinkite roboto ranką
3D spausdinkite roboto ranką
3D spausdinkite roboto ranką
3D spausdinkite roboto ranką

Robotinė ranka buvo atspausdinta 3D (su mūsų prusa i3).

Svetainės „HowtoMechatronics.com“dėka jo STL failai yra nuostabūs norint sukurti 3D ranką.

Visų dalių spausdinimas užtruks apie 20 valandų.

3 žingsnis: elektroninis montažas

Elektroninis montažas
Elektroninis montažas

Montavimas yra padalintas į 2 dalis:

Elektroninė dalis, kurioje arduino yra prijungtas prie servo skaitmeniniais kaiščiais ir su „Bluetooth“įrenginiu (Rx, Tx).

Maitinimo dalis, kurioje servos maitinamos 2 telefono įkrovikliais (ne daugiau kaip 5 V, 2A).

4 žingsnis: „Smartphone“programa

Išmaniųjų telefonų programa
Išmaniųjų telefonų programa

Programa buvo sukurta „App“išradėjui 2. Mes naudojame 2 vairasvirtę 4 servo valdymui ir dar 2 mygtukus galutiniam sukibimui valdyti.

Mes sujungiame „Arm“ir „Smartphone“kartu naudodami „Bluetooth“modulį (HC-06).

Galiausiai taupymo režimas leidžia vartotojui išsaugoti iki 9 rankos pozicijų.

Tada ranka pereis į automatinį režimą, kur jis atkartos išsaugotas pozicijas.

5 žingsnis: „Arduino“kodas

Arduino kodas
Arduino kodas
Arduino kodas
Arduino kodas

// 08/19 - Valdomas išmanusis telefonas „Robotic Arm“

#include #define TRUE true #define FALSE false // ******************** DEKLARACIJOS ***************** ***********

žodžių repas; // mot envoyé du modulis Arduino au smartphone

int chiffre_final = 0; int cmd = 3; // kintamasis commande du servo moteur (troisième fil (oranžinė, 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; Servo variklis; // on définit notre servomoteur Servo moteur1; Servo moteur2; Servo moteur3; // Servo moteur4; Servo moteur5; int step_angle_mini = 4; int žingsnis_kampis = 3; int kampas, kampas1, kampas3, kampas5, kampas2; // kampas int pas; int r, r1, r2, r3; registruotojas; loginis pelekas = FALSE; loginis fin1 = FALSE; loginis fin2 = FALSE; loginis fin3 = FALSE; loginis fin4 = FALSE; žodis w; // kintamasis 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 kampas; // pasukimo kampas (0–180)

// ******************** NUSTATYMAS *************************** ******** 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); moteris.rašyti (6); kampas = 6; moteur1.write (100); kampas1 = 100; moteur2.write (90); moteur3.write (90); //moteur4.write (12); moteur5.write (90); kampas = 6; kampas1 = 100; kampas2 = 90; kampas3 = 90; kampas5 = 90; Serial.begin (9600); // „Bluetooth“modulio komunikacijos užrašas} // ******************* BOUCLE ****************** ***************** void loop () {

// Serial.print ("kampas");

//Serijinis.spaudas (kampas); Serijinis spaudinys ("\ t"); Serijinis atspaudas (kampas1); Serijinis atspaudas ("\ t"); Serijinis atspaudas (kampas2); Serijinis spaudinys ("\ t "); Serijinis atspaudas (kampas3); Serijinis atspaudas („ / t "); Serijinis atspaudas (kampas5); Serijinis spaudinys („ / n “);

// Serijos.spaudas („kampas“);

int i; w = gavimas (); // apie gautą informaciją išmaniajame telefone, kintamasis jungiklis (w) {1 atvejis: „TouchDown_Release“(); break; 2 atvejis: TouchDown_Grab (); break; 3 atvejis: Base_Rotation (); break; 4 atvejis: „Base_AntiRotation“(); pertrauka; 5 atvejis: Waist_Rotation (); break; 6 atvejis: Waist_AntiRotation (); pertrauka; 7 atvejis: „Third_Arm_Rotation ()“; 8 atvejis: „Third_Arm_AntiRotation“(); pertrauka; 9 atvejis: Ketvirtasis_Rankos_Rotacija (); pertrauka; 10 atvejis: Fourth_Arm_AntiRotation (); break; // 11 atvejis: Fifth_Arm_Rotation (); break; // 12 atvejis: Fifth_Arm_AntiRotation (); break; 21 atvejis: serijinis atspaudas („atvejo mygtukas 1“); chiffre_final = 1; sauvegarde_positions1 [0] = kampas; sauvegarde_positions1 [1] = kampas1; sauvegarde_positions1 [2] = kampas2; sauvegarde_positions1 [3] = kampas3; sauvegarde_positions1 [4] = kampas5; Serial.println (sauvegarde_positions1 [1]); Serial.println (sauvegarde_positions1 [2]); Serial.println (sauvegarde_positions1 [3]); Serial.println (sauvegarde_positions1 [4]); pertrauka; 22 atvejis: chiffre_final = 2; sauvegarde_positions2 [0] = kampas; sauvegarde_positions2 [1] = kampas1; sauvegarde_positions2 [2] = kampas2; sauvegarde_positions2 [3] = kampas3; sauvegarde_positions2 [4] = kampas5; pertrauka; 23 atvejis: chiffre_final = 3; sauvegarde_positions3 [0] = kampas; sauvegarde_positions3 [1] = kampas1; sauvegarde_pozicijos3 [2] = kampas2; sauvegarde_positions3 [3] = kampas3; sauvegarde_positions3 [4] = kampas5; pertrauka; 24 atvejis: chiffre_final = 4; sauvegarde_positions4 [0] = kampas; sauvegarde_positions4 [1] = kampas1; sauvegarde_positions4 [2] = kampas2; sauvegarde_positions4 [3] = kampas3; sauvegarde_positions4 [4] = kampas5; pertrauka; 25 atvejis: chiffre_final = 5; sauvegarde_positions5 [0] = kampas; sauvegarde_positions5 [1] = kampas1; sauvegarde_pozicijos5 [2] = kampas2; sauvegarde_positions5 [3] = kampas3; sauvegarde_positions5 [4] = kampas5; pertrauka; 26 atvejis: chiffre_final = 6; sauvegarde_positions6 [0] = kampas; sauvegarde_positions6 [1] = kamp1 pertrauka; 27 atvejis: chiffre_final = 7; sauvegarde_positions7 [0] = kampas; sauvegarde_positions7 [1] = kampas1; sauvegarde_pozicijos7 [2] = kampas2; sauvegarde_positions7 [3] = kampas3; sauvegarde_positions7 [4] = kampas5; pertrauka; 28 atvejis: chiffre_final = 8; sauvegarde_positions8 [0] = kampas; sauvegarde_positions8 [1] = kamp1 pertrauka; 29 atvejis: chiffre_final = 9; sauvegarde_positions9 [0] = kampas; sauvegarde_positions9 [1] = kampas1; sauvegarde_positions9 [2] = kampas2; sauvegarde_positions9 [3] = kampas3; sauvegarde_positions9 [4] = kampas5; pertrauka;

31 atvejis: serijinis atspaudas ("31"); aktyvinti_išsaugoti = 1; chiffre_final = 0; pertrauka; // BEGIN

33 atvejis: Serial.print ("33"); aktyvinti_išsaugoti = 0; break; // BUTTON SAVE default: break; } if (w == 32) {Serial.print ("\ nReproduce / nChiffre final:"); Serial.print (chiffre_final); Serial.print ("\ n Sauvegarde pozicija 1: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde 2 pozicija: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde 3 pozicija: / n"); (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions3 ); Serial.print ("\ t");} for (i = 1; i <= chiffre_final; i ++) {Serial. spausdinti ("\ n / n BEGIN / nLoop:"); Serial.print (i); Serial.print („\ n“); jungiklis (i) {1 atvejis: goto_moteur (*(sauvegarde_positions1)); uždelsimas (200); goto_moteur1 (*(sauvegarde_positions1+1)); vėlavimas (200); goto_moteur2 (*(sauvegarde_positions1+2)); delay (200); goto_moteur3 (*(sauvegarde_positions1+3)); vėlavimas (200); goto_moteur5 (*(sauvegarde_positions1+4)); uždelsimas (200); pertrauka; 2 atvejis: goto_moteur (*(sauvegarde_positions2)); uždelsimas (200); goto_moteur1 (*(sauvegarde_positions2+1)); vėlavimas (200); goto_moteur2 (*(sauvegarde_positions2+2)); delay (200); goto_moteur3 (*(sauvegarde_positions2+3)); vėlavimas (200); goto_moteur5 (*(sauvegarde_positions2+4)); delay (200); pertrauka; 3 atvejis: goto_moteur (*(sauvegarde_positions3)); uždelsimas (200); goto_moteur1 (*(sauvegarde_positions3+1)); vėlavimas (200); goto_moteur2 (*(sauvegarde_positions3+2)); uždelsimas (200); goto_moteur3 (*(sauvegarde_positions3+3)); vėlavimas (200); goto_moteur5 (*(sauvegarde_positions3+4)); uždelsimas (200); pertrauka; 4 atvejis: goto_moteur (*(sauvegarde_positions4)); uždelsimas (200); goto_moteur1 (*(sauvegarde_positions4+1)); vėlavimas (200); goto_moteur2 (*(sauvegarde_positions4+2)); delay (200); goto_moteur3 (*(sauvegarde_positions4+3)); vėlavimas (200); goto_moteur5 (*(sauvegarde_positions4+4)); uždelsimas (200); pertrauka; 5 atvejis: goto_moteur (*(sauvegarde_positions5)); uždelsimas (200); goto_moteur1 (*(sauvegarde_positions5+1)); vėlavimas (200); goto_moteur2 (*(sauvegarde_positions5+2)); delay (200); goto_moteur3 (*(sauvegarde_positions5+3)); vėlavimas (200); goto_moteur5 (*(sauvegarde_positions5+4)); delay (200); pertrauka; 6 atvejis: goto_moteur (*(sauvegarde_positions6)); uždelsimas (200); goto_moteur1 (*(sauvegarde_positions6+1)); vėlavimas (200); goto_moteur2 (*(sauvegarde_positions6+2)); delay (200); goto_moteur3 (*(sauvegarde_positions6+3)); vėlavimas (200); goto_moteur5 (*(sauvegarde_positions6+4)); delay (200); pertrauka; 7 atvejis: goto_moteur (*(sauvegarde_positions7)); uždelsimas (200); goto_moteur1 (*(sauvegarde_positions7+1)); vėlavimas (200); goto_moteur2 (*(sauvegarde_positions7+2)); delay (200); goto_moteur3 (*(sauvegarde_positions7+3)); vėlavimas (200); goto_moteur5 (*(sauvegarde_positions7+4)); delay (200); pertrauka; 8 atvejis: goto_moteur (*(sauvegarde_positions8)); uždelsimas (200); goto_moteur1 (*(sauvegarde_positions8+1)); vėlavimas (200); goto_moteur2 (*(sauvegarde_positions8+2)); delay (200); goto_moteur3 (*(sauvegarde_positions8+3)); vėlavimas (200); goto_moteur5 (*(sauvegarde_positions8+4)); delay (200); pertrauka; 9 atvejis: goto_moteur (*(sauvegarde_positions9)); uždelsimas (200); goto_moteur1 (*(sauvegarde_positions9+1)); vėlavimas (200); goto_moteur2 (*(sauvegarde_positions9+2)); delay (200); goto_moteur3 (*(sauvegarde_positions9+3)); vėlavimas (200); goto_moteur5 (*(sauvegarde_positions9+4)); delay (200); pertrauka; } Serial.print ("\ n ************************ FIN REPRODUCE ***************** / n "); vėlavimas (500); }} /*Serial.print ("debiutas / 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 (saugegarde_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");*/

vėlavimas (100); } // **************************** FONCTIONS ****************** ******************

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

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

Serial.flush ();

grįžti w; }}

void goto_moteur (int kampas_paskirtis)

{while (kampas_paskirties kampas+žingsnis_kampis) {Serial.print ("\ n -------------- * * * * * * -------------- ---- / n "); Serial.print ("kampas_paskirtis = / t"); Serijinis atspaudas (kampas_paskirtis); Serial.print ("\ n kampas1 = / t"); Serijinis atspaudas (kampas); if (kampas_paskirties kampas + žingsnio_kampis) {kampas = kampas + žingsnio_kampis; moteur.write (kampas);} uždelsimas (100); } moteur.write (kampas_paskirtis); } void goto_moteur1 (int kampas_destination) {while (kampas_paskirties kampas1+žingsnis_kampis) {Serial.print ("\ n -------------- * * * * * * ------- ----------- / n "); Serial.print ("kampas_paskirtis = / t"); Serijinis atspaudas (kampas_paskirtis); Serijinis atspaudas ("\ n kampas2 = / t"); Serijinis atspaudas (kampas1); if (kampas_paskirties kampas1 +žingsnio_kampis) {kampas1 += žingsnis_kampis; moteur1.write (kampas1);;} delsa (100); } moteur1.write (kampas_paskirtis); } void goto_moteur2 (int kampas_destination) {

while (kampas_paskirties kampas2+žingsnio_kampis)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("kampas_paskirtis = / t"); Serijinis atspaudas (kampas_paskirtis); Serijinis atspaudas ("\ n kampas3 = / t"); Serijinis atspaudas (kampas2); if (kampas_paskirties kampas2 +žingsnio_kampis) {kampas2 += žingsnis_kampis; moteur2.write (kampas2);} delsa (100); } moteur2.write (kampas_paskirtis); } void goto_moteur3 (int kampas_destination) {

while (kampas_paskirties kampas3+žingsnio_kampis)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("kampas_paskirtis = / t"); Serijinis atspaudas (kampas_paskirtis); Serial.print ("\ n angle4 = / t"); Serial.print (kampas3); if (kampas_paskirties kampas3 +žingsnio_kampis) {kampas3 += žingsnis_kampis; moteur3.write (kampas3);} delsa (100); } moteur3.write (kampas_paskirtis); } void goto_moteur5 (int kampas_destination) {

while (kampas_paskirties kampas5+žingsnio_kampis)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("kampas_paskirtis = / t"); Serijinis atspaudas (kampas_paskirtis); Serial.print ("\ n angle5 = / t"); Serial.print (kampas5); if (kampas_paskirties kampas5 +žingsnio_kampis) {kampas5 += žingsnis_kampis; moteur5.write (kampas5);} delsa (100); } moteur5.write (kampas_paskirtis); }

void TouchDown_Release () // Mygtuko „TouchDown“atleidimas

{if (kampas5 <180) {kampas5 = kampas5+žingsnis_kampis_miniai; } moteur5.write (kampas5); }

void TouchDown_Grab () // „TouchDown“mygtuko patraukimas

{if (kampas5> 0) {kampas5 = kampas5-žingsnio_kampio_miniai; } moteur5.write (kampas5); } void Base_Rotation () {if (kampas 0) {kampas = kampas-žingsnio_kampis; } kitas kampas = 0; moteur.write (kampas); } void Waist_Rotation () {if (kampas1 20) {kampas1 = kampas1-žingsnis_kampis; } kitas kampas1 = 20; moteur1.write (kampas1); } void Third_Arm_Rotation () {if (kampas2 0) {kampas2 = kampas2-žingsnio_kampis; } moteur2.write (kampas2); } void Fourth_Arm_Rotation () {if (kampas3 = 0) {kampas3 = kampas3-žingsnis_kampis_minis; } moteur3.write (kampas3); }

6 žingsnis: viskas

Ačiū, kad žiūrėjote, tikiuosi, kad įvertinote!

Jei jums patiko šis „Instructable“, tikrai galite apsilankyti pas mus! =)

Rekomenduojamas: