সুচিপত্র:

ATTiny85 মাইক্রোকন্ট্রোলারের সাথে MAX7219 চালিত LED ম্যাট্রিক্স 8x8 কে কিভাবে ইন্টারফেস করবেন: 7 টি ধাপ
ATTiny85 মাইক্রোকন্ট্রোলারের সাথে MAX7219 চালিত LED ম্যাট্রিক্স 8x8 কে কিভাবে ইন্টারফেস করবেন: 7 টি ধাপ

ভিডিও: ATTiny85 মাইক্রোকন্ট্রোলারের সাথে MAX7219 চালিত LED ম্যাট্রিক্স 8x8 কে কিভাবে ইন্টারফেস করবেন: 7 টি ধাপ

ভিডিও: ATTiny85 মাইক্রোকন্ট্রোলারের সাথে MAX7219 চালিত LED ম্যাট্রিক্স 8x8 কে কিভাবে ইন্টারফেস করবেন: 7 টি ধাপ
ভিডিও: How To Make DJ Light At Home/Amazing Moving DJ Lights/Amazing Light Effects With VU Meter RGB LED 2024, জুলাই
Anonim
ATTiny85 মাইক্রোকন্ট্রোলারের সাহায্যে কিভাবে MAX7219 চালিত LED ম্যাট্রিক্স 8x8 ইন্টারফেস করবেন
ATTiny85 মাইক্রোকন্ট্রোলারের সাহায্যে কিভাবে MAX7219 চালিত LED ম্যাট্রিক্স 8x8 ইন্টারফেস করবেন

MAX7219 কন্ট্রোলার ম্যাক্সিম ইন্টিগ্রেটেড দ্বারা নির্মিত হয় কম্প্যাক্ট, সিরিয়াল ইনপুট/আউটপুট কমন-ক্যাথোড ডিসপ্লে ড্রাইভার যা মাইক্রোকন্ট্রোলারগুলিকে 64 পৃথক LEDs, 7-সেগমেন্ট সংখ্যাসূচক LED ডিসপ্লে পর্যন্ত 8 ডিজিট, বার-গ্রাফ ডিসপ্লে ইত্যাদি অন্তর্ভুক্ত করে। -চিপ হল একটি BCD কোড-B ডিকোডার, মাল্টিপ্লেক্স স্ক্যান সার্কিট্রি, সেগমেন্ট এবং ডিজিট ড্রাইভার এবং একটি 8 × 8 স্ট্যাটিক র RAM্যাম যা প্রতিটি অঙ্ক সংরক্ষণ করে।

MAX7219 মডিউলগুলি ATtiny85 এর মতো মাইক্রোকন্ট্রোলারগুলির সাথে ব্যবহার করা খুব সুবিধাজনক, অথবা, আমাদের ক্ষেত্রে টিনসৌর বোর্ড।

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

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

MAX7219 মডিউলগুলি সাধারণত এইরকম দেখায়। তাদের একদিকে একটি ইনপুট বাস এবং অন্যদিকে আউটপুট বাস রয়েছে। এটি আপনাকে আরও জটিল সেটআপ তৈরির জন্য ডেইজি চেইন 2 বা তার বেশি মডিউল, যেমন একের পর এক করতে দেয়।

আমরা যে মডিউলগুলি ব্যবহার করছি তা 5 টি ছোট জাম্পার ব্যবহার করে একটি শৃঙ্খলে সংযোগ করতে সক্ষম। নিচের ছবিটি দেখুন।

ধাপ 2: পিনআউট এবং সিগন্যাল

MAX7219 মডিউলে 5 টি পিন রয়েছে:

  • VCC - শক্তি (+)
  • GND-স্থল (-)
  • ডিআইএন - ডেটা ইনপুট
  • সিএস - চিপ নির্বাচন
  • CLK - ঘড়ি

এর মানে হল যে মডিউল নিয়ন্ত্রণ করার জন্য আমাদের ATtiny85 মাইক্রোকন্ট্রোলার সাইডে 3 টি পিন দরকার। সেগুলো হবে:

  • PB0 - CLK এর সাথে সংযুক্ত
  • PB1 - CS এর সাথে সংযুক্ত
  • PB2 - DIN এর সাথে সংযুক্ত

এটি MAX7219 মডিউলের সাথে সংযোগ স্থাপন এবং এটি প্রোগ্রাম করার জন্য যথেষ্ট।

ধাপ 3: প্রোটোকল

প্রোটোকল
প্রোটোকল

MAX7219 এর সাথে যোগাযোগ করা তুলনামূলকভাবে সহজ - এটি একটি সিঙ্ক্রোনাস প্রোটোকল ব্যবহার করে যার মানে হল যে আমরা যে প্রতিটি ডেটা বিট পাঠাই তার জন্য একটি ঘড়ি চক্র রয়েছে যা সেই ডেটা বিটের উপস্থিতি নির্দেশ করে।

অন্য কথায়, আমরা বিটগুলিতে 2 সমান্তরাল ক্রম পাঠাই - একটি ঘড়ির জন্য এবং অন্যটি ডেটার জন্য। সফটওয়্যারটি এটাই করে।

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

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

এই MAX7219 মডিউলটি যেভাবে কাজ করে তা হল:

  • আমরা এর অভ্যন্তরীণ রেজিস্টারে বাইট লিখি।
  • MAX7219 ডেটা ব্যাখ্যা করে।
  • MAX7219 ম্যাট্রিক্সে LEDs নিয়ন্ত্রণ করে।

