Satura rādītājs:

Robotu roku spēle - viedtālruņa kontrolieris: 6 soļi
Robotu roku spēle - viedtālruņa kontrolieris: 6 soļi

Video: Robotu roku spēle - viedtālruņa kontrolieris: 6 soļi

Video: Robotu roku spēle - viedtālruņa kontrolieris: 6 soļi
Video: Silent Hill игры | Развитие серии | Полная хронология 2024, Jūlijs
Anonim
Robotu roku spēle - viedtālruņa kontrolieris
Robotu roku spēle - viedtālruņa kontrolieris

Sveiki !

Šeit ir jautra vasaras spēle: robotu roka, ko kontrolē viedtālrunis !!

Kā redzams videoklipā, viedtālrunī varat kontrolēt roku ar dažām kursorsvirām.

Jūs varat arī saglabāt modeli, ko robots reproducēs cilpā, lai, piemēram, izpildītu dažus atkārtotus uzdevumus. Bet šis modelis ir modulējams, kā vēlaties !!!!

Esi radošs !

1. solis: materiāli

Materiāli
Materiāli

Šeit jūs varat redzēt nepieciešamo materiālu.

Šīs robotu rokas izveide jums izmaksās aptuveni 50 eiro. Programmatūru un rīkus var nomainīt, bet es tos izmantoju šim projektam.

2. darbība: 3D drukājiet robotu roku

3D drukāt robotu roku
3D drukāt robotu roku
3D drukāt robotu roku
3D drukāt robotu roku
3D drukāt robotu roku
3D drukāt robotu roku

Robotiskā roka tika izdrukāta 3D formātā (ar mūsu prusa i3).

Pateicoties vietnei "HowtoMechatronics.com", viņa STL faili ir lieliski, lai izveidotu 3D roku.

Visu gabalu izdrukāšana prasīs apmēram 20 stundas.

3. solis: elektroniskā montāža

Elektroniskā montāža
Elektroniskā montāža

Montāža ir sadalīta 2 daļās:

Elektroniska daļa, kurā arduino ir savienots ar servo ar digitālajām tapām un ar Bluetooth ierīci (Rx, Tx).

Jaudas daļa, kurā servos tiek darbināti 2 tālruņa lādētāji (5V, ne vairāk kā 2A).

4. solis: viedtālruņa lietojumprogramma

Viedtālruņa lietojumprogramma
Viedtālruņa lietojumprogramma

Lietojumprogramma tika izveidota, izmantojot lietotnes izgudrotāju 2. Mēs izmantojam 2 kursorsviru, lai kontrolētu 4 servos un vēl divas pogas, lai kontrolētu galīgo satvērienu.

Mēs savienojam Arm un Smartphone kopā, izmantojot Bluetooth moduli (HC-06).

Visbeidzot, taupīšanas režīms ļauj lietotājam saglabāt līdz 9 pozīcijām rokai.

Pēc tam roka pāries automātiskajā režīmā, kur viņš atveidos saglabātās pozīcijas.

5. solis: Arduino kods

Arduino kods
Arduino kods
Arduino kods
Arduino kods

// 08/19 - Robotikas rokas viedtālrunis

#iekļaut #define TRUE true #define FALSE false // ******************** DEKLARĀCIJAS ***************** ***********

vārdu rep; // mot envoyé du module Arduino au smartphone

int chiffre_final = 0; int cmd = 3; // mainīgais commande du servo moteur (troisième fil (oranžs, 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 motors; // on définit notre servomoteur Servo moteur1; Servo motors2; Servo motors3; // Servo motors4; Servo motors5; int solis_stūris_mini = 4; int solis_stūris = 3; int leņķis, leņķis1, leņķis3, leņķis5, leņķis2; // leņķis int pas; int r, r1, r2, r3; int reģistrētājs; Būla spura = FALSE; Būla fin1 = FALSE; Būla fin2 = FALSE; Būla fin3 = FALSE; Būla fin4 = FALSE; vārds w; // mainīgais envoyé du viedtālruņa au modulis 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 leņķis; // rotācijas leņķis (0 līdz 180)

//********************UZSTĀDĪT*************************** ******** void setup () {sauvegarde_positions1 [0] = sauvegarde_positions1 [1] = sauvegarde_positions1 [2] = sauvegarde_positions1 [3] = sauvegarde_positions1 [4] = 0; sauvegarde_pozīcijas2 [0] = sauvegarde_pozīcijas2 [1] = sauvegarde_pozīcijas2 [2] = sauvegarde_pozīcijas2 [3] = sauvegarde_pozīcijas2 [4] = 0; sauvegarde_pozīcijas3 [0] = sauvegarde_pozīcijas3 [1] = sauvegarde_pozīcijas3 [2] = sauvegarde_pozīcijas3 [3] = sauvegarde_pozīcijas3 [4] = 0; sauvegarde_pozīcijas4 [0] = sauvegarde_pozīcijas4 [1] = sauvegarde_pozīcijas4 [2] = sauvegarde_pozīcijas4 [3] = sauvegarde_pozīcijas4 [4] = 0; sauvegarde_pozīcijas5 [0] = sauvegarde_pozīcijas5 [1] = sauvegarde_pozīcijas5 [2] = sauvegarde_pozīcijas5 [3] = sauvegarde_pozīcijas5 [4] = 0; sauvegarde_pozīcijas6 [0] = sauvegarde_pozīcijas6 [1] = sauvegarde_pozīcijas6 [2] = sauvegarde_pozīcijas6 [3] = sauvegarde_pozīcijas6 [4] = 0; sauvegarde_pozīcijas7 [0] = sauvegarde_pozīcijas7 [1] = sauvegarde_pozīcijas7 [2] = sauvegarde_pozīcijas7 [3] = sauvegarde_pozīcijas7 [4] = 0; sauvegarde_pozīcijas8 [0] = sauvegarde_pozīcijas8 [1] = sauvegarde_pozīcijas8 [2] = sauvegarde_pozīcijas8 [3] = sauvegarde_pozīcijas8 [4] = 0; sauvegarde_pozīcijas9 [0] = sauvegarde_pozīcijas9 [1] = sauvegarde_pozīcijas9 [2] = sauvegarde_pozīcijas9 [3] = sauvegarde_pozīcijas9 [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); leņķis = 6; moteur1.write (100); leņķis1 = 100; moteur2.write (90); moteur3.write (90); //moteur4.write(12); moteur5.write (90); leņķis = 6; leņķis1 = 100; leņķis2 = 90; leņķis3 = 90; leņķis5 = 90; Sērijas sākums (9600); // komunikācijas modulis vai Bluetooth modulis} // ******************* BOUCLE ****************** ***************** void loop () {

// Serial.print ("leņķis");

//Sērijas.print (stūris); "); Sērijas nospiedums (leņķis3); Sērijas nospiedums (" / t "); Sērijas nospiedums (leņķis5); Sērijas nospiedums (" / n ");

//Sērijas.print ("angle ");

int i; w = saņemšana (); // par viedtālruņa saņemto informāciju, mainīga w slēdzis (w) {1. gadījums: TouchDown_Release (); break; 2. gadījums: TouchDown_Grab (); break; 3. gadījums: Base_Rotation (); break; 4. gadījums: Base_AntiRotation (); pārtraukums; 5. gadījums: Waist_Rotation (); break; 6. gadījums: Waist_AntiRotation (); pārtraukums; 7. gadījums: Trešā_Roku_Rotācija (); pārtraukums; 8. gadījums: Third_Arm_AntiRotation (); break; 9. gadījums: Ceturtā_Roku_Rotācija (); pārtraukums; 10. gadījums: Fourth_Arm_AntiRotation (); break; // 11. gadījums: Fifth_Arm_Rotation (); break; // 12. gadījums: Fifth_Arm_AntiRotation (); break; 21. gadījums: Sērijas.druka ("lietas poga 1"); chiffre_final = 1; sauvegarde_positions1 [0] = leņķis; sauvegarde_positions1 [1] = leņķis1; sauvegarde_pozīcijas1 [2] = leņķis2; sauvegarde_positions1 [3] = leņķis3; sauvegarde_positions1 [4] = leņķis5; Serial.println (sauvegarde_positions1 [1]); Serial.println (sauvegarde_positions1 [2]); Serial.println (sauvegarde_positions1 [3]); Serial.println (sauvegarde_positions1 [4]); pārtraukums; 22. gadījums: chiffre_final = 2; sauvegarde_pozīcijas2 [0] = leņķis; sauvegarde_pozīcijas2 [1] = leņķis1; sauvegarde_pozīcijas2 [2] = leņķis2; sauvegarde_pozīcijas2 [3] = leņķis3; sauvegarde_pozīcijas2 [4] = leņķis5; pārtraukums; 23. gadījums: chiffre_final = 3; sauvegarde_positions3 [0] = leņķis; sauvegarde_positions3 [1] = leņķis1; sauvegarde_pozīcijas3 [2] = leņķis2; sauvegarde_pozīcijas3 [3] = leņķis3; sauvegarde_pozīcijas3 [4] = leņķis5; pārtraukums; 24. gadījums: chiffre_final = 4; sauvegarde_pozīcijas4 [0] = leņķis; sauvegarde_positions4 [1] = leņķis1; sauvegarde_pozīcijas4 [2] = leņķis2; sauvegarde_pozīcijas4 [3] = leņķis3; sauvegarde_pozīcijas4 [4] = leņķis5; pārtraukums; 25. gadījums: chiffre_final = 5; sauvegarde_positions5 [0] = leņķis; sauvegarde_positions5 [1] = leņķis1; sauvegarde_pozīcijas5 [2] = leņķis2; sauvegarde_pozīcijas5 [3] = leņķis3; sauvegarde_pozīcijas5 [4] = leņķis5; pārtraukums; 26. gadījums: chiffre_final = 6; sauvegarde_positions6 [0] = leņķis; sauvegarde_pozīcijas6 [1] = leņķis1; sauvegarde_pozīcijas6 [2] = leņķis2; sauvegarde_pozīcijas6 [3] = leņķis3; sauvegarde_pozīcijas6 [4] = leņķis5; pārtraukums; 27. gadījums: chiffre_final = 7; sauvegarde_positions7 [0] = leņķis; sauvegarde_pozīcijas7 [1] = leņķis1; sauvegarde_pozīcijas7 [2] = leņķis2; sauvegarde_pozīcijas7 [3] = leņķis3; sauvegarde_pozīcijas7 [4] = leņķis5; pārtraukums; 28. gadījums: chiffre_final = 8; sauvegarde_pozīcijas8 [0] = leņķis; sauvegarde_positions8 [1] = leņķis1; sauvegarde_pozīcijas8 [2] = leņķis2; sauvegarde_pozīcijas8 [3] = leņķis3; sauvegarde_pozīcijas8 [4] = leņķis5; pārtraukums; 29. gadījums: chiffre_final = 9; sauvegarde_pozīcijas9 [0] = leņķis; sauvegarde_positions9 [1] = leņķis1; sauvegarde_pozīcijas9 [2] = leņķis2; sauvegarde_pozīcijas9 [3] = leņķis3; sauvegarde_pozīcijas9 [4] = leņķis5; pārtraukums;

31. gadījums: Sērijas nospiedums ("31"); aktivizēt_saglabāšana = 1; chiffre_final = 0; pārtraukums; // SĀKT

33. gadījums: Serial.print ("33"); aktivizēt_saglabāt = 0; break; // BUTTON SAVE noklusējums: break; } ja (w == 32) {Serial.print ("\ nReproduce / nChiffre final:"); Serial.print (chiffre_final); Serial.print ("\ n Sauvegarde 1. pozīcija: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde 2. pozīcija: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde 3. pozīcija: / n"); par (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions3 ); Serial.print ("\ t");} for (i = 1; i <= chiffre_final; i ++) {Serial. print ("\ n / n BEGIN / nLoop:"); Sērijas nospiedums (i); Sērijas nospiedums ("\ n"); slēdzis (i) {1. gadījums: goto_moteur (*(sauvegarde_positions1)); kavēšanās (200); goto_moteur1 (*(sauvegarde_positions1+1)); kavēšanās (200); goto_moteur2 (*(sauvegarde_positions1+2)); kavēšanās (200); goto_moteur3 (*(sauvegarde_positions1+3)); kavēšanās (200); goto_moteur5 (*(sauvegarde_positions1+4)); kavēšanās (200); pārtraukums; 2. gadījums: goto_moteur (*(sauvegarde_positions2)); kavēšanās (200); goto_moteur1 (*(sauvegarde_positions2+1)); kavēšanās (200); goto_moteur2 (*(sauvegarde_positions2+2)); kavēšanās (200); goto_moteur3 (*(sauvegarde_positions2+3)); kavēšanās (200); goto_moteur5 (*(sauvegarde_positions2+4)); kavēšanās (200); pārtraukums; 3. gadījums: goto_moteur (*(sauvegarde_positions3)); kavēšanās (200); goto_moteur1 (*(sauvegarde_positions3+1)); kavēšanās (200); goto_moteur2 (*(sauvegarde_positions3+2)); kavēšanās (200); goto_moteur3 (*(sauvegarde_positions3+3)); kavēšanās (200); goto_moteur5 (*(sauvegarde_positions3+4)); kavēšanās (200); pārtraukums; 4. gadījums: goto_moteur (*(sauvegarde_positions4)); kavēšanās (200); goto_moteur1 (*(sauvegarde_positions4+1)); kavēšanās (200); goto_moteur2 (*(sauvegarde_positions4+2)); kavēšanās (200); goto_moteur3 (*(sauvegarde_positions4+3)); kavēšanās (200); goto_moteur5 (*(sauvegarde_positions4+4)); kavēšanās (200); pārtraukums; 5. gadījums: goto_moteur (*(sauvegarde_positions5)); kavēšanās (200); goto_moteur1 (*(sauvegarde_positions5+1)); kavēšanās (200); goto_moteur2 (*(sauvegarde_positions5+2)); kavēšanās (200); goto_moteur3 (*(sauvegarde_positions5+3)); kavēšanās (200); goto_moteur5 (*(sauvegarde_positions5+4)); kavēšanās (200); pārtraukums; 6. gadījums: goto_moteur (*(sauvegarde_positions6)); kavēšanās (200); goto_moteur1 (*(sauvegarde_positions6+1)); kavēšanās (200); goto_moteur2 (*(sauvegarde_positions6+2)); kavēšanās (200); goto_moteur3 (*(sauvegarde_positions6+3)); kavēšanās (200); goto_moteur5 (*(sauvegarde_positions6+4)); kavēšanās (200); pārtraukums; 7. gadījums: goto_moteur (*(sauvegarde_positions7)); kavēšanās (200); goto_moteur1 (*(sauvegarde_positions7+1)); kavēšanās (200); goto_moteur2 (*(sauvegarde_positions7+2)); kavēšanās (200); goto_moteur3 (*(sauvegarde_positions7+3)); kavēšanās (200); goto_moteur5 (*(sauvegarde_positions7+4)); kavēšanās (200); pārtraukums; 8. gadījums: goto_moteur (*(sauvegarde_positions8)); kavēšanās (200); goto_moteur1 (*(sauvegarde_positions8+1)); kavēšanās (200); goto_moteur2 (*(sauvegarde_positions8+2)); kavēšanās (200); goto_moteur3 (*(sauvegarde_positions8+3)); kavēšanās (200); goto_moteur5 (*(sauvegarde_positions8+4)); kavēšanās (200); pārtraukums; 9. gadījums: goto_moteur (*(sauvegarde_positions9)); kavēšanās (200); goto_moteur1 (*(sauvegarde_positions9+1)); kavēšanās (200); goto_moteur2 (*(sauvegarde_positions9+2)); kavēšanās (200); goto_moteur3 (*(sauvegarde_positions9+3)); kavēšanās (200); goto_moteur5 (*(sauvegarde_positions9+4)); kavēšanās (200); pārtraukums; } Serial.print ("\ n ************************ FIN REPRODUCE ***************** / n "); kavēšanās (500); }} /*Serial.print ("debija / 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"); Sērijas nospiedums (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"); Sērijas nospiedums (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");*/

kavēšanās (100); } // **************************** FONCTIONS ****************** ******************

vārds recevoir () {// fonction permettant de recevoir l'information du smartphone

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

Serial.flush ();

atgriešanās w; }}

void goto_moteur (int angle_destination)

{while (leņķa_mērķa leņķis+solis_stūris) {Serial.print ("\ n -------------- * * * * * * -------------- ---- / n "); Serial.print ("leņķa_mērķis = / t"); Sērijas nospiedums (leņķa galamērķis); Sērijas nospiedums ("\ n leņķis1 = / t"); Sērijas nospiedums (leņķis); if (leņķa_mērķa leņķis + pakāpiena_stūris) {leņķis = leņķis + pakāpiena_stūris; moteur.write (leņķis);} aizture (100); } moteur.write (leņķa_mērķis); } void goto_moteur1 (int leņķa_mērķis) {while (leņķa_mērķa leņķis1+solis_stūris) {Serial.print ("\ n -------------- * * * * * * ------- ----------- / n "); Serial.print ("leņķa_mērķis = / t"); Sērijas nospiedums (leņķa galamērķis); Sērijas nospiedums ("\ n leņķis2 = / t"); Sērijas nospiedums (leņķis1); ja (leņķa_mērķa leņķis1 +solis_stūris) {leņķis1 += solis_stūris; moteur1.write (leņķis1);;} aizkave (100); } moteur1.write (leņķa_mērķis); } void goto_moteur2 (int leņķa_destination) {

kamēr (leņķa_mērķa leņķis2+solis_stūris)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("leņķa_mērķis = / t"); Sērijas nospiedums (leņķa galamērķis); Sērijas nospiedums ("\ n leņķis3 = / t"); Sērijas nospiedums (leņķis2); ja (leņķa_mērķa leņķis2 +solis_stūris) {leņķis2 += pakāpiens_stūris; moteur2.write (leņķis2);} aizture (100); } moteur2.write (leņķa_mērķis); } void goto_moteur3 (int angle_destination) {

kamēr (leņķa_mērķa leņķis3+solis_stūris)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("leņķa_mērķis = / t"); Sērijas nospiedums (leņķa galamērķis); Sērijas nospiedums ("\ n leņķis4 = / t"); Sērijas nospiedums (leņķis3); ja (leņķa_mērķa leņķis3 +solis_stūris) {leņķis3 += solis_stūris; moteur3.write (leņķis3);} aizture (100); } moteur3.write (leņķa_mērķis); } void goto_moteur5 (int leņķa galamērķis) {

kamēr (leņķa_mērķa leņķis5+solis_stūris)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("leņķa_mērķis = / t"); Sērijas nospiedums (leņķa galamērķis); Sērijas nospiedums ("\ n leņķis5 = / t"); Sērijas nospiedums (leņķis5); ja (leņķa_mērķa leņķis5 +solis_stūris) {leņķis5 += pakāpiens_stūris; moteur5.write (leņķis5);} aizture (100); } moteur5.write (leņķa_mērķis); }

void TouchDown_Release () // Pogas pieskāriena atlaišana

{ja (leņķis5 <180) {leņķis5 = leņķis5+solis_stūris_minis; } moteur5.write (leņķis5); }

void TouchDown_Grab () // Pieskaršanās pogai

{ja (leņķis5> 0) {leņķis5 = leņķis5-solis_stūris_minis; } moteur5.write (leņķis5); } void Base_Rotation () {if (leņķis 0) {leņķis = leņķis-pakāpiens; } cits leņķis = 0; moteur.write (leņķis); } void Waist_Rotation () {if (leņķis1 20) {leņķis1 = leņķis1-pakāpiens_stūris; } cits leņķis1 = 20; moteur1.write (leņķis1); } void Third_Arm_Rotation () {if (leņķis2 0) {leņķis2 = leņķis2-pakāpiens_stūris; } moteur2.write (leņķis2); } void Fourth_Arm_Rotation () {if (leņķis3 = 0) {leņķis3 = leņķis3-pakāpiens_stūris_minis; } moteur3.write (leņķis3); }

6. solis: Tieši tā

Paldies, ka skatījāties, ceru, ka novērtējāt!

Ja jums patika šī pamācība, noteikti apmeklējiet mūs, lai uzzinātu vairāk! =)

Ieteicams: