Turinys:
- 1 žingsnis: medžiagos
- 2 žingsnis: 3D spausdinkite roboto ranką
- 3 žingsnis: elektroninis montažas
- 4 žingsnis: „Smartphone“programa
- 5 žingsnis: „Arduino“kodas
- 6 žingsnis: viskas
Video: Robotų rankų žaidimas - išmaniųjų telefonų valdiklis: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
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
Č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ą
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
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
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
// 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:
Simono žaidimas - įdomus žaidimas!: 5 žingsniai
Simono žaidimas - įdomus žaidimas!: Nuoroda: čia Laikas mums treniruoti smegenis, ar ne? Be tų nuobodžių ir beprasmių žaidimų, yra žaidimas „Simono žaidimas“
„Arduino“pagrindu sukurtas „pasidaryk pats“žaidimų valdiklis - „Arduino PS2“žaidimų valdiklis - Žaidimas „Tekken“naudojant „pasidaryk pats“„Arduino“žaidimų pultą: 7 žingsniai
„Arduino“pagrindu sukurtas „pasidaryk pats“žaidimų valdiklis | „Arduino PS2“žaidimų valdiklis | Žaidimas „Tekken“naudojant „pasidaryk pats“„Arduino Gamepad“: Sveiki, vaikinai, žaisti žaidimus visada smagu, tačiau žaisti su savo „pasidaryk pats“žaidimo valdikliu yra smagiau. Taigi, mes padarysime žaidimų valdiklį naudodami „arduino pro micro“šioje instrukcijoje
„Arduino“žaidimų valdiklis + „Unity“žaidimas: 5 žingsniai
„Arduino“žaidimų valdiklis + „Unity“žaidimas: Šioje pamokoje aš jums parodysiu, kaip sukurti/programuoti „arduino“žaidimų valdiklį, kuris gali prisijungti prie vienybės
YABC - dar vienas „Blynk“valdiklis - „IoT“debesų temperatūros ir drėgmės valdiklis, ESP8266: 4 žingsniai
YABC - Dar vienas „Blynk“valdiklis - „IoT“debesų temperatūros ir drėgmės valdiklis, ESP8266: Sveiki, kūrėjai, neseniai pradėjau auginti grybus namuose, austrių grybus, bet jau turiu 3 kartus šių valdiklių namuose, kad galėčiau kontroliuoti savo namų alaus fermentacijos temperatūrą, žmona dabar taip pat daro šį „Kombucha“dalyką ir yra šilumos termostatas
„Labirinto“žaidimas, kurį galima valdyti išmaniuoju telefonu: 5 žingsniai (su paveikslėliais)
„Labirinto“žaidimas, kurį galima valdyti išmaniuoju telefonu: „Labirinto“žaidimas valdomas išmaniuoju telefonu. Labirintas juda pagal išmaniojo telefono nuolydį. Visų pirma, žiūrėkite vaizdo įrašą. „Raspberry Pi“yra „Websocket“serveris. Išmanusis telefonas yra „Websocket“klientas.3. Išmanusis telefonas siunčia jums