Tartalomjegyzék:
- 1. lépés: Anyagok
- 2. lépés: 3D nyomtatás a robotkarról
- 3. lépés: Elektronikus montázs
- 4. lépés: Okostelefonos alkalmazás
- 5. lépés: Az Arduino kód
- 6. lépés: Ez az
Videó: Robotkaros játék - okostelefon -vezérlő: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
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
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
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
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
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
// 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:
Puha játék Bluetooth kocka és Android játék fejlesztése az MIT App Inventor segítségével: 22 lépés (képekkel)
Puha játék Bluetooth kocka és Android játék fejlesztése az MIT App Inventor segítségével: A kockajátéknak különböző módszerei vannak 1) Hagyományos játék fa vagy sárgaréz kockákkal. 2) Játssz mobilon vagy PC -n a mobil vagy a PC által véletlenszerűen létrehozott kockával. fizikailag játszani a kockával, és mozgatni az érmét a mobilon vagy a számítógépen
Simon játék - szórakoztató játék!: 5 lépés
Simon Game - Szórakoztató játék !: Referencia: IttHosszú hétvége után valóban keményen kell próbálnia elvégezni az összes feladatot és munkát, amelyekért Ön felelős. Itt az ideje, hogy edzjük az agyunkat, nem? Az unalmas és értelmetlen játékok mellett van egy Simon Game nevű játék
Robotkaros markolat: 3 lépés (képekkel)
Robotkaros markolat: Ez a 3D nyomtatóval készített robotfogó két olcsó szervóval (MG90 vagy SG90) vezérelhető. Az agypajzsot (+Arduino) használtuk a szorító vezérléséhez, a jjRobots vezérlő APP -jával pedig távolról mindent át tudunk mozgatni a WIFI -n keresztül, de bármilyen
Minion Cubecraft játék (zseblámpa játék): 4 lépés
Minion Cubecraft játék (A zseblámpa játéka): Régóta fáklyát akartam készíteni, hogy sötétben is használhassam, de az ötlet, hogy csak egy hengeres alakú tárgy legyen, csak be-ki kapcsolóval, ellenállt, hogy ne csináljam. Túl mainstream volt. Aztán egy napon a bátyám hozott egy kis NYÁK -ot
A játék megvásárlása előtt ellenőrizheti, hogy fut -e egy játék a számítógépén .: 4 lépés
Hogyan lehet ellenőrizni, hogy a játék fut -e a számítógépen, mielőtt megvásárolná a játékot.: Nemrégiben beszereztem egy barátomtól a Call of Duty 4 -et (lehet, hogy ingyen), mert nem fut a számítógépén. Nos, a számítógépe meglehetősen új, és megdöbbentett, miért nem fut. Így pár órányi internetes keresés után találtam rá