এর অর্থ এইও যে, তাদের আলো জ্বালানোর জন্য আমাদের সারাক্ষণ এলইডির সারির মধ্য দিয়ে ঘুরতে হবে না - MAX7219 নিয়ামক সেটার যত্ন নেয়। এটি LEDs এর তীব্রতাও পরিচালনা করতে পারে।

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

প্রথমে, MAX7219 রেজিস্টারে লেখার জন্য আমাদের কিছু মৌলিক ফাংশন দরকার।

  • MAX7219 এ একটি বাইট লেখা।
  • MAX7219 এ একটি শব্দ (2 বাইট) লেখা।

কন্ট্রোলারে একটি বাইট লেখার ফাংশনটি এরকম দেখাচ্ছে:

void max7219_byte (uint8_t data) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // CLK কে LOW এ সেট করুন যদি (data & 0x80) // ডাটা PORTB এর MSB মাস্ক করুন | = (1 << MAX7219_DIN); // DIN কে HIGH PORTB & = Set (1 << MAX7219_DIN) এ সেট করুন; // নিম্ন পোর্টবিতে ডিআইএন সেট করুন | = (1 << MAX7219_CLK); // CLK কে হাই ডেটাতে সেট করুন << = 1; // বাম দিকে শিফট করুন}}

এখন যেহেতু আমরা MAX7219 এ বাইট পাঠাতে পারি আমরা কমান্ড পাঠানো শুরু করতে পারি। অভ্যন্তরীণ রেজিস্টারের ঠিকানার জন্য ২ য় এবং আমরা যে ডেটা পাঠাতে চাই তার জন্য ২ য় পাঠিয়ে এটি করা হয়।

MAX7219 কন্ট্রোলারে এক ডজনেরও বেশি রেজিস্টার রয়েছে।

একটি কমান্ড বা একটি শব্দ প্রেরণ করা হচ্ছে মূলত 2 পরপর বাইট পাঠানো। ফাংশন বাস্তবায়ন যে খুব সহজ।

void max7219_word (uint8_t address, uint8_t data) {PORTB & = ~ (1 << MAX7219_CS); // CS কম করে max7219_byte (ঠিকানা) সেট করুন; // ঠিকানা max7219_byte (ডেটা) পাঠানো; // ডেটা পাঠানো PORTB | = (1 << MAX7219_CS); // উচ্চ পোর্টবিতে সিএস সেট করুন এবং = ~ (1 << MAX7219_CLK); // CLK কে LOW এ সেট করুন

এখানে যে লাইনটি আমরা সিএস সিগন্যালকে হাই -তে ফিরিয়ে আনি তা এখানে উল্লেখ করা গুরুত্বপূর্ণ - এটি ক্রমের শেষ চিহ্ন - এই ক্ষেত্রে, কমান্ডের শেষ। একটি শৃঙ্খলে সংযুক্ত একটি ম্যাট্রিক্সকে নিয়ন্ত্রণ করার সময় অনুরূপ কৌশল ব্যবহার করা হয়। পরবর্তী পদক্ষেপ, আমরা LEDs চালু এবং বন্ধ করার আগে, MAX7219 নিয়ামককে আরম্ভ করা। নির্দিষ্ট রেজিস্টারে নির্দিষ্ট মান লিখে এটি করা হয়। সুবিধার জন্য, এটি কোডিং করার সময় আমরা একটি অ্যারেতে আরম্ভের ক্রম রাখতে পারি।

uint8_t initseq = {0x09, 0x00, // Decode-Mode Register, 00 = No decode 0x0a, 0x01, // Intensity Register, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 সব লাইন দেখানোর জন্য 0x0c, 0x01, // শাটডাউন রেজিস্টার, 0x01 = নরমাল অপারেশন 0x0f, 0x00, // ডিসপ্লে-টেস্ট রেজিস্টার, 0x00 = নরমাল অপারেশন};

আমাদের ঠিক উপরে 5 টি কমান্ড পাঠাতে হবে একটি ক্রমে ঠিকানা/ডাটা জোড়া হিসাবে। পরবর্তী ধাপ - LEDs একটি সারি আলো

এটি খুবই সহজ - আমরা শুধু একটি কমান্ড লিখি যেখানে 1 ম বাইট হল ঠিকানা (0 থেকে 7) এবং দ্বিতীয় বাইট হল 8 টি বিট যা সারিতে 8 টি LEDs উপস্থাপন করে।

অকার্যকর max7219_row (uint8_t address, uint8_t data) {if (address> = 1 && address <= 8) max7219_word (address, data); }

এটি মনে রাখা গুরুত্বপূর্ণ যে এটি শুধুমাত্র 1 ম্যাট্রিক্সের জন্য কাজ করবে। যদি আমরা একটি শৃঙ্খলে আরো ম্যাট্রিক্স সংযুক্ত করি তবে তারা সবাই একই ডেটা দেখাবে। এর কারণ হল কমান্ড পাঠানোর পর আমরা সিএস সিগন্যালকে আবার হাই -তে নিয়ে আসি যার কারণে চেইনের সকল MAX7219 কন্ট্রোলার ল্যাচ করে এবং শেষ কমান্ড যাই হোক না কেন তা দেখায়।

প্রস্তাবিত: