সুচিপত্র:

Arduino সঙ্গে DIY স্মার্ট ইলেকট্রনিক Ukulele: 14 ধাপ (ছবি সহ)
Arduino সঙ্গে DIY স্মার্ট ইলেকট্রনিক Ukulele: 14 ধাপ (ছবি সহ)
Anonim
Arduino সঙ্গে DIY স্মার্ট ইলেকট্রনিক Ukulele
Arduino সঙ্গে DIY স্মার্ট ইলেকট্রনিক Ukulele

আমরা ধাপে ধাপে ব্যাখ্যা করতে যাচ্ছি কিভাবে আপনি আপনার নিজের ইউকুলেলে ডিজাইন করতে পারেন এবং কিছু প্রভাব যোগ করতে পারেন যা এটিকে অনন্য করে তুলবে, যেমন আমরা ইউকুলেলের পৃষ্ঠে যা চাই তা আঁকা বা কিছু হালকা প্রভাব যোগ করা।

এটি করার জন্য, একটি ইউকুলেল কিট কেনা প্রয়োজন।

আমরা কীভাবে যন্ত্রটি একত্রিত করব এবং যে বিভিন্ন সমস্যা দেখা দিতে পারে তা সমাধান করতে যাচ্ছি।

ধাপ 1: উপকরণ

উপকরণ
উপকরণ
উপকরণ
উপকরণ

কাঠামো উপকরণ:

DIY ukelele মাউন্ট কিট (এটি অন্য একটি কিট হতে পারে) দ্বারা গঠিত:

1- শরীর।

2-ঘাড়।

3-স্যাডেল

4-দড়ি সমর্থন

5-সেতু

6-স্ট্রিং বাদাম।

7-মেশিনের মাথার জন্য রিং ঠিক করা (x4)।

8-মেশিন হেড (x4)।

মেশিন হেডগুলির জন্য 9-মাউন্ট স্ক্রু (x8)।

মেশিন ব্রিজের জন্য 10-মাউন্ট স্ক্রু (x2)।

11-ব্রিজ মাউন্ট স্ক্রুগুলির জন্য কভার ক্যাপ (x2)।

12-স্ট্রিং (x4)।

ইলেকট্রনিক উপকরণ:

  • ন্যানো আরডুইনো।
  • লেডের চাকা WS2812।
  • অ্যাকসিলরোমিটার BMA220 (alচ্ছিক)।
  • ব্যাটারি সংযোগকারী।
  • 9V এর ব্যাটারি।
  • সুইচ।

অন্যান্য

  • কাঠ বার্নিশ।
  • ভেলক্রো।
  • সোল্ডারিং টিন।
  • বার্নিশিংয়ের জন্য প্রতিরক্ষামূলক প্লাস্টিক।
  • গরম গলে যাওয়া সিলিকন।

সরঞ্জাম:

  • আলোক খোদাই.
  • স্যান্ডপেপার
  • স্টার স্ক্রু ড্রাইভার।
  • পেইন্ট ব্রাশ।
  • গরম গলানো বন্দুক।
  • টিনের সোল্ডারিং লোহা।

ধাপ 2: ইউকুলেলে কাস্টমাইজ করুন

ইউকুলেলে কাস্টমাইজ করুন
ইউকুলেলে কাস্টমাইজ করুন
ইউকুলেলে কাস্টমাইজ করুন
ইউকুলেলে কাস্টমাইজ করুন
ইউকুলেলে কাস্টমাইজ করুন
ইউকুলেলে কাস্টমাইজ করুন

আমাদের ইউকুলেলে পরিমাপ করার জন্য আমরা শরীরে লেজার কাটার দিয়ে একটি অঙ্কন খোদাই করতে পারি। সেই সরঞ্জাম না থাকার ক্ষেত্রে, আমরা এটি আঁকতে পারি।

আমরা যে ছবিটি বেছে নিয়েছি সেটিই প্রথম প্রদর্শিত হয়।

প্রথমত, খোদাই করার জন্য আমাদের অঙ্কন টেমপ্লেট ডিজাইন করতে হবে।

এটি বাস্তবায়নের জন্য, আমরা 'ইঙ্কস্কেপ' নামে একটি সফটওয়্যার ব্যবহার করব যা আমরা এই লিঙ্ক থেকে পেতে পারি:

এটি ব্যবহার করার জন্য, আমাদের অবশ্যই সেই ছবিটি সামঞ্জস্য করতে হবে যা আমরা ব্যবহার করতে চাই যেমন আমরা দ্বিতীয় ছবিতে দেখাই। আপনি দেখতে পাচ্ছেন যে আমরা প্রাথমিক চিত্রটি ঘোরানোর জন্য হাতের চক্রটিকে যন্ত্রের বৃত্তের সাথে সামঞ্জস্য করতে পারি। যেমনটি আমরা আগেই বলেছি, আপনি যে কোনও ছবি রাখতে পারেন।

ধাপ 3: ইঙ্কস্কেপ ব্যবহার করে একটি ছবি ভেক্টরাইজ করুন

ইঙ্কস্কেপ ব্যবহার করে একটি ছবি ভেক্টরাইজ করুন
ইঙ্কস্কেপ ব্যবহার করে একটি ছবি ভেক্টরাইজ করুন
ইঙ্কস্কেপ ব্যবহার করে একটি ছবি ভেক্টরাইজ করুন
ইঙ্কস্কেপ ব্যবহার করে একটি ছবি ভেক্টরাইজ করুন
ইঙ্কস্কেপ ব্যবহার করে একটি ছবি ভেক্টরাইজ করুন
ইঙ্কস্কেপ ব্যবহার করে একটি ছবি ভেক্টরাইজ করুন
ইঙ্কস্কেপ ব্যবহার করে একটি ছবি ভেক্টরাইজ করুন
ইঙ্কস্কেপ ব্যবহার করে একটি ছবি ভেক্টরাইজ করুন

আমরা দেখতে পিক্সম্যাপ (jpg, png, যে কোন রাস্টার ফরম্যাট যা ইঙ্কস্কেপ খুলতে পারে) থেকে কিভাবে একটি ভেক্টর ফাইল তৈরি করতে হয়।

ইঙ্কস্কেপ ইঙ্কস্কেপ একটি ওপেন সোর্স ভেক্টর গ্রাফিক্স এডিটর, এবং শিরোনাম অনুসারে, এই টুলটি আমি লোগোগুলিকে ভেক্টরাইজ করতে ব্যবহার করব। ভেক্টরাইজিং ধাপগুলি যে কোনও ভেক্টরাইজেশনের জন্য পদক্ষেপগুলি সাধারণ যা আমরা করতে চাই।

  1. ইঙ্কস্কেপে ছবিটি খুলুন
  2. ট্রেস বিটম্যাপ টুল পাথ-> ট্রেস বিটম্যাপ খুলুন
  3. ট্রেস বিটম্যাপ বিকল্পগুলির চারপাশে খেলুন
  4. ট্রেসিং চালান
  5. ফলাফল পরিষ্কার করুন (যদি প্রয়োজন হয়)

"চারপাশে খেলা" অংশটি লক্ষ্য করুন। আমি ট্রেসিং এ বিশেষজ্ঞ নই, তাই আমি এই টুলটিকে নকব এবং লাইট সহ ব্ল্যাক বক্স হিসাবে বিবেচনা করি, যতক্ষণ না আমি সেরা ফলাফল পাই

ধাপ 4: লোগো খোদাই

Image
Image
লোগো খোদাই
লোগো খোদাই
লোগো খোদাই
লোগো খোদাই

এই জন্য, পৃষ্ঠের একটি সিলুয়েট থাকা গুরুত্বপূর্ণ যার উপর অঙ্কনের খোদাই উত্পাদিত হবে।

খোদাই করার জন্য, আমরা 'T2Laser' সফটওয়্যার ব্যবহার করতে যাচ্ছি। আমরা এই সফটওয়্যারটি থেকে পেতে পারি:

একবার আমরা সফটওয়্যারটি খুললে, শেষ ধাপে আমাদের তৈরি করা ছবিটি লোড করতে হবে। তারপরে, "কন্ট্রোল লেজার" বোতাম টিপুন এবং সিএনসি নিয়ন্ত্রণগুলি উপস্থিত হবে। দুটি ছবি আমাদের লেজার কাটার দিয়ে খোদাই করার প্রক্রিয়া এবং ফলাফল দেখায়।

ধাপ 5: স্যান্ডিং এবং বার্নিশিং

স্যান্ডিং এবং বার্নিশিং
স্যান্ডিং এবং বার্নিশিং
স্যান্ডিং এবং বার্নিশিং
স্যান্ডিং এবং বার্নিশিং
স্যান্ডিং এবং বার্নিশিং
স্যান্ডিং এবং বার্নিশিং
স্যান্ডিং এবং বার্নিশিং
স্যান্ডিং এবং বার্নিশিং

আমাদের ইউকুলেলকে উজ্জ্বল এবং একটি স্তর দিয়ে রুক্ষতা ছাড়াই আমরা আমাদের যন্ত্রের তৈরি দুটি অংশকে যত্ন সহকারে বালি করতে পারি, কারণ আমরা যে অঙ্কনটি তৈরি করেছি তা ক্ষতি করতে পারি (যদি আপনি ইউকুলেলে রং করা বেছে নিয়ে থাকেন, তাহলে আপনাকে প্রথমে বালি দিন) তারপরে আমরা আমাদের দুটি অংশ বার্নিশ করব যাতে তারা একটি গাer় রঙ পায় এবং কাঠ আরও প্রতিরোধের উপস্থাপন করে। আমরা একটি সাধারণ কাঠের বার্নিশ ব্যবহার করতে পারি, এটি বিশেষ হওয়ার দরকার নেই।

একবার আমরা বার্নিশ আছে, আমরা এটি একটি সামান্য দ্রাবক সঙ্গে মিশ্রিত যাতে এটি একটু দ্রবীভূত। এর পরে, আমরা ঘাড় এবং যন্ত্রের শরীরে একটি ব্রাশ দিয়ে মিশ্রণটি প্রয়োগ করি এবং এটি শুকিয়ে যাই।

যদি আমরা দেখি যে পণ্যটির দ্বিতীয় কোট প্রয়োজন, আমরা দুটি অংশকে সামান্য বালি করতে পারি এবং পাতলা বার্নিশের একটি স্তর পুনরায় প্রয়োগ করতে পারি।

** সতর্কতা: বার্নিশ একটি রাসায়নিক পণ্য, তাই এই প্রক্রিয়াটি একটি বায়ুচলাচল স্থানে সম্পাদন করা প্রয়োজন, দুর্গন্ধ এবং সুরক্ষামূলক চশমাগুলি এড়ানোর জন্য একটি মুখোশ পরুন।

যে উপকরণগুলি আমাদের সঠিকভাবে কাজ করতে সক্ষম হতে হবে সেগুলি ফটোতে প্রদর্শিত হয়। প্রধানত আমরা একটি ব্রাশ, একটি বার্নিশ ক্যান (আমাদের ক্ষেত্রে লাল রঙ), সামান্য দ্রাবক এবং চাক্ষুষ সুরক্ষা দিয়ে কাজ করব। এবং সর্বোপরি ভাল বায়ুচলাচল স্থানে কাজ করুন।

ধাপ 6: হার্ডওয়্যার

হার্ডওয়্যার
হার্ডওয়্যার
হার্ডওয়্যার
হার্ডওয়্যার
হার্ডওয়্যার
হার্ডওয়্যার

আরডুইনো, অ্যাসেলরোমিটার এবং এলইডি সহ চাকা আমাদের প্লেকটি একটি ছোট বন্ধনীতে চালু হতে চলেছে যাতে যন্ত্রের সমস্ত উপাদান চলাচল করতে না পারে।

আমরা আরও ব্যাটারি হোল্ডার এবং একটি সুইচ যুক্ত করেছি যাতে এটি আরও আরামদায়ক হয় এবং যখন আমরা যন্ত্রটি ব্যবহার করি না তখন আমরা ব্যাটারি নষ্ট করি না। আমরা এই সমর্থনটি ভেলক্রোর একটি টুকরা (এটি সিলিকন এবং একটি গরম দ্রবীভূত বন্দুক দিয়েও কাজ করবে) ইউকুলেল শরীরের অভ্যন্তরীণ মুখের সাথে সংযুক্ত করব। অন্যদিকে, LED চাকা গর্তের চেয়ে ছোট, তাই এটি পড়ে যাবে । একটি সমর্থন ডিজাইন করা হয়েছে যাতে এটি ভালভাবে ধরে থাকে এবং এর কার্য সম্পাদন করতে পারে।

ধাপ 7: সফটওয়্যার

সফটওয়্যার
সফটওয়্যার
সফটওয়্যার
সফটওয়্যার
সফটওয়্যার
সফটওয়্যার

আমাদের ইউকুলেলে একটি বিশেষ প্রসাধন দিতে, আমরা হালকা প্রভাব যোগ করতে পারি লেডস এর একটি চাকা ধন্যবাদ। আমরা WS2812 ব্যবহার করতে যাচ্ছি, কিন্তু আপনি ডেটশীটের নির্দেশাবলী অনুসরণ করে অন্য যে কোন ব্যবহার করতে পারেন। আমরা একটি অ্যাসেলরোমিটার (BMA220) ব্যবহার করব, যা আমাদের মাধ্যাকর্ষণের প্রভাব তৈরি করতে দেয়।

প্রকৃতপক্ষে, আমাদের 4 টি আলোর নাটক থাকবে, যা Arduino এর 'Adafruit' নামে কম্পিউটার লাইব্রেরিতে অন্তর্ভুক্ত। এর জন্য, আমাদের অবশ্যই তিনটি উপাদানগুলির মধ্যে একটি সঠিক সংযোগ স্থাপন করতে হবে: Arduino NANO, WS2812 এবং BMA220, যেমন প্রথম ছবিতে প্রদর্শিত হয়।

লাল তারগুলি বিদ্যুতের জন্য, GND কালো এবং বাকিগুলি সঠিক অপারেশনের জন্য প্রয়োজনীয় সংযোগ। আমরা হালকা কিটের জন্য যে কোডটি ব্যবহার করেছি তা "play_of_light_v0.ino" নামে একটি ফাইলে সংযুক্ত আছে। নিশ্চিত করুন যে আপনি প্রোগ্রামের সঠিক পরিচালনার জন্য প্রয়োজনীয় লাইব্রেরিগুলি অন্তর্ভুক্ত করেছেন। সার্কিটে আমরা যে ব্যাটারি বহিরাগত যোগ করি তার ন্যূনতম ভোল্টেজ 9V থাকতে হবে এবং আমাদের নিশ্চিত করতে হবে যে এটি পুরো সার্কিটকে পাওয়ার জন্য প্রয়োজনীয় ন্যূনতম কারেন্ট দিতে সক্ষম।

// ভেরিয়েবল কনটডোর ই ইন্টারপারসিয়ান কাউন্টার; // ভেরিয়েবল Ejemplo gravedad

বাইট সংস্করণ [3];

int8_t x_data; int8_t y_data; int8_t z_data; বাইট পরিসীমা = 0x00; ভাসা divi = 16; ফ্লোট x, y, z; ভাসমান পাই = 3.14159265359; ভাসা nx, ny, কোণ; int led, previousLed; QueueList ledQueue; Adafruit_NeoPixel neoring = Adafruit_NeoPixel (NUMBER_OF_LEDS_ON_RING, NEOPIXEL_RING_DATA_PIN, NEO_GRB + NEO_KHZ800);

// ভেরিয়েবলস লুসেস আরকোইরিস

#অন্তর্ভুক্ত #ifdef _AVR_ #অন্তর্ভুক্ত #endif #ডিফাইন পিন 9 // প্যারামিটার 1 = স্ট্রিপে পিক্সেলের সংখ্যা // প্যারামিটার 2 = আরডুইনো পিন নম্বর (বেশিরভাগ বৈধ) // প্যারামিটার 3 = পিক্সেল টাইপ পতাকা, প্রয়োজন অনুযায়ী একসাথে যোগ করুন: // NEO_KHZ800 800 KHz বিটস্ট্রিম (বেশিরভাগ NeoPixel পণ্য w/WS2812 LEDs) // NEO_KHZ400 400 KHz (ক্লাসিক 'v1' (v2 নয়) ফ্লোরা পিক্সেল, WS2811 ড্রাইভার) // NEO_GRB পিক্সেল GRB বিটস্ট্রিম (বেশিরভাগ NeoPixel পণ্য)/ / NEO_RGB পিক্সেলগুলি RGB বিটস্ট্রিমের জন্য তারযুক্ত (v1 FLORA পিক্সেল, v2 নয়) // NEO_RGBW পিক্সেলগুলি RGBW বিটস্ট্রিম (NeoPixel RGBW পণ্য) Adafruit_NeoPixel স্ট্রিপ = Adafruit_NeoPixel (16, PIN, NEO_GRB) এর জন্য তারযুক্ত। // গুরুত্বপূর্ণ: নিওপিক্সেল বার্নআউট ঝুঁকি কমাতে, 1000 পিক্সেল পাওয়ার লিড জুড়ে 1000 ইউএফ ক্যাপাসিটর যোগ করুন, প্রথম পিক্সেলের ডেটা ইনপুটে 300 - 500 ওহম প্রতিরোধক যোগ করুন // এবং আরডুইনো এবং প্রথম পিক্সেলের মধ্যে দূরত্ব কমিয়ে আনুন। // একটি লাইভ সার্কিটে // সংযোগ করা এড়িয়ে চলুন … যদি আপনাকে অবশ্যই প্রথমে GND সংযোগ করতে হবে।

// ভেরিয়েবলস Rueda de colores

// NeoPixel রিং সহজ স্কেচ (c) 2013 Shae Erisson // GPLv3 লাইসেন্সের অধীনে মুক্তি পেয়েছে বাকি AdaFruit NeoPixel লাইব্রেরিতে

#অন্তর্ভুক্ত

#ifdef _AVR_ #অন্তর্ভুক্ত #endif

// Arduino এর কোন পিনটি NeoPixels- এর সাথে সংযুক্ত?

// একটি Trinket বা Gemma তে আমরা এটিকে 1 #ডিফাইন পিন 9 এ পরিবর্তন করার পরামর্শ দিই

// আরডুইনোতে কতগুলি নিওপিক্সেল সংযুক্ত?

#সংজ্ঞায়িত সংখ্যা 16

// যখন আমরা নিওপিক্সেল লাইব্রেরি সেটআপ করি, আমরা বলি কত পিক্সেল, এবং কোন পিন সিগন্যাল পাঠাতে ব্যবহার করতে হবে।

// লক্ষ্য করুন যে পুরোনো নিওপিক্সেল স্ট্রিপগুলির জন্য আপনাকে তৃতীয় প্যারামিটার পরিবর্তন করতে হতে পারে-সম্ভাব্য মান সম্পর্কে আরও তথ্যের জন্য স্ট্র্যান্ডটেস্ট // উদাহরণ দেখুন। Adafruit_NeoPixel পিক্সেল = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int বিলম্ব = 50; // 50ms এর জন্য বিলম্ব

// ভেরিয়েবল কালারস এলিয়েটরিওস

#অন্তর্ভুক্ত #ifdef _AVR_ #অন্তর্ভুক্ত #endif

#পিন 9 নির্ধারণ করুন

#নির্ধারণ করুন NUM_LEDS 16

#উজ্জ্বলতা নির্ধারণ করুন 200

// Adafruit_NeoPixel ফালা = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);

বাইট neopix_gamma = {

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25, 25, 26, 27, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36, 37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89, 90, 92, 93, 95, 96, 98, 99, 101, 102, 104, 105, 107, 109, 110, 112, 114, 115, 117, 119, 120, 122, 124, 126, 127, 129, 131, 133, 135, 137, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 167, 169, 171, 173, 175, 177, 180, 182, 184, 186, 189, 191, 193, 196, 198, 200, 203, 205, 208, 210, 213, 215, 218, 220, 223, 225, 228, 231, 233, 236, 239, 241, 244, 247, 249, 252, 255 }; /////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////

/মেটোডো সেটআপ

অকার্যকর সেটআপ () {// Código: Dirección de la gravedad neoring.begin (); neoring.set উজ্জ্বলতা (200); Serial.begin (9600); Wire.begin (); Wire.beginTransmission (0x0A); // অ্যাকসিলরোমিটারের ঠিকানা // পরিসীমা সেটিংস Wire.write (0x22); // নিবন্ধন ঠিকানা Wire.write (পরিসীমা); // "0x00" "0x01" "0x02" "0x03" এ সেট করা যেতে পারে, উইকি // কম পাস ফিল্টার Wire.write (0x20) এ ডাটাশেট পড়ুন; // নিবন্ধন ঠিকানা Wire.write (0x05); // "0x05" "0x04" …… "0x01" "0x00" এ সেট করা যায়, উইকি Wire.endTransmission () এ ডেটাশেট পড়ুন;

// কোডিগো; লুসেস আরকোয়ারিস

// এটি Trinket 5V 16MHz এর জন্য, আপনি যদি এই তিনটি লাইন অপসারণ করতে পারেন যদি আপনি Trinket #if সংজ্ঞায়িত (_AVR_ATtiny85_) ব্যবহার না করেন তাহলে (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // trinket বিশেষ কোড strip.begin () এর শেষ; strip.show (); // সব পিক্সেল 'বন্ধ' করতে শুরু করুন

// Código Rueda de colores

// এটি Trinket 5V 16MHz এর জন্য, আপনি যদি এই তিনটি লাইন অপসারণ করতে পারেন যদি আপনি Trinket #if সংজ্ঞায়িত (_AVR_ATtiny85_) ব্যবহার না করে থাকেন (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // trinket বিশেষ কোডের সমাপ্তি

পিক্সেল শুরু (); // এটি নিওপিক্সেল লাইব্রেরির সূচনা করে।

// Codigo Interrupcion

পাল্টা = 1;

// কোডিগো কালোরস ভেরিও

// এটি Trinket 5V 16MHz এর জন্য, আপনি যদি এই তিনটি লাইন অপসারণ করতে পারেন যদি আপনি Trinket #if সংজ্ঞায়িত (_AVR_ATtiny85_) ব্যবহার না করে থাকেন (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // ট্রিঙ্কেটের বিশেষ কোড strip.setBrightness (BRIGHTNESS); strip.begin (); strip.show (); // সব পিক্সেল 'বন্ধ' করতে শুরু করুন}

///////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////

/Bucle infinito

void loop () {// Caso 1: Juego de luces de la gravedad; if (counter == 1) {for (int i = 0; i 0.0) {if (nx 0.0) angle+= 180; অন্য কোণ += 360; } // শেষ অন্য হলে (কোণ == 360.0) কোণ = 0.0; নেতৃত্বাধীন = সার্কুলারাইজ (কোণ / (360 / NUMBER_OF_LEDS_ON_RING)); // নেতৃত্বের আন্দোলনকে মসৃণ করুন যদি (previousLed == led) {// কিছুই করার নেই} অন্যথায় (counterClockwiseDistanceBetweenLeds (previousLed, led) <= 8) led = circularize (previousLed + 1); অন্য নেতৃত্বে = সার্কুলারাইজ (পূর্ববর্তী নেতৃত্ব - 1); ledQueue.push (নেতৃত্বাধীন); makeLightShow (); previousLed = নেতৃত্বাধীন; বিলম্ব (25); } কাউন্টার = 2; } // end if counter == 1 // Caso 2: Codigo del juego de luces del arcoiris else if (counter == 2) {for (int j = 0; j <5; j ++) {// কিছু উদাহরণ পদ্ধতি দেখাচ্ছে কিভাবে পিক্সেল প্রদর্শন করতে হবে: colorWipe1 (strip. Color (255, 0, 0), 50); // লাল রঙ ওয়াইপ 1 (স্ট্রিপ। রঙ (0, 255, 0), 50); // সবুজ রঙ Wipe1 (strip. Color (0, 0, 255), 50); // নীল রঙ Wipe1 (strip. Color (0, 0, 0, 255), 50); // হোয়াইট আরজিবিডব্লু // একটি থিয়েটার পিক্সেল চেজ পাঠান… // হোয়াইট থিয়েটার চেস (স্ট্রিপ। কালার (127, 0, 0), 50); // লাল থিয়েটার চেস (স্ট্রিপ। রঙ (0, 0, 127), 50); // নীল

রামধনু (5);

রেইনবো সাইকেল (5); থিয়েটার চেজ রেইনবো (5); } পাল্টা = 3; } // End if counter == 2 // Caso 3: Luces Aleatorias else if (counter == 3) {for (int k = 0; k <50; k ++) {// NeoPixels এর একটি সেটের জন্য প্রথম NeoPixel হল 0, সেকেন্ড হল 1, পিক্সেলের মাইনাস ওয়ান পর্যন্ত সব পথ। int a = এলোমেলো (255); int b = এলোমেলো (255); int c = এলোমেলো (255); জন্য (int i = 0; i

// পিক্সেল রঙ RGB মান নেয়, 0, 0, 0 থেকে 255, 255, 255 পর্যন্ত

pixels.setPixelColor (i, pixels. Color (a, b, c)); // মাঝারিভাবে উজ্জ্বল সবুজ রঙ।

পিক্সেল শো (); // এটি হার্ডওয়্যারে আপডেট হওয়া পিক্সেল রঙ পাঠায়।

বিলম্ব (বিলম্ব); // সময়ের জন্য বিলম্ব (মিলিসেকেন্ডে)।

} a = এলোমেলো (255); b = এলোমেলো (255); c = এলোমেলো (255); জন্য (int i = NUMPIXELS; i> 0; i-) {

// পিক্সেল রঙ RGB মান নেয়, 0, 0, 0 থেকে 255, 255, 255 পর্যন্ত

pixels.setPixelColor (i, pixels. Color (a, b, c)); // মাঝারিভাবে উজ্জ্বল সবুজ রঙ।

পিক্সেল শো (); // এটি হার্ডওয়্যারে আপডেট হওয়া পিক্সেল রঙ পাঠায়।

বিলম্ব (বিলম্ব); // সময়ের জন্য বিলম্ব (মিলিসেকেন্ডে)।

}} কাউন্টার = 4; } অন্যথায় যদি (কাউন্টার == 4) {জন্য (int g = 0; g <= 6; g ++) {// পিক্সেলগুলিতে কিভাবে প্রদর্শন করতে হয় তা দেখানোর কিছু উদাহরণ পদ্ধতি: colorWipe (strip. Color (255, 0, 0), 50); // লাল রং // সবুজ রঙ মোছা (strip. Color (0, 0, 255), 50); // নীল রঙের ওয়াইপ (স্ট্রিপ। রঙ (0, 0, 0, 255), 50); // সাদা সাদা ওভাররেনবো (20, 75, 5); পালস হোয়াইট (5); // পূর্ণ সাদা (); // বিলম্ব (2000); রেনবো ফেড 2 হোয়াইট (3, 3, 1);

}

পাল্টা = 1; }} //////////////////////////////////////////////////// //////////////////////////////////////////////////// ////////////////////////////////////////////////////// /////////////////

/মেটোডোস ডেল ইজেম্পুল দে লা গ্রেভেদাদ

অকার্যকর AccelerometerInit () {Wire.beginTransmission (0x0A); // অ্যাকসিলরোমিটারের ঠিকানা // অ্যাকসিলরোমিটার ওয়্যার রাইট করুন (0x04); // এক্স ডেটা Wire.endTransmission (); Wire.requestFrom (0x0A, 1); // স্লেভ ডিভাইস #2 থেকে 6 বাইট অনুরোধ করুন (Wire.available ()) // স্লেভ অনুরোধের চেয়ে কম পাঠাতে পারে {Version [0] = Wire.read (); // অক্ষর হিসাবে একটি বাইট পান} x_data = (int8_t) সংস্করণ [0] >> 2; Wire.beginTransmission (0x0A); // অ্যাকসিলরোমিটারের ঠিকানা // অ্যাকসিলরোমিটার ওয়্যার রাইট করুন (0x06); // Y ডেটা Wire.endTransmission (); Wire.requestFrom (0x0A, 1); // স্লেভ ডিভাইস #2 থেকে 6 বাইটের অনুরোধ করুন (Wire.available ()) // স্লেভ অনুরোধের চেয়ে কম পাঠাতে পারে {Version [1] = Wire.read (); // অক্ষর হিসাবে একটি বাইট পান} y_data = (int8_t) সংস্করণ [1] >> 2; Wire.beginTransmission (0x0A); // অ্যাকসিলরোমিটারের ঠিকানা // অ্যাকসিলরোমিটার ওয়্যার রাইট করুন (0x08); // জেড ডেটা Wire.endTransmission (); Wire.requestFrom (0x0A, 1); // স্লেভ ডিভাইস #2 থেকে অনুরোধ 6 বাইটের সময় // অক্ষর হিসাবে একটি বাইট পান} z_data = (int8_t) সংস্করণ [2] >> 2; x = (float) x_data/divi; y = (float) y_data/divi; z = (float) z_data/divi; সিরিয়াল.প্রিন্ট ("X ="); সিরিয়াল.প্রিন্ট (x); // অক্ষর Serial.print ("") মুদ্রণ করুন; সিরিয়াল.প্রিন্ট ("Y ="); সিরিয়াল.প্রিন্ট (y); // অক্ষর Serial.print ("") মুদ্রণ করুন; সিরিয়াল.প্রিন্ট ("Z ="); // অক্ষর মুদ্রণ করুন Serial.println (z); }

int circularize (int pos) {

যদি (pos> = NUMBER_OF_LEDS_ON_RING) রিটার্ন (pos - NUMBER_OF_LEDS_ON_RING); অন্যথায় যদি (pos <0) রিটার্ন (pos + NUMBER_OF_LEDS_ON_RING); অন্যথায় ফিরে (পজ); }

int দূরত্ব;

int counterClockwiseDistanceBetweenLeds (int prevPos, int nextPos) {distance = nextPos - prevPos; যদি (দূরত্ব <0) দূরত্ব += NUMBER_OF_LEDS_ON_RING; প্রত্যাবর্তন (দূরত্ব); }

int ledPosition, currentQueueSize;

#সংজ্ঞায়িত করুন NUMBER_OF_LEDS_TO_SHINE 10 int brightnessStep = 255/NUMBER_OF_LEDS_TO_SHINE;

অকার্যকর makeLightShow () {

জন্য (int j = 0; j <NUMBER_OF_LEDS_ON_RING; j ++) neoring.setPixelColor (j, 0, 0, 0); currentQueueSize = ledQueue.count (); জন্য (int k = 0; k <currentQueueSize; k ++) {ledPosition = ledQueue.pop (); neoring.setPixelColor (ledPosition, 0, (brightnessStep * k), 0); যদি ((k == 0 && currentQueueSize 0) ledQueue.push (ledPosition);} neoring.show ();}

///////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////

/মেটোডোস দেল জুয়েগো দে লুইস দেল আরকোয়ারিস

// একের পর এক বিন্দু ভরাট করুন একটি রঙ অকার্যকর রঙ দিয়ে মুছুন

অকার্যকর রংধনু (uint8_t অপেক্ষা) {

uint16_t i, j;

for (j = 0; j <256; j ++) {for (i = 0; i

// একটু ভিন্ন, এটি রংধনু জুড়ে সমানভাবে বিতরণ করে

অকার্যকর রামধনুচক্র (uint8_t অপেক্ষা) {uint16_t i, j;

জন্য (j = 0; j <256*5; j ++) (i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); বিলম্ব (অপেক্ষা); }}

// থিয়েটার-স্টাইল ক্রলিং লাইট।

অকার্যকর থিয়েটার চেস (uint32_t c, uint8_t wait) {for (int j = 0; j <10; j ++) {// (int q = 0; q <3; q ++) {এর জন্য (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // প্রতি তৃতীয় পিক্সেল চালু করুন} strip.show ();

বিলম্ব (অপেক্ষা);

জন্য (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // প্রতি তৃতীয় পিক্সেল বন্ধ করুন}}}}

// রংধনু প্রভাব সঙ্গে থিয়েটার শৈলী ক্রলিং লাইট

অকার্যকর থিয়েটারচেসরেনবো (uint8_t অপেক্ষা) {জন্য (int j = 0; j <256; j ++) {// চক্রের সমস্ত 256 রং (int q = 0; q <3; q ++) {জন্য (uint16_t i = 0; আমি <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, Wheel ((i+j) % 255)); // প্রতি তৃতীয় পিক্সেল চালু করুন} strip.show ();

বিলম্ব (অপেক্ষা);

জন্য (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // প্রতি তৃতীয় পিক্সেল বন্ধ করুন}}}}

// একটি রঙ মান পেতে একটি মান 0 থেকে 255 ইনপুট করুন।

// রং একটি রূপান্তর r - g - b - r থেকে ফিরে। uint32_t চাকা (বাইট WheelPos) {WheelPos = 255 - WheelPos; যদি (WheelPos <85) {return strip. Color (255 - WheelPos * 3, 0, WheelPos * 3); } যদি (WheelPos <170) {WheelPos -= 85; রিটার্ন স্ট্রিপ রঙ (0, হুইলপস * 3, 255 - হুইলপস * 3); } হুইলপস -= 170; রিটার্ন স্ট্রিপ রঙ (হুইলপস * 3, 255 - হুইলপস * 3, 0); }

///////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////

/Metodos Rueda de colores

// int elegirColor = এলোমেলো (0x000000, 0xffffff);

// CylonEyeColor = HtmlColor (elegirColor); // int elegirColor = random (1, 7); // Podemos elegir aleatoriamente entre los 7 colores que hay debajo0xf0ffff // if (elegirColor == 1) CylonEyeColor = HtmlColor (0xff0000); // Rojo // if (elegirColor = if 2) CylonEyeColor = HtmlColor (0x00ff00); // Verde // if (elegirColor == 3) CylonEyeColor = HtmlColor (0x0000ff); // Azul // if (elegirColor == 4) CylonEyeColor = HtmlColor (0 // if (elegirColor == 5) CylonEyeColor = HtmlColor (0x200020); // Morado // if (elegirColor == 6) CylonEyeColor = HtmlColor (0x00ffff); // Azul Claro // if (elegirColor == 7Cylon HtmlColor (0x100010); // Rosa // CylonEyeColor = HtmlColor (0x000000);

///////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////

/Metodos luces varias

// একটি রঙের সাথে একের পর এক বিন্দু পূরণ করুন

অকার্যকর রঙ Wipe1 (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i

অকার্যকর পালস হোয়াইট (uint8_t অপেক্ষা) {

জন্য (int j = 0; j <256; j ++) {for (uint16_t i = 0; i

জন্য (int j = 255; j> = 0; j-) {

জন্য (uint16_t i = 0; i

অকার্যকর রামধনু ফেইড 2 হোয়াইট (uint8_t অপেক্ষা, int rainbowLoops, int whiteLoops) {

ভাসমান fadeMax = 100.0; int fadeVal = 0; uint32_t wheelVal; int redVal, greenVal, blueVal;

for (int k = 0; k <rainbowLoops; k ++) {for (int j = 0; j <256; j ++) {// 5 চক্রের সব রঙের চক্র

জন্য (int i = 0; i <strip.numPixels (); i ++) {

wheelVal = চাকা (((i * 256 / strip.numPixels ()) + j) & 255);

redVal = লাল (wheelVal) * float (fadeVal/fadeMax);

greenVal = সবুজ (wheelVal) * float (fadeVal/fadeMax); blueVal = নীল (wheelVal) * float (fadeVal/fadeMax);

strip.setPixelColor (i, strip. Color (redVal, greenVal, blueVal));

}

// প্রথম লুপ, বিবর্ণ!

যদি (k == 0 && fadeVal <fadeMax-1) {fadeVal ++; }

// শেষ লুপ, বিবর্ণ!

অন্যথায় যদি }

strip.show ();

বিলম্ব (অপেক্ষা); }}

বিলম্ব (500);

জন্য (int k = 0; k <whiteLoops; k ++) {

জন্য (int j = 0; j <256; j ++) {

জন্য (uint16_t i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, strip. Color (0, 0, 0, neopix_gamma [j])); } strip.show (); }

বিলম্ব (2000);

জন্য (int j = 255; j> = 0; j-) {

জন্য (uint16_t i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, strip. Color (0, 0, 0, neopix_gamma [j])); } strip.show (); }}

বিলম্ব (500);

}

অকার্যকর WhiteOverRainbow (uint8_t অপেক্ষা করুন, uint8_t whiteSpeed, uint8_t whiteLength) {

যদি (whiteLength> = strip.numPixels ()) whiteLength = strip.numPixels () - 1;

int মাথা = সাদা দৈর্ঘ্য - 1;

int লেজ = 0;

int loops = 3;

int loopNum = 0;

স্ট্যাটিক স্বাক্ষরবিহীন দীর্ঘ শেষ সময় = 0;

যখন (সত্য) {

জন্য (int j = 0; j <256; j ++) {for (uint16_t i = 0; i = tail && i head && i> = tail) || (লেজ> মাথা && আমি <= মাথা)) {strip.setPixelColor (i, strip. Color (0, 0, 0, 255)); } অন্য {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); }}

if (millis () - lastTime> whiteSpeed) {

মাথা ++; লেজ ++; যদি (মাথা == strip.numPixels ()) {loopNum ++; } শেষ সময় = মিলিস (); }

যদি (loopNum == loops) রিটার্ন;

মাথা%= strip.numPixels (); লেজ%= strip.numPixels (); strip.show (); বিলম্ব (অপেক্ষা); }}} void fullWhite () {for (uint16_t i = 0; i

// একটু ভিন্ন, এটি রংধনু জুড়ে সমানভাবে বিতরণ করে

অকার্যকর রামধনু সাইকেল 1 (uint8_t অপেক্ষা) {uint16_t i, j;

জন্য (j = 0; j <256 * 5; j ++) (i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); বিলম্ব (অপেক্ষা); }}

অকার্যকর রামধনু 1 (uint8_t অপেক্ষা) {

uint16_t i, j;

for (j = 0; j <256; j ++) {for (i = 0; i

// একটি রঙ মান পেতে একটি মান 0 থেকে 255 ইনপুট করুন।

// রং একটি রূপান্তর r - g - b - r থেকে ফিরে। uint32_t Wheel1 (বাইট WheelPos) {WheelPos = 255 - WheelPos; যদি (WheelPos <85) {return strip. Color (255 - WheelPos * 3, 0, WheelPos * 3, 0); } যদি (WheelPos <170) {WheelPos -= 85; রিটার্ন স্ট্রিপ রঙ (0, হুইলপস * 3, 255 - হুইলপস * 3, 0); } হুইলপস -= 170; রিটার্ন স্ট্রিপ রঙ (হুইলপস * 3, 255 - হুইলপস * 3, 0, 0); }

uint8_t লাল (uint32_t c) {

প্রত্যাবর্তন (c >> 16); } uint8_t সবুজ (uint32_t c) {return (c >> 8); } uint8_t নীল (uint32_t c) {return (c); }

ধাপ 8: 3D ডিজাইন

3D ডিজাইন
3D ডিজাইন
3D ডিজাইন
3D ডিজাইন
3D ডিজাইন
3D ডিজাইন

প্রথমত, সঠিক সম্পর্কে নিশ্চিত হওয়ার জন্য আপনাকে অবশ্যই আপনার হার্ডওয়্যার উপাদানগুলি মাপতে হবে। যদি সেগুলি আমাদের মতো হয়, আপনি যে ফাইলগুলি আমরা আপনাকে ধার দিচ্ছি সেগুলি আপনি ব্যবহার করতে পারেন।

উভয় সমর্থন একটি 3D প্রিন্টারের সাথে ডিজাইন করা হয়েছে, যা এই হিসাবে অন্তর্ভুক্ত করা হয়েছে:

ukelele_support_arduino_v0.stl: https://www.tinkercad.com/things/1aAGZ1xFptA-ukel… ukelele_support_WS2812_v0.stl:

অবশেষে, আলো শেষ দুটি ছবির মত হবে।

ধাপ 9: ঘাড় মাউন্ট করা

ঘাড় মাউন্ট করা
ঘাড় মাউন্ট করা
ঘাড় মাউন্ট করা
ঘাড় মাউন্ট করা

প্রথমে আমরা স্যাডলিয়ন ঘাড়ে রাখব। স্ক্রুগুলিকে যে ছিদ্রগুলি ধরে রাখা দরকার তা সেখানে নেই, তাই আমাদের সেগুলি তৈরি করতে হবে, তারা কোথায় যেতে হবে তা চিহ্নিত করে এবং সাবধানে, একটি আউগার দিয়ে, গর্ত তৈরি করে।

একই ছিদ্রের ক্ষেত্রে প্রযোজ্য যেখানে স্ক্রুগুলি ঘাড়টি নিজেই যন্ত্রের শরীরে ধরে রাখে। এগুলি করার দরকার নেই, যেহেতু এই বন্ধনের জন্য কোনও স্ক্রু নেই, তবে আমরা যদি এটি করতে চাই তবে কোনও সমস্যা হবে না।

গুরুত্বপূর্ণ: মাস্টের শুরু এবং টিউনিং ফর্কের শুরুর মধ্যে 5 মিমি জায়গা ছেড়ে দিন, কারণ সেই গর্তে বাদাম রাখা হবে।

আমরা চিত্র দ্বারা নির্দেশিত দিক দিয়ে আঠা দিয়ে বাদাম আঠালো করব।

পরিশেষে, আমরা মাস্টের শুরুতে থাকা গর্তে 4 টি পিনের পরিচয় করিয়ে দেব, প্রতিটি পিনকে 2 টি ছোট স্ক্রু দিয়ে ধরে রেখেছি ছবিতে।

ধাপ 10: বার্ডেজ মাউন্ট করা

বার্ডেজ মাউন্ট করা
বার্ডেজ মাউন্ট করা
বার্ডেজ মাউন্ট করা
বার্ডেজ মাউন্ট করা

সেতু gluing দ্বারা এবং শরীরের একটি কেন্দ্রীয় অবস্থানে দুটি দীর্ঘ screws সঙ্গে সংশোধন করা হয়। একটি পেন্সিল দিয়ে শরীরের সঠিক অবস্থান চিহ্নিত করা যুক্তিযুক্ত। আমরা ছবিতে যে দূরত্বগুলি চিহ্নিত করেছি তা গ্রহণ করব।

আমরা দুটি উপাদানের মিলনে আঠা প্রয়োগ করব। জয়েন্ট শুকানো না হওয়া পর্যন্ত আমরা একটি শক্ত স্ক্রুর সাহায্যে দুটি অংশ সাবধানে ঠিক করি। আমরা কাঠের জন্য 1.5 মিমি ড্রিল বিট দিয়ে স্ক্রুগুলির জন্য দুটি গর্ত তৈরি করব। শরীরের দুটি দীর্ঘ স্ক্রু দিয়ে সেতুটি ঠিক করুন। এবং পরিশেষে, আমরা স্ক্রুগুলির মাথায় প্রতিরক্ষামূলক ক্যাপগুলি রাখি।

ধাপ 11: শরীর এবং ঘাড় সমাবেশ

শরীর এবং ঘাড় সমাবেশ
শরীর এবং ঘাড় সমাবেশ
শরীর এবং ঘাড় সমাবেশ
শরীর এবং ঘাড় সমাবেশ

দুটি অংশকে একত্রিত করার জন্য, আমাদের শরীরের মাথায় গর্ত আছে, যেখানে ঘাড়টি দুটি প্রজেকশনের সাথে ফিট হবে। আমরা তাদের আঠালো বা গরম গলানো বন্দুক দিয়ে আঠালো করতে পারি। একটি বৃহত্তর স্থিরকরণ করার জন্য, আপনি টিউনিং কাঁটাচামচ শেষে যে ছিদ্রগুলি আছে তা শরীরের সাথে যুক্ত করতে পারেন।

ধাপ 12: Ukulele স্ট্রিং রাখুন

Image
Image
Ukulele স্ট্রিং রাখুন
Ukulele স্ট্রিং রাখুন
Ukulele স্ট্রিং রাখুন
Ukulele স্ট্রিং রাখুন

অবশেষে আমাদের স্ট্রিংগুলি স্থাপন করতে হবে যাতে আমাদের যন্ত্র শেষ হয়ে যায়।

পূর্বে আমরা মাস্টের মধ্য দিয়ে যাওয়া প্রজেকশনে পিনের ফিক্সিং রিং োকাবো। স্ট্রিং স্থাপন করার জন্য, আমরা কিটের সাথে আসা 4 টি স্ট্রিং নিয়েছি। প্রথমে আপনাকে প্রতিটি স্ট্রিংকে আলাদা করতে হবে কারণ এগুলি সব একই নয়। আপনাকে প্রতিটি স্ট্রিংয়ের একটি প্রান্ত (একটি সাধারণ গিঁটযুক্ত দুটি মোটা এবং একটি ডাবল একটি দিয়ে দুটি পাতলা) বাঁধতে হবে এবং সেতুর স্লটে স্ট্রিংগুলি সন্নিবেশ করতে হবে।

তারপরে আমরা স্ট্রিংগুলিকে এমনভাবে স্থাপন করব যে:

• প্রথম অবস্থান: জি স্ট্রিং (দ্বিতীয় মোটা স্ট্রিং)।

• দ্বিতীয় অবস্থান: সি স্ট্রিং (মোটা স্ট্রিং)।

• তৃতীয় অবস্থান: ই স্ট্রিং (দ্বিতীয় পাতলা স্ট্রিং)।

• চতুর্থ অবস্থান: একটি স্ট্রিং (পাতলা স্ট্রিং)।

প্রদত্ত প্লাগের গর্তে স্ট্রিংগুলি থ্রেড করুন। পিনে দুই বা তিনটি পালা দিয়ে প্রতিটি দড়ি ঠিক করার চেষ্টা করুন। খুব বেশি শক্তি প্রয়োগ না করে স্ট্রিংগুলিকে টানুন এবং স্ট্রিং এবং স্যাডেলের মধ্যে দূরত্ব পরীক্ষা করুন।

এটি কীভাবে তৈরি করবেন সে সম্পর্কে আপনার যদি কোনও সন্দেহ থাকে তবে আপনি সেই টিউটোরিয়ালটি কী করতে পারেন যা আপনাকে ব্যাখ্যা করে কিভাবে স্ট্রিংগুলি সঠিকভাবে রাখা যায়।

ধাপ 13: পরীক্ষা

পরীক্ষামূলক
পরীক্ষামূলক
পরীক্ষামূলক
পরীক্ষামূলক

পরিশেষে, আমাদের দেখতে হবে যে ইউকুলেল সঠিকভাবে এমনভাবে একত্রিত হয়েছে কিনা যাতে প্রথম ঝাঁকুনিতে আদর্শ দূরত্ব 0.1 মিমি এবং দ্বাদশটিতে এটি প্রায় 1.2 মিমি।

আপনি ukulele স্ট্রিং টিউন প্রয়োজন। আমি আপনাকে এই অ্যাপটি সুপারিশ করছি: গিটারটুনা

ধাপ 14: এটি উপভোগ করুন

এখন, আপনাকে কেবল আপনার উকুলেলে উপভোগ করতে হবে।

আপনি যদি আমাদের সম্পর্কে আরও তথ্য জানতে চান, আপনি আমাদের এখানে খুঁজে পেতে পারেন:

টুইটার: n ইনোভার্ট_সিসি

ফেসবুক: @Innovartcc

ইনস্টাগ্রাম: n ইনোভার্ট_সিসি

ওয়েব: Innovart.cc

প্রস্তাবিত: