সুচিপত্র:
- ধাপ 1: উপকরণ
- ধাপ 2: 3D প্রিন্ট রোবটিক আর্ম
- ধাপ 3: ইলেকট্রনিক মন্টেজ
- ধাপ 4: স্মার্টফোন অ্যাপ্লিকেশন
- ধাপ 5: Arduino কোড
- ধাপ 6: এটাই
ভিডিও: রোবোটিক আর্ম গেম - স্মার্টফোন কন্ট্রোলার: 6 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:00
হ্যালো !
এখানে একটি মজার গ্রীষ্মকালীন খেলা: স্মার্টফোন দ্বারা নিয়ন্ত্রিত রোবোটিক আর্ম !!
আপনি ভিডিওতে দেখতে পাচ্ছেন, আপনি আপনার স্মার্টফোনে কিছু জয়স্টিক দিয়ে আর্ম নিয়ন্ত্রণ করতে পারেন।
আপনি একটি প্যাটার্ন সংরক্ষণ করতে পারেন, যে রোবট একটি লুপে পুনরুত্পাদন করবে, উদাহরণস্বরূপ কিছু পুনরাবৃত্তিমূলক কাজ করার জন্য। কিন্তু এই প্যাটার্নটি আপনার ইচ্ছামতো মডিউলযোগ্য !!!!
সৃজনশীল হও !
ধাপ 1: উপকরণ
এখানে আপনি আপনার প্রয়োজনীয় উপাদান দেখতে পারেন।
এই রোবটিক আর্মটি তৈরি করতে আপনার প্রায় 50 cost খরচ হবে। সফ্টওয়্যার এবং সরঞ্জামগুলি প্রতিস্থাপন করা যেতে পারে, তবে আমি এই প্রকল্পের জন্য সেগুলি ব্যবহার করেছি।
ধাপ 2: 3D প্রিন্ট রোবটিক আর্ম
রোবটিক আর্মটি 3D মুদ্রিত ছিল (আমাদের prusa i3 সহ)।
ওয়েবসাইট "HowtoMechatronics.com" কে ধন্যবাদ, তার এসটিএল ফাইলগুলি একটি 3D বাহু তৈরির জন্য অসাধারণ।
সমস্ত টুকরা মুদ্রণ করতে প্রায় 20 ঘন্টা সময় লাগবে।
ধাপ 3: ইলেকট্রনিক মন্টেজ
মন্টেজ 2 ভাগে পৃথক:
একটি ইলেকট্রনিক অংশ, যেখানে আরডুইনো ডিজিটাল পিন এবং ব্লুটুথ ডিভাইস (Rx, Tx) দ্বারা সার্ভিসের সাথে সংযুক্ত থাকে।
একটি পাওয়ার পার্ট, যেখানে সার্ভোসগুলি 2 টি ফোন চার্জার (5V, 2A সর্বোচ্চ) দিয়ে চালিত হয়।
ধাপ 4: স্মার্টফোন অ্যাপ্লিকেশন
অ্যাপ্লিকেশনটি আবিষ্কারক 2 -এ তৈরি করা হয়েছিল।
আমরা একটি ব্লুটুথ মডিউল (HC-06) ব্যবহার করে আর্ম এবং স্মার্টফোনকে একসাথে সংযুক্ত করি।
অবশেষে, একটি সংরক্ষণ মোড ব্যবহারকারীকে আর্মের জন্য 9 টি অবস্থান সংরক্ষণ করতে দেয়।
বাহু তারপর একটি স্বয়ংক্রিয় মোডে যাবে, যেখানে সে সংরক্ষিত অবস্থানগুলি পুনরুত্পাদন করবে।
ধাপ 5: Arduino কোড
// 08/19 - রোবটিক আর্ম স্মার্টফোন নিয়ন্ত্রিত
#অন্তর্ভুক্ত করুন #সত্য সত্য সংজ্ঞায়িত করুন মিথ্যা মিথ্যা নির্ধারণ করুন // ******************** ঘোষণা ***************** ***********
শব্দ প্রতিনিধি; // mot envoyé du module Arduino au স্মার্টফোন
int chiffre_final = 0; int cmd = 3; // ভেরিয়েবল কমান্ড ডু সার্ভো মোটর (troisième fil (কমলা, jaune)) 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; // 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 r, r1, r2, r3; int enregistrer; বুলিয়ান ফিন = মিথ্যা; বুলিয়ান fin1 = মিথ্যা; বুলিয়ান ফিন 2 = মিথ্যা; বুলিয়ান ফিন 3 = মিথ্যা; বুলিয়ান ফিন 4 = মিথ্যা; শব্দ w; // ভেরিয়েবল এনভয়é ডু স্মার্টফোন এউ মডিউল আরডুইনো ইন্টার সাউভগার্ডে_পজিশন 1 [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)
// ******************** সেটআপ *************************** ******** অকার্যকর সেটআপ () {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); // 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); কোণ = 6; moteur1.write (100); কোণ 1 = 100; moteur2.write (90); moteur3.write (90); //moteur4.write (12); moteur5.write (90); কোণ = 6; কোণ 1 = 100; কোণ 2 = 90; কোণ 3 = 90; কোণ 5 = 90; Serial.begin (9600); // permettra de communiquer au module Bluetooth} // ******************** BOUCLE ****************** ***************** অকার্যকর লুপ () {
// সিরিয়াল.প্রিন্ট ("কোণ");
// সিরিয়াল.প্রিন্ট (আঙ্গুল); সিরিয়াল.প্রিন্ট ("\ টি"); সিরিয়াল। Serial.print (angle3); Serial.print ("\ t"); Serial.print (angle5);
// সিরিয়াল.প্রিন্ট ("আঙ্গুল");
int i; w = গ্রহণযোগ্য (); // on va recevoir une information du smartphone, la variable w switch (w) {case 1: TouchDown_Release (); break; কেস 2: টাচডাউন_গ্র্যাব (); বিরতি; কেস 3: Base_Rotation (); break; কেস 4: Base_AntiRotation (); break; কেস 5: কোমর_ ঘূর্ণন (); বিরতি; কেস 6: কোমর_এন্টি রোটেশন (); বিরতি; কেস 7: থার্ড_আর্ম_রোটেশন (); বিরতি; কেস 8: থার্ড_আর্ম_এন্টি রোটেশন (); বিরতি; কেস 9: চতুর্থ_আর্ম_রোটেশন (); বিরতি; কেস 10: চতুর্থ_আর্ম_এন্টি রোটেশন (); বিরতি; // case 11: Fifth_Arm_Rotation (); break; // case 12: Fifth_Arm_AntiRotation (); break; কেস ২১: সিরিয়াল। = কোণ 5; Serial.println (sauvegarde_positions1 [1]); Serial.println (sauvegarde_positions1 [2]); বিরতি; কেস 22: chiffre_final = 2; sauvegarde_positions2 [0] = কোণ; sauvegarde_positions2 [1] = angle1; sauvegarde_positions2 [2] = angle2; বিরতি; কেস 23: chiffre_final = 3; sauvegarde_positions3 [0] = কোণ; sauvegarde_positions3 [1] = angle1; sauvegarde_positions3 [2] = angle2; কেস 24: chiffre_final = 4; sauvegarde_positions4 [0] = কোণ; sauvegarde_positions4 [1] = angle1; বিরতি; কেস 25: chiffre_final = 5; sauvegarde_positions5 [0] = কোণ; sauvegarde_positions5 [1] = angle1; sauvegarde_positions5 [2] = angle2; বিরতি; কেস 26: chiffre_final = 6; sauvegarde_positions6 [0] = কোণ; sauvegarde_positions6 [1] = angle1; sauvegarde_positions6 [2] = angle2; বিরতি; কেস 27: chiffre_final = 7; sauvegarde_positions7 [0] = কোণ; sauvegarde_positions7 [1] = angle1; sauvegarde_positions7 [2] = angle2; বিরতি; কেস 28: chiffre_final = 8; sauvegarde_positions8 [0] = কোণ; sauvegarde_positions8 [1] = angle1; sauvegarde_positions8 [2] = angle2; বিরতি; কেস 29: chiffre_final = 9; sauvegarde_positions9 [0] = কোণ; sauvegarde_positions9 [1] = angle1; sauvegarde_positions9 [2] = angle2; বিরতি;
মামলা 31: সিরিয়াল.প্রিন্ট ("31"); activate_saving = 1; chiffre_final = 0; বিরতি; // শুরু
কেস 33: সিরিয়াল.প্রিন্ট ("33"); activate_saving = 0; বিরতি; // বাটন ডিফল্ট সংরক্ষণ করুন: বিরতি; } যদি (w == 32) {Serial.print ("nReproduce / nChiffre final:"); সিরিয়াল.প্রিন্ট (chiffre_final); Serial.print ("\ n Sauvegarde অবস্থান 1: / n"); (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions1 ); (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions2 ); (i = 0; i <5; i ++) {Serial.print (sauvegarde_positions3 ); Serial.print ("\ t");} for (i = 1; i <= chiffre_final; i ++) {সিরিয়াল মুদ্রণ ("\ n / n শুরু / n লুপ:"); Serial.print (i); Serial.print ("\ n"); সুইচ (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); বিরতি; } সিরিয়াল.প্রিন্ট ("** n *********************** ফিন রিপ্রুডেস / n "); বিলম্ব (500); }} /*Serial.print ("আত্মপ্রকাশ / n"); সিরিয়াল.প্রিন্ট (sauvegarde_positions1 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions1 [4]); সিরিয়াল.প্রিন্ট (sauvegarde_positions2 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [1]); Serial.print ("\ t"); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions2 [4]); সিরিয়াল.প্রিন্ট (sauvegarde_positions3 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions3 [4]); সিরিয়াল.প্রিন্ট (sauvegarde_positions4 [0]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [1]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [3]); Serial.print ("\ t"); Serial.print (sauvegarde_positions4 [4]);
Serial.print ("f nfin / n");*/
বিলম্ব (100); } // **************************** ফাংশন ****************** ******************
word recevoir () {// fonction permettant de recevoir l'information du smartphone
যদি (Serial.available ()) {w = Serial.read ();
Serial.flush ();
ফেরত w; }}
অকার্যকর goto_moteur (int angle_destination)
{while (angle_destination angle+step_angle) {Serial.print ("\ n -------------- * * * * * * * -------------- ---- / n "); Serial.print ("angle_destination = / t"); সিরিয়াল.প্রিন্ট (এঙ্গেল_ডেস্টিনেশন); Serial.print ("angle n angle1 = / t"); সিরিয়াল.প্রিন্ট (কোণ); যদি (কোণ_নির্দেশ কোণ + ধাপ_কোণ) {কোণ = কোণ + ধাপ_অঙ্গ; 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 ("\ n angle2 = / t"); Serial.print (angle1); যদি (angle_destination angle1 +step_angle) {angle1 += step_angle; moteur1.write (angle1);;} বিলম্ব (100); } moteur1.write (angle_destination); } void goto_moteur2 (int angle_destination) {
while (angle_destination angle2+step_angle)
{Serial.print ("\ n -------------- * * * * * * * ------------------ / n"); Serial.print ("angle_destination = / t"); সিরিয়াল.প্রিন্ট (এঙ্গেল_ডেস্টিনেশন); Serial.print ("angle n angle3 = / t"); Serial.print (angle2); যদি (angle_destination angle2 +step_angle) {angle2 += step_angle; moteur2.write (angle2);} বিলম্ব (100); } moteur2.write (angle_destination); } void goto_moteur3 (int angle_destination) {
while (angle_destination angle3+step_angle)
{Serial.print ("\ n -------------- * * * * * * * ------------------ / n"); Serial.print ("angle_destination = / t"); সিরিয়াল.প্রিন্ট (এঙ্গেল_ডেস্টিনেশন); Serial.print ("\ n angle4 = / t"); Serial.print (angle3); যদি (angle_destination angle3 +step_angle) {angle3 += step_angle; moteur3.write (angle3);} বিলম্ব (100); } moteur3.write (angle_destination); } void goto_moteur5 (int angle_destination) {
while (angle_destination angle5+step_angle)
{Serial.print ("\ n -------------- * * * * * * * ------------------ n"); Serial.print ("angle_destination = / t"); সিরিয়াল.প্রিন্ট (এঙ্গেল_ডেস্টিনেশন); Serial.print ("\ n angle5 = / t"); Serial.print (angle5); যদি (angle_destination angle5 +step_angle) {angle5 += step_angle; moteur5.write (angle5);} বিলম্ব (100); } moteur5.write (angle_destination); }
অকার্যকর টাচডাউন_রিলিজ () // টাচডাউন বাটন রিলিজ
{if (angle5 <180) {angle5 = angle5+step_angle_mini; } moteur5.write (কোণ 5); }
অকার্যকর টাচডাউন_গ্র্যাব () // টাচডাউন বোতাম গ্র্যাব
{if (angle5> 0) {angle5 = angle5-step_angle_mini; } moteur5.write (কোণ 5); } অকার্যকর বেস_রোটেশন () {যদি (কোণ 0) {কোণ = কোণ-ধাপ_এঙ্গেল; } অন্য কোণ = 0; moteur.write (কোণ); } অকার্যকর কোমর_আবর্তন () {যদি (কোণ 1 20) {কোণ 1 = কোণ 1-ধাপ_এঙ্গেল; } অন্য কোণ 1 = 20; moteur1.write (কোণ 1); } void Third_Arm_Rotation () {if (angle2 0) {angle2 = angle2-step_angle; } moteur2.write (কোণ 2); } void Fourth_Arm_Rotation () {if (angle3 = 0) {angle3 = angle3-step_angle_mini; } moteur3.write (কোণ 3); }
ধাপ 6: এটাই
দেখার জন্য ধন্যবাদ, আমি আশা করি আপনি প্রশংসা করেছেন!
যদি আপনি এই নির্দেশযোগ্য পছন্দ করেন, আপনি নিশ্চিতভাবে আরো জন্য আমাদের দেখতে পারেন! =)
প্রস্তাবিত:
গ্রিপার সহ রোবোটিক আর্ম: 9 টি ধাপ (ছবি সহ)
গ্রিপারের সাথে রোবোটিক আর্ম: বড় আকারের গাছের কারণে এবং লেবু গাছ লাগানো অঞ্চলের উষ্ণ আবহাওয়ার কারণে লেবু গাছ কাটা কঠিন কাজ বলে মনে করা হয়। এজন্যই কৃষি শ্রমিকদের আরও বেশি করে তাদের কাজ সম্পন্ন করতে সাহায্য করার জন্য আমাদের অন্য কিছু দরকার
Arduino ভিত্তিক DIY গেম কন্ট্রোলার - Arduino PS2 গেম কন্ট্রোলার - DIY Arduino গেমপ্যাডের সাথে টেককেন বাজানো: 7 টি ধাপ
Arduino ভিত্তিক DIY গেম কন্ট্রোলার | Arduino PS2 গেম কন্ট্রোলার | DIKY Arduino গেমপ্যাডের সাথে Tekken বাজানো: হ্যালো বন্ধুরা, গেম খেলা সবসময়ই মজার কিন্তু আপনার নিজের DIY কাস্টম গেম কন্ট্রোলারের সাথে খেলা আরও মজাদার।
Arduino গেম কন্ট্রোলার + ইউনিটি গেম: 5 টি ধাপ
Arduino গেম কন্ট্রোলার + ইউনিটি গেম: এই নির্দেশে আমি আপনাকে দেখাব কিভাবে একটি arduino গেম কন্ট্রোলার তৈরি/প্রোগ্রাম করতে হয় যা unityক্যের সাথে সংযোগ স্থাপন করতে পারে
PS2 কন্ট্রোলার ব্যবহার করে জিও দিয়ে রোবোটিক আর্ম নিয়ন্ত্রণ করুন: 4 টি ধাপ
PS2 কন্ট্রোলার ব্যবহার করে জিও দিয়ে রোবটিক আর্ম নিয়ন্ত্রণ করুন: এই ব্লগ পোস্টটি জিও রোবটিক্স সিরিজের একটি অংশ। এই টিউটোরিয়ালে, আমরা আমাদের রোবোটিক আর্মের আরেকটি অংশ যুক্ত করব। পূর্ববর্তী টিউটোরিয়ালগুলির জন্য একটি বেস অন্তর্ভুক্ত নয়
Arduino গেম কন্ট্রোলার লাইটের সাথে সাড়া দিচ্ছে আপনার ইউনিটি গেম :: 24 ধাপ
আরডুইনো গেম কন্ট্রোলার লাইটের সাড়া দিয়ে আপনার ইউনিটি গেমের সাড়া দিচ্ছে :: প্রথমে আমি এই জিনিসটি শব্দে লিখেছি। এই প্রথমবার আমি নির্দেশযোগ্য ব্যবহার করি তাই যখনই আমি বলি: কোড লিখুন যাতে জানুন যে আমি সেই ধাপের শীর্ষে চিত্রটি উল্লেখ করছি। এই প্রকল্পে আমি 2 টি আলাদা বিট চালানোর জন্য 2 টি arduino & rsquo ব্যবহার করি