Мазмуну:

Robotic Arm Game - Smartphone Controller: 6 кадам
Robotic Arm Game - Smartphone Controller: 6 кадам

Video: Robotic Arm Game - Smartphone Controller: 6 кадам

Video: Robotic Arm Game - Smartphone Controller: 6 кадам
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Июль
Anonim
Роботтук кол оюну - Смартфондун контролери
Роботтук кол оюну - Смартфондун контролери

Салам !

Бул жерде кызыктуу жайкы оюн: Смартфон башкарган робот колу !!

Видеодон көрүнүп тургандай, сиз смартфонуңуздагы Joysticks менен Колун башкара аласыз.

Ошондой эле, мисалы, кээ бир кайталануучу тапшырмаларды аткаруу үчүн, роботту циклде кайра чыгарган үлгүнү сактай аласыз. Бирок бул үлгү сиз каалагандай модулдаштырылат !!!!

Чыгармачыл бол !

1 -кадам: материалдар

Материалдар
Материалдар

Бул жерде сиз керектүү материалды көрө аласыз.

Бул робот колун жасоо үчүн сизге 50 еврого жакын акча кетет. Программаны жана шаймандарды алмаштырса болот, бирок мен аларды бул долбоор үчүн колдондум.

2 -кадам: 3D робот колун басып чыгаруу

3D робот колун басып чыгаруу
3D робот колун басып чыгаруу
3D робот колун басып чыгаруу
3D робот колун басып чыгаруу
3D робот колун басып чыгаруу
3D робот колун басып чыгаруу

Robotic Arm 3D басылган (биздин prusa i3 менен).

"HowtoMechatronics.com" веб -сайтынын жардамы менен, анын STL файлдары 3D колун куруу үчүн сонун.

Бардык чыгармаларды басып чыгарууга 20 сааттай убакыт кетет.

3 -кадам: Электрондук монтаж

Электрондук монтаж
Электрондук монтаж

Монтаж 2 бөлүктөн турат:

Электрондук бөлүк, анда arduino санарип пиндер аркылуу сервоско жана Bluetooth түзмөгү (Rx, Tx) менен туташкан.

Күч бөлүгү, бул жерде серволор 2 телефон кубаттагычы менен иштейт (5V, 2A max).

4 -кадам: Smartphone тиркемеси

Smartphone тиркемеси
Smartphone тиркемеси

Колдонмо App ойлоп табуучу 2де жасалган. Биз 2 туткасын 4 сервосун жана дагы 2 баскычын көзөмөлдөө үчүн колдонобуз.

Биз Bluetooth модулун (HC-06) колдонуу менен Arm жана Smartphoneду бириктиребиз.

Акыр -аягы, үнөмдөө режими колдонуучуга Arm үчүн 9 позицияга чейин сактоого мүмкүндүк берет.

Андан кийин кол автоматтык режимге өтөт, ал жерде сакталган позицияларды кайра чыгарат.

5 -кадам: Arduino коду

Arduino коду
Arduino коду
Arduino коду
Arduino коду

// 08/19 - Robotic Arm Smartphone көзөмөлдөнөт

#кошуу #ЧЫНЫГЫ чындыкты аныктоо #ЖАЛГАН жалганды аныктоо // ******************** ДЕКЛАРАЦИЯЛАР ***************** ***********

сөз өкүлү; // mot envoyé du module Arduino au smartphone

int chiffre_final = 0; int cmd = 3; // өзгөрмөлүү командалык тейлөөчү (troisième fil (апельсин, сары)) int cmd1 = 5; // servo1 int cmd2 = 9; // servo2 int cmd3 = 10; // servo3 // int cmd4 = 10; // servo4 int cmd5 = 11; // pince int activate_saving = 0; Servo moteur; // on définit notre servomoteur Servo moteur1; Servo moteur2; Servo moteur3; // Servo moteur4; Servo moteur5; int step_angle_mini = 4; int step_angle = 3; int бурч, бурч1, бурч3, бурч5, бурч2; // бурч int pas; int r, r1, r2, r3; int enregistrer; логикалык фин = FALSE; логикалык фин1 = ЖАЛГАН; логикалык фин2 = FALSE; логикалык фин3 = ЖАЛГАН; логикалык фин4 = FALSE; сөз w; // смартфондун же модулдун өзгөрмө элчиси 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 бурчу; // бурулуш бурчу (0 жана 180)

//********************ЖАЙГАШУУ*************************** ******** 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 l'objet au pin de commande moteur1.attach (cmd1); moteur2.attach (cmd2); moteur3.attach (cmd3); // moteur4.attach (cmd4); moteur5.attach (cmd5); moteur.write (6); бурч = 6; moteur1.write (100); angle1 = 100; moteur2.write (90); moteur3.write (90); //moteur4.write(12); moteur5.write (90); бурч = 6; angle1 = 100; angle2 = 90; angle3 = 90; angle5 = 90; Serial.begin (9600); // Bluetooth модулу менен байланышуу} // ******************** БУЛ ****************** ***************** void loop () {

// Serial.print ("бурч");

//Serial.print(angle); Serial.print ("\ t"); Serial.print (angle1); Serial.print ("\ t"); Serial.print (angle2); Serial.print ("\ t "); Serial.print (angle3); Serial.print (" / t "); Serial.print (angle5); Serial.print (" / n ");

//Serial.print("angle ");

int i; w = recevoir (); // смартфондо маалымат жок, w w switch (w) {1 -жагдай: TouchDown_Release (); break; 2 -жагдай: TouchDown_Grab (); break; 3 -жагдай: Base_Rotation (); break; 4 -жагдай: Base_AntiRotation (); break; учурда 5: Waist_Rotation (); тыныгуу; 6 -жагдай: Waist_AntiRotation (); break; 7 -жагдай: Third_Arm_Rotation (); break; case 8: Third_Arm_AntiRotation (); break; учурда 9: Fourth_Arm_Rotation (); break; 10 -жагдай: Fourth_Arm_AntiRotation (); break; // иш 11: Fifth_Arm_Rotation (); break; // 12 -учур: Fifth_Arm_AntiRotation (); break; Case 21: Serial.print ("case key 1"); chiffre_final = 1; sauvegarde_positions1 [0] = бурч; sauvegarde_positions1 [1] = бурч1; sauvegarde_positions1 [2] = бурч2; sauvegarde_positions1puvez1] 3) = бурч3] 4] = бурч5; Serial.println (sauvegarde_positions1 [1]); Serial.println (sauvegarde_positions1 [2]); Serial.println (sauvegarde_positions1 [3]); Serial.println (sauvegarde_positions1 [4]; тыныгуу; учурда 22: chiffre_final = 2; sauvegarde_positions2 [0] = бурч; sauvegarde_positions2 [1] = бурч1; sauvegarde_positions2 [2] = бурч2; sauvegarde_positions2 [3] = бурч3; sauvegarde_positions2 [4] тыныгуу; 23 -жагдай: chiffre_final = 3; sauvegarde_positions3 [0] = бурч; sauvegarde_positions3 [1] = бурч1; sauvegarde_positions3 [2] = бурч2; sauvegarde_positions3 [3] = бурч3; sauvegarde_positions3 [4] учурда 24: chiffre_final = 4; sauvegarde_positions4 [0] = бурч; sauvegarde_positions4 [1] = бурч1; sauvegarde_positions4 [2] = бурч2; sauvegarde_positions4 [3] = бурч3; sauvegarde_positions5 [4] тыныгуу; 25 -жагдай: chiffre_final = 5; sauvegarde_positions5 [0] = бурч; sauvegarde_positions5 [1] = бурч1; sauvegarde_positions5 [2] = бурч2; sauvegarde_positions5 [3] = бурч3; sauvegarde_positions5 [4] тыныгуу; 26 -жагдай: chiffre_final = 6; sauvegarde_positions6 [0] = бурч; sauvegarde_positions6 [1] = бурч1; sauvegarde_positions6 [2] = бурч2; sauvegarde_positions6 [3] = бурч3; sauvegarde_positions6 [4] тыныгуу; иш 27: chiffre_final = 7; sauvegarde_positions7 [0] = бурч; sauvegarde_positions7 [1] = бурч1; sauvegarde_positions7 [2] = бурч2; sauvegarde_positions7 [3] = бурч3; sauvegarde_positions5 [4] тыныгуу; учурда 28: chiffre_final = 8; sauvegarde_positions8 [0] = бурч; sauvegarde_positions8 [1] = бурч1; sauvegarde_positions8 [2] = бурч2; sauvegarde_positions8 [3] = бурч3; sauvegarde_positions8 [4] тыныгуу; иш 29: chiffre_final = 9; sauvegarde_positions9 [0] = бурч; sauvegarde_positions9 [1] = бурч1; sauvegarde_positions9 [2] = бурч2; sauvegarde_positions9 [3] = бурч3; sauvegarde_positions5 [4] тыныгуу;

31 -жагдай: Serial.print ("31"); activate_saving = 1; chiffre_final = 0; тыныгуу; // БАШТА

учурда 33: Serial.print ("33"); activate_saving = 0; break; // BUTTON SAVE демейки: тыныгуу; } if (w == 32) {Serial.print ("\ nReproduce / nChiffre final:"); Serial.print (chiffre_final); Serial.print ("\ n Sauvegarde позициясы 1: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde позициясы 2: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); Serial.print ("\ t");} Serial.print ("\ n Sauvegarde позициясы 3: / n"); for (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions3 ); Serial.print ("\ t");} for (i = 1; i <= chiffre_final; i ++) {Serial. басып чыгаруу ("\ n / n БАШТАЛГАН / nЧуркоо:"); Serial.print (i); Serial.print ("\ n"); switch (i) {1 -абал: goto_moteur (*(sauvegarde_positions1)); кечиктирүү (200); goto_moteur1 (*(sauvegarde_positions1+1)); кечигүү (200); goto_moteur2 (*(sauvegarde_positions1+2)); кечиктирүү (200); goto_moteur3 (*(sauvegarde_positions1+3)); кечигүү (200); goto_moteur5 (*(sauvegarde_positions1+4)); кечигүү (200); тыныгуу; 2 -жагдай: goto_moteur (*(sauvegarde_positions2)); кечиктирүү (200); goto_moteur1 (*(sauvegarde_positions2+1)); кечигүү (200); goto_moteur2 (*(sauvegarde_positions2+2)); кечигүү (200); goto_moteur3 (*(sauvegarde_positions2+3)); кечигүү (200); goto_moteur5 (*(sauvegarde_positions2+4)); кечигүү (200); тыныгуу; 3 -жагдай: goto_moteur (*(sauvegarde_positions3)); кечиктирүү (200); goto_moteur1 (*(sauvegarde_positions3+1)); кечигүү (200); goto_moteur2 (*(sauvegarde_positions3+2)); кечигүү (200); goto_moteur3 (*(sauvegarde_positions3+3)); кечигүү (200); goto_moteur5 (*(sauvegarde_positions3+4)); кечиктирүү (200); тыныгуу; 4 -жагдай: goto_moteur (*(sauvegarde_positions4)); кечиктирүү (200); goto_moteur1 (*(sauvegarde_positions4+1)); кечигүү (200); goto_moteur2 (*(sauvegarde_positions4+2)); кечигүү (200); goto_moteur3 (*(sauvegarde_positions4+3)); кечигүү (200); goto_moteur5 (*(sauvegarde_positions4+4)); кечигүү (200); тыныгуу; 5 -жагдай: goto_moteur (*(sauvegarde_positions5)); кечиктирүү (200); goto_moteur1 (*(sauvegarde_positions5+1)); кечигүү (200); goto_moteur2 (*(sauvegarde_positions5+2)); кечигүү (200); goto_moteur3 (*(sauvegarde_positions5+3)); кечигүү (200); goto_moteur5 (*(sauvegarde_positions5+4)); кечигүү (200); тыныгуу; 6 -жагдай: goto_moteur (*(sauvegarde_positions6)); кечиктирүү (200); goto_moteur1 (*(sauvegarde_positions6+1)); кечигүү (200); goto_moteur2 (*(sauvegarde_positions6+2)); кечиктирүү (200); goto_moteur3 (*(sauvegarde_positions6+3)); кечигүү (200); goto_moteur5 (*(sauvegarde_positions6+4)); кечигүү (200); тыныгуу; 7 -жагдай: goto_moteur (*(sauvegarde_positions7)); кечиктирүү (200); goto_moteur1 (*(sauvegarde_positions7+1)); кечигүү (200); goto_moteur2 (*(sauvegarde_positions7+2)); кечиктирүү (200); goto_moteur3 (*(sauvegarde_positions7+3)); кечигүү (200); goto_moteur5 (*(sauvegarde_positions7+4)); кечиктирүү (200); тыныгуу; 8 -жагдай: goto_moteur (*(sauvegarde_positions8)); кечиктирүү (200); goto_moteur1 (*(sauvegarde_positions8+1)); кечигүү (200); goto_moteur2 (*(sauvegarde_positions8+2)); кечиктирүү (200); goto_moteur3 (*(sauvegarde_positions8+3)); кечигүү (200); goto_moteur5 (*(sauvegarde_positions8+4)); кечигүү (200); тыныгуу; учурда 9: goto_moteur (*(sauvegarde_positions9)); кечиктирүү (200); goto_moteur1 (*(sauvegarde_positions9+1)); кечигүү (200); goto_moteur2 (*(sauvegarde_positions9+2)); кечиктирүү (200); goto_moteur3 (*(sauvegarde_positions9+3)); кечигүү (200); goto_moteur5 (*(sauvegarde_positions9+4)); кечигүү (200); тыныгуу; } Serial.print ("\ n *********************** FIN КАЙРА КӨЧҮРҮҮ ***************** / n "); кечигүү (500); }} /*Serial.print ("debut / 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 ("\ nфин / n");*/

кечиктирүү (100); } // **************************** ФОНКЦИЯЛАР ****************** ******************

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

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

Serial.flush ();

кайтуу w; }}

void goto_moteur (int angle_destination)

{while (angle_destination angle+step_angle) {Serial.print ("\ n -------------- * * * * * * -------------- ---- / n "); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Serial.print ("\ n angle1 = / t"); Serial.print (бурч); if (angle_destination angle + step_angle) {бурч = бурч + step_angle; moteur.write (бурч);} кечигүү (100); } moteur.write (angle_destination); } void goto_moteur1 (int angle_destination) {while (angle_destination angle1+step_angle) {Serial.print ("\ n -------------- * * * * * * ------- ----------- / n "); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Serial.print ("\ n angle2 = / t"); Serial.print (angle1); if (angle_destination angle1 +step_angle) {angle1 += step_angle; moteur1.write (angle1);;} кечигүү (100); } moteur1.write (angle_destination); } void goto_moteur2 (int angle_destination) {

ал эми (бурчтун_айлануу бурчу2+кадамдын бурчу)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Serial.print ("\ n angle3 = / t"); Serial.print (angle2); if (angle_destination angle2 +step_angle) {angle2 += step_angle; moteur2.write (angle2);} кечигүү (100); } moteur2.write (angle_destination); } void goto_moteur3 (int angle_destination) {

жатканда (бурчтун_айлануу бурчу3+кадамдын бурчу)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Serial.print ("\ n angle4 = / t"); Serial.print (angle3); if (angle_destination angle3 +step_angle) {angle3 += step_angle; moteur3.write (angle3);} кечигүү (100); } moteur3.write (angle_destination); } void goto_moteur5 (int angle_destination) {

ал эми (бурчтун_айлануу бурчу5+кадамдын бурчу)

{Serial.print ("\ n -------------- * * * * * * ------------------ / n"); Serial.print ("angle_destination = / t"); Serial.print (angle_destination); Serial.print ("\ n angle5 = / t"); Serial.print (angle5); if (angle_destination angle5 +step_angle) {angle5 += step_angle; moteur5.write (angle5);} кечигүү (100); } moteur5.write (angle_destination); }

жараксыз TouchDown_Release () // TouchDown баскычын чыгаруу

{эгер (бурч5 <180) {бурч5 = бурч5+step_angle_mini; } moteur5.write (angle5); }

void TouchDown_Grab () // TouchDown Button Grab

{if (angle5> 0) {angle5 = angle5-step_angle_mini; } moteur5.write (angle5); } void Base_Rotation () {if (angle 0) {angle = angle-step_angle; } else angle = 0; жазуучу.жазуу (бурч); } void Waist_Rotation () {if (angle1 20) {angle1 = angle1-step_angle; } else angle1 = 20; moteur1.write (angle1); } void Third_Arm_Rotation () {if (angle2 0) {angle2 = angle2-step_angle; } moteur2.write (angle2); } void Fourth_Arm_Rotation () {if (angle3 = 0) {angle3 = angle3-step_angle_mini; } moteur3.write (angle3); }

6 -кадам: Болду

Көргөнүңүз үчүн рахмат, бааладыңыз деп ишенем!

Эгерде сиз бул Нускаманы жактырган болсоңуз, анда бизге көбүрөөк келүү үчүн шектенбесек болот! =)

Сунушталууда: