সুচিপত্র:

ঝলকানি, গান, মারিওম্যান: 5 টি ধাপ
ঝলকানি, গান, মারিওম্যান: 5 টি ধাপ

ভিডিও: ঝলকানি, গান, মারিওম্যান: 5 টি ধাপ

ভিডিও: ঝলকানি, গান, মারিওম্যান: 5 টি ধাপ
ভিডিও: Ongge Nacher Jolkani | অংঙ্গে নাচেরই ঝলকানি | বিবাদ | Bibad | Runa Laila | Anju Ghosh | Movie Music 2024, নভেম্বর
Anonim
ঝলকানি, গান, মারিওম্যান
ঝলকানি, গান, মারিওম্যান

সুপার মারিও ব্রাদার্স থিম সং বাজানো একটি ঝলকানি মারিওম্যান তৈরি করতে একটি attiny13a, দুটি এলইডি এবং একটি শুভেচ্ছা কার্ড স্পিকার ব্যবহার করুন। যে কেউ AVR প্রোগ্রামিংয়ে প্রবেশের জন্য একটি মজার উপায় খুঁজছেন তার জন্য এটি একটি সহজ কম খরচে প্রকল্প হতে পারে! AVR মাইক্রোকন্ট্রোলারের একক পিনে আউটপুট করা একটি বর্গাকার তরঙ্গ দ্বারা গানের নোট তৈরি করা হয়। প্রতিটি নোটের বিকল্প এলইডিগুলি একই চিপের প্রতিটিতে 2 টি পিনের সাথে সংযুক্ত থাকে।

ধাপ 1: উপকরণ এবং নির্মাণ

উপকরণ এবং নির্মাণ
উপকরণ এবং নির্মাণ

1 attiny13a

www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%

  • 2 LEDs - যে কোন LEDs করবে
  • 1 লিথিয়াম কয়েন সেল ব্যাটারি

www.sparkfun.com/commerce/product_info.php?products_id=338 খরচ: $ 2.00

1 মুদ্রা সেল ধারক

www.sparkfun.com/commerce/product_info.php?products_id=8822 খরচ: $ 1.25

একটি মিউজিক্যাল গ্রিটিং কার্ড থেকে 1 টি ছোট স্পিকার

উপকরণের মোট খরচ ~ $ 5 দুটি এলইডি সরাসরি attiny13A এর প্রতিটি দুটি পিনের সাথে সংযুক্ত ছিল। প্রতিটি LED এর জন্য দুটি পিন ব্যবহার করা হয়, দ্বিতীয় পিনটি স্থল সংযোগ হিসাবে ব্যবহার করার জন্য কম সেট করা আছে AVR- এ I/O পিনের বর্তমান সীমা LEDs কে খুব বেশি আঁকতে বাধা দেবে তাই সংযোগের জন্য একটি রোধের প্রয়োজন নেই সিরিজ ব্যবহার করা স্পিকারটি একটি মিউজিক্যাল গ্রিটিং কার্ডে পাওয়া যায়, যে কোনও ছোট স্পিকার করবে, এটি একটি বর্গ তরঙ্গ স্বর আউটপুট করছে, স্পিকার চালানোর বা শব্দ মানের সম্পর্কে চিন্তা করা খুব গুরুত্বপূর্ণ নয়।

ধাপ 2: এলইডি এবং স্পিকারে AVR বিক্রি করা

এলইডি এবং স্পিকারে AVR বিক্রি করা
এলইডি এবং স্পিকারে AVR বিক্রি করা
এলইডি এবং স্পিকারে AVR বিক্রি করা
এলইডি এবং স্পিকারে AVR বিক্রি করা

এলইডির বাহুগুলির মতো পৌঁছানোর জন্য একটি পিন AVR এর প্রতি দিকে বাঁকানো হয়। এইভাবে AVR এর দিকনির্দেশনা স্পিকার (দ্বিতীয় ছবি) এর সাথে সংযোগ স্থাপন করা সহজ করে দেয় যেহেতু সংযোগ দুটি নীচের পিনের উপর থাকে। নান্দনিকতার জন্য আপনি চিপের সামনের দিকে মুখ করতে চান তাই নিশ্চিত থাকুন যে স্পিকার একইভাবে মুখোমুখি হচ্ছে এটা সংযুক্ত.

ধাপ 3: Attiny13a প্রোগ্রামিং

Attiny13a প্রোগ্রামিং
Attiny13a প্রোগ্রামিং

AVR প্রোগ্রামিং করার জন্য প্রচুর বিকল্প রয়েছে। এই প্রকল্পের জন্য USBtiny ব্যবহার করা হয়েছিল যা কিড হিসাবে পাওয়া যায় লেডায়াদের সাইট থেকে https://www.ladyada.net/make/usbtinyisp/index.html AVR কে প্রোগ্রামারের সাথে সংযুক্ত করতে আপনি যা করতে পারেন। হয় মহিলা সকেটে তার সংযুক্ত করুন এবং সেগুলিকে একটি ব্রেডবোর্ডে প্লাগ করুন অথবা আরও ভাল একটি সস্তা AVR প্রোগ্রামিং অ্যাডাপ্টার পান এইরকম https://www.sparkfun.com/commerce/product_info.php? ।

ধাপ 4: মারিওম্যানের জন্য ফার্মওয়্যার তৈরি করা

মারিওম্যানের জন্য ফার্মওয়্যার তৈরি করা
মারিওম্যানের জন্য ফার্মওয়্যার তৈরি করা

Attiny13A তে 1K প্রোগ্রামযোগ্য ফ্ল্যাশ, এবং 64bytes SRAM সংযুক্ত ট্যার ফাইলের সোর্স ফাইল এবং ডাউনলোডের জন্য সংকলিত ফার্মওয়্যার রয়েছে।

  • freq - প্রতিটি নোটের ফ্রিকোয়েন্সি
  • দৈর্ঘ্য - প্রতিটি নোটের দৈর্ঘ্য
  • বিলম্ব - প্রতিটি নোটের মধ্যে বিরতি দিন

ফ্রিকোয়েন্সি অ্যারেতে প্রকৃত ফ্রিকোয়েন্সি নেই, বরং PB0 পিন থেকে বর্গ তরঙ্গ উৎপন্ন করার জন্য TTCROB রেজিস্টারে রাখার মান।

  • Attiny13A এর একটি অভ্যন্তরীণ অসিলেটর 9.6MHz সেট করা আছে
  • IO এর জন্য অভ্যন্তরীণ ঘড়ি হল অসিলেটর 8 বা 1.2MHz দ্বারা বিভক্ত
  • একটি অভ্যন্তরীণ টাইমার 8 বিট রেজিস্টারে সেট করা হয় যা 8 এর প্রিস্কেল সহ প্রতিটি ঘড়ি চক্র গণনা করে।
  • এর ফলে 1 / (1.2MHz / 8) =.006667ms সমান একটি টিক আসে
  • Attiny13A 8bit TCCR0B রেজিস্টারে যা আছে তা টাইমারের সাথে তুলনা করার জন্য কনফিগার করা হয়েছে এবং যখন তারা মিলে যায় তখন একটি পিন টগল করে।
  • উদাহরণস্বরূপ, 524Hz (মধ্য C এর উপরে একটি অষ্টভ) একটি বর্গ তরঙ্গ উৎপন্ন করার জন্য যার সময়কাল 1.908ms।

1.908ms = 286 ঘড়ির টিক (1.908/.0067) টি/2 (286/2 = 143) এ পিন টগল করতে 286 কে 2 দিয়ে ভাগ করুন (286/2 = 143) এই নোট তৈরির জন্য TTCR0B রেজিস্টারে 143 রাখুন। এই সমস্ত কোড যা প্রয়োজনীয় টাইমার সেট আপ করতে, তুলনা করুন এবং একটি বর্গ তরঙ্গ আউটপুট করুন:

TCCR0A | = (1 << WGM01); // CTC মোড TCCR0A এর জন্য টাইমার 1 কনফিগার করুন | = (1 << COM0A0); // তুলনা ম্যাচ TCCR0B তে OC0A টগল করুন = = (1 << CS01); // clk/8 prescale TTCR0B = 143; // 524Hz এ একটি বর্গ তরঙ্গ উৎপন্ন করুনটোন এবং তাদের মধ্যে বিরতি বিলম্ব করতে একটি সহজ বিলম্ব ফাংশন ব্যবহার করা হয়েছিল

অকার্যকর ঘুম (int ms) {int cnt; জন্য (cnt = 0; cnt <(ms); cnt ++) {int i = 150; যখন (i--) {_asm ("NOP"); }}}এটি 150 থেকে গণনা করা হয় যেখানে প্রতিটি NOP চক্র প্রায়.006667ms হয়। কোডটি শেষ করে অ্যারেগুলির মাধ্যমে লুপ করা, সঙ্গীত তৈরি করা এবং দুটি এলইডি জ্বলজ্বলে করা।

const uint8_t freq PROGMEM = {… data}; const uint8_t length PROGMEM = {… data}; const uint8_t delay PROGMEM = {… data};… while (1) {for (cnt = 0; cnt < 156; cnt ++) {OCR0A = pgm_read_byte (& freq [cnt]); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); ঘুম (pgm_read_byte (& length [cnt])); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // স্টপ টাইমার TCCR0B = 0; ঘুম (pgm_read_word (& বিলম্ব [cnt])); // স্টার্ট টাইমার TCCR0B | = (1 << CS01); // clk/8 prescale}}ফ্রিকোয়েন্সি/দৈর্ঘ্য/বিলম্ব অ্যারেতে 156 টি উপাদান রয়েছে, এই লুপটি তাদের অতিক্রম করে। পিন PB3 এবং PB4 প্রতিটি টগল করা হয় তাই তারা প্রতিটি নোটের সাথে বিকল্প হবে প্রথম ঘুম হল OCR0A রেজিস্টারটি যথাযথ মান নির্ধারণ করার পরে আমরা যে নোটটি খেলি তার দৈর্ঘ্য। দ্বিতীয় ঘুম হল আমরা খেলার নোটগুলির মধ্যে বিরতি। উপরের কোডে আপনি pgm_read_byte () এবং pgm_read_word () ফাংশন এবং সেইসাথে কীওয়ার্ড PROGMEM লক্ষ্য করতে পারেন। সমস্ত ফ্রিকোয়েন্সি/বিলম্ব/দৈর্ঘ্যের ডেটার জন্য আমরা যে অ্যারে ব্যবহার করছি তা 64 বাইটের চেয়ে অনেক বড় এবং তাই মেমরিতে লোড করা যায় না। বিশেষ প্রোগ্রাম avr-gcc নির্দেশিকা ব্যবহার করে এই বড় ডেটা অ্যারেগুলিকে মেমরিতে লোড করা থেকে বিরত রাখা হয়, বরং এগুলি ফ্ল্যাশ থেকে পড়া হয়।

ধাপ 5: মারিওম্যানকে আলগা করা

উপরের ভিডিওটি মারিওম্যানকে কর্মে দেখায়। গড় বিদ্যুৎ খরচ প্রায় 25mA তাই লিথিয়াম কয়েন সেল নিষ্কাশন করার আগে তিনি প্রায় 10 ঘণ্টা পর্যন্ত চোখের পলক ফেলতে পারেন এবং শব্দ করতে পারেন। এই জন্য ভাল উপযুক্ত। একটি সুইচ যোগ করা যেতে পারে কিন্তু এটি সহজ রাখার জন্য কিছু বলার আছে।

প্রস্তাবিত: