Tartalomjegyzék:

Robotkaros játék - okostelefon -vezérlő: 6 lépés
Robotkaros játék - okostelefon -vezérlő: 6 lépés

Videó: Robotkaros játék - okostelefon -vezérlő: 6 lépés

Videó: Robotkaros játék - okostelefon -vezérlő: 6 lépés
Videó: Kollaboratív robotkar 2024, Július
Anonim
Robotkaros játék - okostelefon -vezérlő
Robotkaros játék - okostelefon -vezérlő

Helló !

Itt egy szórakoztató nyári játék: Az okostelefon által vezérelt robotkar !!

Amint a videón is látható, okostelefonján néhány joystick segítségével vezérelheti a karját.

Menthet egy mintát is, amelyet a robot ciklusban reprodukál, hogy néhány ismétlődő feladatot elvégezzen. De ez a minta tetszés szerint modulálható !!!!

Légy kreatív!

1. lépés: Anyagok

Anyagok
Anyagok

Itt láthatja a szükséges anyagokat.

Ennek a robotkarnak az elkészítése körülbelül 50 euróba kerül. A szoftver és az eszközök cserélhetők, de ezeket a projekthez használtam.

2. lépés: 3D nyomtatás a robotkarról

3D nyomtatás a robotkarról
3D nyomtatás a robotkarról
3D nyomtatás a robotkarról
3D nyomtatás a robotkarról
3D nyomtatás a robotkarról
3D nyomtatás a robotkarról

A robotkar 3D nyomtatással készült (a prusa i3 -nál).

A "HowtoMechatronics.com" weboldalnak köszönhetően az STL fájljai fantasztikusak egy 3D kar felépítéséhez.

Az összes darab kinyomtatása körülbelül 20 órát vesz igénybe.

3. lépés: Elektronikus montázs

Elektronikus montázs
Elektronikus montázs

A montázs 2 részből áll:

Elektronikus rész, ahol az arduino -t a digitális csapok és a Bluetooth -eszköz (Rx, Tx) csatlakoztatják a szervókhoz.

A tápegység része, ahol a szervók 2 telefon töltővel (5V, max. 2A) működnek.

4. lépés: Okostelefonos alkalmazás

Okostelefonos alkalmazás
Okostelefonos alkalmazás

Az Alkalmazás az App feltaláló 2 -n készült. 2 joystickot használunk 4 szervó vezérléséhez, és további 2 gombot a végső markolat vezérléséhez.

Az Arm és az okostelefont Bluetooth modul (HC-06) segítségével kapcsoljuk össze.

Végül egy mentési mód lehetővé teszi a felhasználó számára, hogy akár 9 pozíciót mentsen a kar számára.

A kar ekkor automatikus üzemmódba kapcsol, ahol reprodukálja a mentett pozíciókat.

5. lépés: Az Arduino kód

Az Arduino kód
Az Arduino kód
Az Arduino kód
Az Arduino kód

// 08/19 - Robotkaros okostelefonos vezérlés

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

szó rep; // mot envoyé du mod Arduino au smartphone

int chiffre_final = 0; int cmd = 3; // változó commande du servo moteur (troisième fil (narancs, jaune)) int cmd1 = 5; // szervo1 int cmd2 = 9; // szervo2 int cmd3 = 10; // szervo3 // int cmd4 = 10; // szervo4 int cmd5 = 11; // pince int activ_saving = 0; Szervomotor; // on définit notre servomoteur Servo moteur1; Szervomotor2; Szervomotor3; // Szervomotor4; Szervomotor5; int lépés_szög_mini = 4; int lépés_szög = 3; int szög, szög1, szög3, szög5, szög2; // szög int pas; int r, r1, r2, r3; int regisztrátor; boolean fin = HAMIS; logikai fin1 = HAMIS; logikai fin2 = HAMIS; logikai fin3 = HAMIS; logikai fin4 = HAMIS; w szó; // változó 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 szög; // elforgatási szög (0 a 180)

//********************BEÁLLÍT*************************** ******** 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); szög = 6; moteur1.write (100); szög1 = 100; moteur2.write (90); moteur3.write (90); //moteur4.write(12); moteur5.write (90); szög = 6; szög1 = 100; szög2 = 90; szög3 = 90; szög5 = 90; Sorozat.kezdet (9600); // a Bluetooth kommunikáció kommunikációs modulja} // ******************** BOUCLE ****************** ***************** void loop () {

// Serial.print ("szög");

// Sorozatnyomtatás (szög);; Soros.nyomtatás ("\ t"); Soros.nyomtatás (szög1); Soros.nyomtatás ("\ t"); Soros.nyomtatás (szög2); Sorosnyomat ("\ t "); Soros.nyomtatás (szög3); Sorosnyomat (" / t "); Sorosnyomat (szög5); Sorosnyomat (" / n ");

// Sorozat.nyomat ("szög");

int i; w = recevoir (); // okostelefonon, a változó w kapcsoló (w) {1. eset: TouchDown_Release (); break; 2. eset: TouchDown_Grab (); break; 3. eset: Base_Rotation (); break; 4. eset: Base_AntiRotation (); break; 5. eset: Waist_Rotation (); break; 6. eset: Waist_AntiRotation (); break; 7. eset: Third_Arm_Rotation (); break; 8. eset: Third_Arm_AntiRotation (); break; 9. eset: Fourth_Arm_Rotation (); break; 10. eset: Fourth_Arm_AntiRotation (); break; // 11. eset: Fifth_Arm_Rotation (); break; // 12. eset: Fifth_Arm_AntiRotation (); break; 21. eset: Sorozat.nyomtatás ("1. gomb gomb"); chiffre_final = 1; sauvegarde_positions1 [0] = szög; sauvegarde_positions1 [1] = szög1; sauvegarde_positions1 [2] = szög2; sauvegarde_positions1 [3] = szög3; sauvegarde_positions1 [4] = szög5; Soros.println (sauvegarde_positions1 [1]); Serial.println (sauvegarde_positions1 [2]); Serial.println (sauvegarde_positions1 [3]); Serial.println (sauvegarde_positions1 [4]); szünet; 22. eset: chiffre_döntő = 2; sauvegarde_positions2 [0] = szög; sauvegarde_positions2 [1] = szög1; sauvegarde_positions2 [2] = szög2; sauvegarde_positions2 [3] = szög3; sauvegarde_positions2 [4] = szög5; szünet; 23. eset: chiffre_final = 3; sauvegarde_positions3 [0] = szög; sauvegarde_positions3 [1] = szög1; sauvegarde_positions3 [2] = szög2; sauvegarde_positions3 [3] = szög3; sauvegarde_positions3 [4] = szög5; szünet; 24. eset: chiffre_döntő = 4; sauvegarde_positions4 [0] = szög; sauvegarde_positions4 [1] = szög1; sauvegarde_positions4 [2] = szög2; sauvegarde_positions4 [3] = szög3; sauvegarde_positions4 [4] = szög5; szünet; 25. eset: chiffre_final = 5; sauvegarde_positions5 [0] = szög; sauvegarde_positions5 [1] = szög1; sauvegarde_positions5 [2] = szög2; sauvegarde_positions5 [3] = szög3; sauvegarde_positions5 [4] = szög5; szünet; 26. eset: chiffre_döntő = 6; sauvegarde_positions6 [0] = szög; sauvegarde_positions6 [1] = szög1; sauvegarde_positions6 [2] = szög2; sauvegarde_positions6 [3] = szög3; sauvegarde_positions6 [4] = szög5; szünet; 27. eset: chiffre_final = 7; sauvegarde_positions7 [0] = szög; sauvegarde_positions7 [1] = szög1; sauvegarde_positions7 [2] = szög2; sauvegarde_positions7 [3] = szög3; sauvegarde_positions7 [4] = szög5; szünet; 28. eset: chiffre_döntő = 8; sauvegarde_positions8 [0] = szög; sauvegarde_positions8 [1] = szög1; sauvegarde_positions8 [2] = szög2; sauvegarde_positions8 [3] = szög3; sauvegarde_positions8 [4] = szög5; szünet; 29. eset: chiffre_döntő = 9; sauvegarde_positions9 [0] = szög; sauvegarde_positions9 [1] = szög1; sauvegarde_positions9 [2] = szög2; sauvegarde_positions9 [3] = szög3; sauvegarde_positions9 [4] = szög5; szünet;

31. eset: Sorozat.nyomtatás ("31"); aktiválás_mentés = 1; chiffre_final = 0; szünet; // BEGIN

33. eset: Serial.print ("33"); aktiv_megtakarítás = 0; break; // BUTTON SAVE default: break; } if (w == 32) {Serial.print ("\ nReproduce / nChiffre final:"); Serial.print (chiffre_döntő); Serial.print ("\ n Sauvegarde 1. pozíció: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde 2. pozíció: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde 3. pozíció: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions3 ); Serial.print ("\ t");} for (i = 1; i <= chiffre_final; i ++) {Sorozat. print ("\ n / n BEGIN / nLoop:"); Soros.nyomtatás (i); Soros.nyomtatás ("\ n"); kapcsoló (i) {1. eset: goto_moteur (*(sauvegarde_positions1)); delay (200); goto_moteur1 (*(sauvegarde_positions1+1)); késleltetés (200); goto_moteur2 (*(sauvegarde_positions1+2)); delay (200); goto_moteur3 (*(sauvegarde_positions1+3)); késleltetés (200); goto_moteur5 (*(sauvegarde_positions1+4)); delay (200); szünet; 2. eset: goto_moteur (*(sauvegarde_positions2)); delay (200); goto_moteur1 (*(sauvegarde_positions2+1)); késleltetés (200); goto_moteur2 (*(sauvegarde_positions2+2)); delay (200); goto_moteur3 (*(sauvegarde_positions2+3)); késleltetés (200); goto_moteur5 (*(sauvegarde_positions2+4)); delay (200); szünet; 3. eset: goto_moteur (*(sauvegarde_positions3)); delay (200); goto_moteur1 (*(sauvegarde_positions3+1)); késleltetés (200); goto_moteur2 (*(sauvegarde_positions3+2)); delay (200); goto_moteur3 (*(sauvegarde_positions3+3)); késleltetés (200); goto_moteur5 (*(sauvegarde_positions3+4)); delay (200); szünet; 4. eset: goto_moteur (*(sauvegarde_positions4)); delay (200); goto_moteur1 (*(sauvegarde_positions4+1)); késleltetés (200); goto_moteur2 (*(sauvegarde_positions4+2)); delay (200); goto_moteur3 (*(sauvegarde_positions4+3)); késleltetés (200); goto_moteur5 (*(sauvegarde_positions4+4)); delay (200); szünet; 5. eset: goto_moteur (*(sauvegarde_positions5)); delay (200); goto_moteur1 (*(sauvegarde_positions5+1)); késleltetés (200); goto_moteur2 (*(sauvegarde_positions5+2)); delay (200); goto_moteur3 (*(sauvegarde_positions5+3)); késleltetés (200); goto_moteur5 (*(sauvegarde_positions5+4)); delay (200); szünet; 6. eset: goto_moteur (*(sauvegarde_positions6)); delay (200); goto_moteur1 (*(sauvegarde_positions6+1)); késleltetés (200); goto_moteur2 (*(sauvegarde_positions6+2)); delay (200); goto_moteur3 (*(sauvegarde_positions6+3)); késleltetés (200); goto_moteur5 (*(sauvegarde_positions6+4)); delay (200); szünet; 7. eset: goto_moteur (*(sauvegarde_positions7)); delay (200); goto_moteur1 (*(sauvegarde_positions7+1)); késleltetés (200); goto_moteur2 (*(sauvegarde_positions7+2)); delay (200); goto_moteur3 (*(sauvegarde_positions7+3)); késleltetés (200); goto_moteur5 (*(sauvegarde_positions7+4)); delay (200); szünet; 8. eset: goto_moteur (*(sauvegarde_positions8)); delay (200); goto_moteur1 (*(sauvegarde_positions8+1)); késleltetés (200); goto_moteur2 (*(sauvegarde_positions8+2)); delay (200); goto_moteur3 (*(sauvegarde_positions8+3)); késleltetés (200); goto_moteur5 (*(sauvegarde_positions8+4)); delay (200); szünet; 9. eset: goto_moteur (*(sauvegarde_positions9)); delay (200); goto_moteur1 (*(sauvegarde_positions9+1)); késleltetés (200); goto_moteur2 (*(sauvegarde_positions9+2)); delay (200); goto_moteur3 (*(sauvegarde_positions9+3)); késleltetés (200); goto_moteur5 (*(sauvegarde_positions9+4)); delay (200); szünet; } Serial.print ("\ n ************************ FIN REPRODUCE ***************** / n "); késleltetés (500); }} /*Serial.print ("debütáló / 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");*/

késleltetés (100); } // **************************** FONCTIONS ****************** *******************

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

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

Serial.flush ();

visszatérés w; }}

void goto_moteur (int szög_cél)

{while (szög_célszög+lépés_szög) {Serial.print ("\ n -------------- * * * * * * -------------- ---- / n "); Serial.print ("szög_cél = / t"); Soros.nyomtatás (szög_cél); Soros.nyomtatás ("\ n szög1 = / t"); Soros.nyomat (szög); if (szög_célszög + lépés_szög) {szög = szög + lépésszög; moteur.write (szög);} késleltetés (100); } moteur.write (szög_cél); } void goto_moteur1 (int szög_cél) {while (szög_célszög1+lépés_szög) {Serial.print ("\ n -------------- * * * * * * ------- ----------- / n "); Serial.print ("szög_cél = / t"); Soros.nyomtatás (szög_cél); Soros.nyomtatás ("\ n szög2 = / t"); Soros.nyomat (szög1); if (szög_célszög1 +lépés_szög) {szög1 += lépésszög; moteur1.write (szög1);;} delay (100); } moteur1.write (szög_cél); } void goto_moteur2 (int szög_cél) {

while (szög_célszög2+lépés_szög)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("szög_cél = / t"); Soros.nyomtatás (szög_cél); Soros.nyomat ("\ n szög3 = / t"); Soros.nyomat (szög2); if (szög_célszög2 +lépés_szög) {szög2 += lépés_szög; moteur2.write (szög2);} késleltetés (100); } moteur2.write (szög_cél); } void goto_moteur3 (int szög_cél) {

while (szög_célszög3+lépés_szög)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("szög_cél = / t"); Soros.nyomtatás (szög_cél); Soros.nyomat ("\ n szög4 = / t"); Soros.nyomat (szög3); if (szög_célszög3 +lépés_szög) {szög3 += lépés_szög; moteur3.write (szög3);} késleltetés (100); } moteur3.write (szög_cél); } void goto_moteur5 (int szög_cél) {

while (szög_célszög5+lépés_szög)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("szög_cél = / t"); Soros.nyomtatás (szög_cél); Soros.nyomtatás ("\ n szög5 = / t"); Soros.nyomat (szög5); if (szög_célszög5 +lépés_szög) {szög5 += lépésszög; moteur5.write (szög5);} késleltetés (100); } moteur5.write (szög_cél); }

void TouchDown_Release () // Érintse meg a gombot

{if (szög5 <180) {szög5 = szög5+lépés_szög_mini; } moteur5.write (szög5); }

void TouchDown_Grab () // TouchDown gombfogás

{if (szög5> 0) {szög5 = szög5-lépés_szög_mini; } moteur5.write (szög5); } void Base_Rotation () {if (szög 0) {szög = szög-lépés_szög; } else szög = 0; moteur.write (szög); } void Waist_Rotation () {if (szög1 20) {szög1 = szög1-lépés_szög; } else szög1 = 20; moteur1.write (szög1); } void Third_Arm_Rotation () {if (szög2 0) {szög2 = szög2-lépcső_szög; } moteur2.write (szög2); } void Fourth_Arm_Rotation () {if (szög3 = 0) {szög3 = szög3-lépés_szög_mini; } moteur3.write (szög3); }

6. lépés: Ez az

Köszönöm, hogy megnézted, remélem tetszett!

Ha tetszett ez az Instructable, akkor látogasson el hozzánk további információért! =)

Ajánlott: