চীন অল্প মূল্যে বিপুল পরিমাণ ইলেকট্রনিক ডিভাইস নয়, তাদের উপাদানও সরবরাহ করে। হালকা নির্গত ডায়োডগুলির একটি ছোট অ্যারে আপনার প্রয়োজনীয় তথ্য দেখাতে পারে, সম্ভবত সংখ্যাগুলি, যেহেতু রেজোলিউশন খুব বেশি নয়, 8 বাই 8 এলইডি, প্রতিটি ব্যাস 3 মিমি. এই ম্যাট্রিক্সটি লাল রঙে জ্বলজ্বল করে, কারণ এটি সবচেয়ে দৃশ্যমান এবং অন্যান্য রঙের চেয়ে বেশি মনোযোগ আকর্ষণ করে।
আপনার যদি এলইডি-তে এই ধরনের একাধিক ম্যাট্রিক্স থাকে, তাহলে আপনি বড় তথ্য বোর্ড তৈরি করতে সেগুলিকে সংযুক্ত করতে পারেন।
ম্যাট্রিক্স ডিসপ্লে - ন্যূনতম প্রয়োজনীয় পাইপিং সহ MAX7219 চিপের উপর ভিত্তি করে একটি 8x8 LED ম্যাট্রিক্স এবং একটি নিয়ন্ত্রণ বোর্ড সমন্বিত একটি ডিভাইস। ফটোতে আপনি ইতিমধ্যে সমাপ্ত ডিভাইসটি দেখতে পাচ্ছেন, তবে এটি এই ফর্মটিতে মেল দ্বারা আমার কাছে এসেছিল, তাই আমাকে একটি সোল্ডারিং লোহা নিতে হয়েছিল এবং সঠিকভাবে সবকিছু সোল্ডার করতে হয়েছিল।
আরডুইনো ন্যানো বোর্ডের মৌলিক সংযোগ সার্কিট ডায়াগ্রামে দেখানো হয়েছে।
আপনি ডায়াগ্রাম থেকে দেখতে পাচ্ছেন, সবকিছু সহজ, আপনাকে কেবল নিম্নলিখিত ক্রমে তারের সাথে উভয় বোর্ডের পরিচিতিগুলিকে সংযুক্ত করতে হবে:
আরডুইনো ন্যানো | ম্যাট্রিক্স 8x8 |
পিন 12 | PIN DIN |
পিন 11 | পিন CLK |
পিন 10 | পিন সিএস |
পিন 5V | পিন 5V |
পিন জিএনডি | পিন জিএনডি |
সুতরাং, অবশেষে কোডের সাথে কাজ করার সময় এসেছে, এবং LED ম্যাট্রিক্স চালানোর জন্য, আপনাকে LedControl লাইব্রেরি ডাউনলোড এবং ইনস্টল করতে হবে। লাইব্রেরি MAXIM 7221 এবং 7219 মাইক্রোসার্কিট সমর্থন করে। LED ম্যাট্রিক্স MAX7219 ড্রাইভার হিসাবে ব্যবহার করে, এটি আমাদের প্রয়োজন। আমি মনে করি আমাদের একটি ছোট স্কেচ দিয়ে শুরু করা উচিত যা এই লাইব্রেরির মৌলিক কার্যাবলী প্রদর্শন করে। স্কেচে, setRow() ফাংশন LED চালু/বন্ধ করতে ব্যবহৃত হয়। setRow() ফাংশন কল করার জন্য সিনট্যাক্স হল:
matrix.setRow(0, সারি, কল, সেট);
কোথায় ম্যাট্রিক্স- ক্লাস অবজেক্ট LedControl
0 - এসপিআই বাসে ডিভাইসের ঠিকানা, এই ক্ষেত্রে শুধুমাত্র একটি ডিভাইস রয়েছে এবং নম্বর শূন্য থেকে শুরু হয়
সারি- সারি (0 থেকে 7 পর্যন্ত সম্ভাব্য মান)
কর্নেল- কলাম (সম্ভাব্য মান 0 থেকে 7 পর্যন্ত)
সেট- মান নির্ধারণ ( সত্য- চালু করা, মিথ্যা- বন্ধ)
matrix.setRow(0, 1, 4, সত্য)
১ম সারিতে এবং ৪র্থ কলামে অবস্থিত ম্যাট্রিক্সে LED চালু করুন।
আরেকটি উদাহরণ:
int x = 1;
int y = 4;
matrix.setRow(0, x, y, true);
matrix.setRow(0, x, y, মিথ্যা);
একই শুধুমাত্র ভেরিয়েবলের ব্যবহার, এবং প্রদত্ত স্থানাঙ্কে আলোকিত LED বন্ধ করার পরে। সুতরাং, স্কেচে, setRow () ফাংশন ব্যবহার করে বেশ কয়েকটি অ্যানিমেশন চালানো হয়।
#include "LedControl.h" //LedControl ক্লাস তৈরির জন্য সিনট্যাক্স (dataPin,clockPin,csPin,numDevices) //যেখানে LedControl হল ক্লাসের একটি বস্তু //dataPin হল Arduino বোর্ডের পিন যেখানে DIN পিন হবে be connected //clockPin হল Arduino বোর্ডের পিন যার সাথে CLK পিন সংযুক্ত করা হবে //csPin - Arduino বোর্ডের পিন যার সাথে CS পিন সংযুক্ত করা হবে //numDevices - বাসে থাকা ডিভাইসের সংখ্যা / /আমাদের ক্ষেত্রে একটি সংযুক্ত ডিভাইস LedControl ম্যাট্রিক্স = LedControl(12, 11 , 10, 1) দিয়ে ম্যাট্রিক্স ক্লাসের একটি বস্তু তৈরি করুন; // ম্যাট্রিক্স কনস্ট int delayValue = 100 এ LED চালু/বন্ধ করার জন্য বিলম্বের সময়; // ফাংশন প্রোটোটাইপ // অনুক্রমিক অন/অফ void PointSerialSet(); //সাপ ডান থেকে বাম অকার্যকর PointRigthToLeft(); //নিচ থেকে উপরে অকার্যকর PointDownToUp(); // সাপ বাম থেকে ডানে অকার্যকর PointLeftToRigth(); // সাপ উপর থেকে নীচের অকার্যকর PointUpToDown(); //প্রভাব - বিবর্ণ নাড়ি অকার্যকর পয়েন্টফেডিং(); // প্রভাব - নাড়ি অকার্যকর PointPulse(); // প্রভাব - ক্রমবর্ধমান আবেগ শূন্য পয়েন্ট ক্লাইম্বিং(); //অকার্যকর PointToSpiralIn() এর ভিতরে সর্পিল মোচড়ানোর প্রভাব; //সর্পিল বাহ্যিক শূন্যস্থান PointToSpiralOut() ঘোরানোর প্রভাব; void setup() ( // ঠিকানা 0 সহ ডিভাইসটি ডিফল্ট matrix.shutdown(0, false); // Led ম্যাট্রিক্সের উজ্জ্বলতা 8 এ সেট করুন // সম্ভাব্য মানগুলি 0 থেকে 15 পর্যন্ত ম্যাট্রিক্স। সেট ইনটেনসিটি( 0, 8) ; //ক্লিয়ার ডিসপ্লে matrix.clearDisplay(0); ) void loop() ( // কল ফাংশন এক এক করে PointSerialSet(); PointRigthToLeft(); PointDownToUp(); PointLeftToRigth(); PointUpToFading(); (); PointPulse() ; PointClimbing(); PointToSpiralIn(); PointToSpiralOut(); ) // Function bodies void PointSerialSet() ( //setLed(ঠিকানা, সারি, কল, সেট) ফাংশন ব্যবহার করুন // দ্বারা অনুক্রমিক সুইচিং চালু করুন এর জন্য সারি (int i = 0; i< 8; i ++) { for(int j = 0; j < 8; j ++) { //Включить светодиод matrix.setLed(0, i, j, true); delay(delayValue); //Выключить светодиод matrix.setLed(0, i, j, false); } } } void PointRigthToLeft() { //Используем функцию setLed(address, row, col, set) //Змейка справа - налево for(int i = 7; i >= 0; i --) (এর জন্য(int j = 7, n = 0; j >= 0, n)< 8; j --, n ++) { if((i % 2) >0) ( matrix.setLed(0, j, i, true); delay(delayValue); matrix.setLed(0, j, i, false); ) অন্য ( matrix.setLed(0, n, i, true); delay(delayValue); matrix.setLed(0, n, i, false); ) ) ) void PointDownToUp() ( //setLed(ঠিকানা, সারি, কল, সেট) ফাংশনটি ব্যবহার করুন //এর জন্য নীচে থেকে উপরে সাপ (int i = 7; i >= 0; i --) (এর জন্য(int j = 7, n = 0; j >= 0, n)< 8; j --, n ++) { if((i % 2) >0) ( matrix.setLed(0, i, n, true); delay(delayValue); matrix.setLed(0, i, n, false); ) অন্য ( matrix.setLed(0, i, j, true); delay(delayValue); matrix.setLed(0, i, j, false); ) ) ) void PointLeftToRigth() ( // ফাংশন সেটLed ব্যবহার করুন (ঠিকানা, সারি, কল, সেট) // এর জন্য বাম থেকে ডানে স্নেক (int i = 0 i< 8; i ++) { for(int j = 7, n = 0; j >= 0, n< 8; j --, n ++) { if((i % 2) >0) ( matrix.setLed(0, j, i, true); delay(delayValue); matrix.setLed(0, j, i, false); ) অন্য ( matrix.setLed(0, n, i, true); delay(delayValue); matrix.setLed(0, n, i, false); ) ) ) void PointUpToDown() ( //setLed(ঠিকানা, সারি, কল, সেট) ফাংশনটি ব্যবহার করুন //এর জন্য উপরে থেকে নীচে সাপ (int i = 0 i< 8; i ++) { for(int j = 7, n = 0; j >= 0, n< 8; j --, n ++) { if((i % 2) >0) ( matrix.setLed(0, i, n, true); delay(delayValue); matrix.setLed(0, i, n, false); ) অন্য ( matrix.setLed(0, i, j, true); delay(delayValue); matrix.setLed(0, i, j, false); ) ) ) void PointFading() ( //setLed(address, row, col, set) ফাংশন ব্যবহার করুন // Fading effect int upValue = 0 ; int downValue = 7; for(int i = 0; i< 8; i ++) { if(i % 2) { for(int n = downValue; n >= upValue; n --) ( matrix.setLed(0, n, i, true); delay(delayValue); matrix.setLed(0, n, i, false); ) downValue --; ) else ( for(int j = upValue; j< downValue + 1; j ++) { matrix.setLed(0, j, i, true); delay(delayValue); matrix.setLed(0, j, i, false); } upValue ++; } } } void PointClimbing() { //Используем функцию setLed(address, row, col, set) //Эффект затухания int upValue = 4; int downValue = 4; for(int i = 0; i < 8; i ++) { if(i % 2) { for(int n = downValue; n >= upValue; n --) ( matrix.setLed(0, n, i, true); delay(delayValue); matrix.setLed(0, n, i, false); ) downValue ++; ) else ( for(int j = upValue; j< downValue + 1; j ++) { matrix.setLed(0, j, i, true); delay(delayValue); matrix.setLed(0, j, i, false); } upValue --; } } } void PointPulse() { //Используем функцию setLed(address, row, col, set) //Эффект пульса for(int i = 0; i < 8; i ++) { if(i == 4) { for(int climb = i; climb >= 0; climb --) ( matrix.setLed(0, climb, i, true); delay(delayValue / 4); matrix.setLed(0, climb, i, false); ) for(int fade = 1; fade< 8; fade ++) { matrix.setLed(0, fade, i, true); delay(delayValue / 4); matrix.setLed(0, fade, i, false); } } else { matrix.setLed(0, 4, i, true); delay(delayValue); matrix.setLed(0, 4, i, false); } } } void PointToSpiralIn() { //Используем функцию setLed(address, row, col, set) //Эффект спирали внутрь int lengthX = 8; // Ширина матрицы int lengthY = 8; // Высота матрицы int pointX = 0; int pointY = 0; int dir = 0; // Направление (0 - вправо, 1 - вниз, 2 - влево, 3 - вверх) int offset = 0; // Смещение // Перебираем всю матрицу for (int i = 0; i < lengthX * lengthY; i++) { matrix.setLed(0, pointY, pointX, true); delay(delayValue); matrix.setLed(0, pointY, pointX, false); if(dir == 0) { pointX ++; if(pointX >= lengthX - 1 - অফসেট) ( dir = 1; ) চালিয়ে যান; ) if(dir == 1) ( pointY ++; if(pointY ><= offset) { dir = 3; } continue; } if(dir == 3) { pointY --; if(pointY <= offset + 1) { dir = 0; offset ++; pointY = offset; } continue; } } } void PointToSpiralOut() { //Используем функцию setLed(address, row, col, set) //Эффект спирали внаружу int lengthX = 8; // Ширина матрицы int lengthY = 8; // Высота матрицы int pointX = 3; //начать с этих координат int pointY = 3; //начать с этих координат int dir = 0; // Направление (0 - вправо, 1 - вниз, 2 - влево, 3 - вверх) int offset = 3; // Смещение // Перебираем всю матрицу for (int i = 0; i < lengthX * lengthY; i++) { matrix.setLed(0, pointY, pointX, true); delay(delayValue); matrix.setLed(0, pointY, pointX, false); if(dir == 0) { pointX ++; if(pointX >= lengthX - 1 - অফসেট) ( dir = 1; ) চালিয়ে যান; ) if(dir == 1) ( pointY ++; if(pointY >= lengthY - 1 - অফসেট) ( dir = 2; ) চালিয়ে যান; ) if(dir == 2) ( pointX --; if(pointX)<= offset - 1) { dir = 3; } continue; } if(dir == 3) { pointY --; if(pointY <= offset - 1) { dir = 0; offset --; pointY = offset; } continue; } } }
স্কেচের ভিডিও:
এই নিবন্ধটি তাদের জন্য তৈরি করা হয়েছে যারা একটি খালি 8x8 ম্যাট্রিক্স এবং 74hc595 শিফ্ট রেজিস্টার কিনেছেন এবং এটি কীভাবে সংযুক্ত করবেন তা জানেন না।
উপরের উপাদানগুলিকে কীভাবে সংযুক্ত করতে হয় সে সম্পর্কে নির্দেশাবলীর জন্য আমি দীর্ঘদিন ধরে ইন্টারনেটে অনুসন্ধান করেছি, কিন্তু আমি আমার রেজিস্টারের জন্য বা অ-কার্যকর স্কেচগুলি খুঁজে পেয়েছি, তাই আমি সিদ্ধান্ত নিয়েছি যে নিজেকে খুশি করার জন্য আমাকে এখনও আমার হাত এবং মাথা দিয়ে কাজ করতে হবে। 8*8 ছবি সহ।
ইন্টারনেটে ম্যাট্রিক্স এবং শিফট রেজিস্টারের জন্য ডেটাশীট খুঁজে পেয়ে, আমি নিম্নলিখিত চিত্রটি আঁকলাম:
উভয় মাইক্রোসার্কিটের 12 তম লেগ (ল্যাচ পিন), পোর্টগুলি সংরক্ষণ করা সাধারণ, কারণ এটি বিভিন্ন সময়ে রেজিস্টারগুলিকে ল্যাচ করার কোন মানে হয় না। কিছু ম্যাট্রিক্স পিন (অ্যানোড) 220 ওহমের নামমাত্র মান সহ বর্তমান-সীমাবদ্ধ প্রতিরোধকের মাধ্যমে সংযুক্ত থাকে। স্কিম অনুযায়ী অন্য সবকিছু অত্যন্ত সহজ। শুধু ক্ষেত্রে, ম্যাট্রিক্সের পিনআউট সহ ছবি।
চিত্রগুলিকে লাইন দ্বারা লাইন প্রদর্শন করতে হবে (অন্যথায় অনুরূপ ম্যাট্রিক্সের সাথে কোন উপায় নেই), একটি ছোট বিলম্বের সাথে (মানুষের চোখ ব্যবহারিকভাবে 1ms এর বিলম্বের মধ্যে পার্থক্য করে না)।
আমি স্কেচে সবকিছু ব্যাখ্যা করার চেষ্টা করেছি। বোর্ডে আপলোড করার সময়, ডিসপ্লে সেই নম্বরগুলি দেখাবে যা আমরা আরডুইনো পোর্ট মনিটরে পাঠাব। (ভিডিও দেখুন)
সমাপ্ত ডিভাইসের ছবি (স্ক্রীনে জিগজ্যাগ, স্কেচে এর চিত্রটি পিক অ্যারেতে সংরক্ষণ করা হয়েছে)
ভবিষ্যতে আমি এই ডিসপ্লেতে আকর্ষণীয় কিছু করার চেষ্টা করব।
অবশেষে, ম্যাট্রিক্স মডিউল চীন থেকে এসেছে। প্রতিটি মডিউলে একটি MAX7219 চিপ (), একটি LED ম্যাট্রিক্স, একটি ক্যাপাসিটর এবং একটি প্রতিরোধক রয়েছে।
SPI ইন্টারফেসের মাধ্যমে MAX7219 দ্বারা নিয়ন্ত্রিত।
একটি ক্লাস্টারে মাইক্রোসার্কিটগুলি সিরিজে সংযুক্ত থাকে। আমি ইন্টারনেটে পড়েছি যে সর্বাধিক সম্ভাব্য সিরিয়াল সংযোগ MAX7219 এর শুধুমাত্র 8 টুকরা অনুমতি দেয়। বিশ্বাস করবেন না। 16টি মডিউল সংযুক্ত, এবং সবকিছু ঠিকঠাক কাজ করে।
আলীর উপর উপস্থাপিত মডিউলগুলি বিভিন্ন সংস্করণে আসে। সর্বাধিক জনপ্রিয় 2 প্রকার: ডিআইপি এবং SOIC প্যাকেজে একটি মাইক্রোসার্কিট সহ। ডিআইপি চিপ মডিউলটি বড় এবং একটি ক্লাস্টারে সংযুক্ত থাকাকালীন ততটা সুবিধাজনক নয়। আপনাকে তারের একটি গুচ্ছ সংযোগ করতে হবে।
একটি SOIC প্যাকেজে একটি চিপ সহ মডিউলগুলি একটি LED ম্যাট্রিক্সের আকার এবং সোল্ডারিং বা জাম্পার দ্বারা সংযুক্ত থাকে। এটা সুন্দর এবং ঝরঝরে সক্রিয় আউট.
ম্যাট্রিক্স এবং ক্লাস্টারগুলির সাথে কাজ করার জন্য সবচেয়ে সুপরিচিত লাইব্রেরিগুলি হল৷ মার্ক রাইস দ্বারা MAX72xx প্যানেলএবং ম্যাজিকডিজাইনস দ্বারা পরোলা:প্রথম গ্রন্থাগারটি ব্যবহার করা সহজ, দ্বিতীয়টি আরও বৈশিষ্ট্য সহ আরও জটিল৷ আমি এটা আরো বিস্তারিত লিখব.
MAX72xx প্যানেল ব্যবহার করার সময় লাইব্রেরি ইনস্টলেশন প্রয়োজন Adafruit GFX.
টেক্সট Russify করতে, আপনাকে ডাউনলোড করতে হবে এই নথিএবং Arduino/Libraries/Adafruit-GFX-Library-master ডিরেক্টরিতে ডিফল্ট glcdfont.c ফাইলটি প্রতিস্থাপন করুন। এছাড়াও এই ফাইলে, প্রয়োজনীয় অক্ষর এবং সংখ্যা ছাড়াও, সমস্ত ধরণের অক্ষরগুলির একটি গুচ্ছ বর্ণনা করা হয়েছে। তাদের সব দরকারী নাও হতে পারে. নীচের ছবিটি ব্যাখ্যা করে কিভাবে প্রতীকগুলি গঠিত হয়।
প্রয়োজনে, আপনি আপনার নিজস্ব চিহ্ন তৈরি করতে পারেন এবং ফাইলের অব্যবহৃত কোনোটির সাথে প্রতিস্থাপন করতে পারেন। বিভিন্ন লাইব্রেরিতে ব্যবহৃত প্রায় সব বিটম্যাপ ফন্ট এইভাবে গঠিত হয়।
সুতরাং, MAX72xx প্যানেল এবং Adafruit GFX লাইব্রেরি ইনস্টল করা হয়েছে, glcdfont.c ফাইলটি প্রতিস্থাপিত হয়েছে। Arduino IDE চালু করুন, খুলুন ফাইল. স্কেচে একটি utf8rus ফাংশন আছে। এটি রাশিয়ান ভাষার জন্য অক্ষর টেবিলের পুনঃকোডিং প্রদান করে। এটি শুধুমাত্র প্রোগ্রাম থেকে স্বাভাবিক আউটপুটের জন্য প্রয়োজন, অর্থাৎ, প্রোগ্রামে, পছন্দসই পাঠ্যটি রাশিয়ান ভাষায় লেখা হয়। যদি পাঠ্যটি COM পোর্টের মাধ্যমে প্রবেশ করা হয়, তাহলে অক্ষর কোডগুলি Serial_Read ফাংশনে সংশোধন করা হয়। IDE এবং কনসোলে, বিকাশকারীরা বিভিন্ন এনকোডিং ব্যবহার করে।
ফাইলের শুরুতে লাইব্রেরির কাজ করার জন্য প্রয়োজনীয় লাইন রয়েছে।
int numberOfHorizontalDisplays = 1;
int numberOfVerticalDisplays = 16;
আমার কাছে একটি SOIC প্যাকেজে একটি চিপ সহ মডিউল রয়েছে। তাদের একটি ছোট বৈশিষ্ট্য আছে। মডিউলগুলির ম্যাট্রিক্স 90 ডিগ্রি দ্বারা ঘোরানো ইনস্টল করা হয়। এটি একটি সুবিধার ফি. আপনি যদি লাইব্রেরিগুলির সাথে আসা স্কেচগুলি চালান তবে তারা প্রতিটি মডিউলে নীচে থেকে উপরে পাঠ্য আউটপুট করবে। টেক্সট zigzags প্রদর্শিত হবে. এই অসুখের চিকিৎসার জন্য, লাইব্রেরীকে "বলাতে হবে" যে 16টি উল্লম্ব ডিসপ্লে রয়েছে (সেগুলি শারীরিকভাবে অনুভূমিকভাবে অবস্থিত)। এবং তারপর অকার্যকর সেটআপ লাইব্রেরির জন্য লাইন নির্দিষ্ট করুন
matrix.setRotation(matrix.getRotation() + 1);
এটি প্রতিটি ম্যাট্রিক্সকে প্রোগ্রাম্যাটিকভাবে ফ্লিপ করবে। এবং সবকিছু স্বাভাবিকভাবে প্রদর্শিত হবে।
একটি ডিআইপি চিপ প্যাকেজ সহ মডিউলগুলিতে এটি নেই৷ তারের গুচ্ছ ছাড়া সবকিছুই সুন্দর।
MAX72xx প্যানেল লাইব্রেরিটি বরং বিনয়ী। কোন ভিজ্যুয়াল আউটপুট প্রভাব আছে. ক্লাস্টার একটি সম্পূর্ণ হিসাবে অনুভূত হয়. এমডি পরোলার সাথে পরিস্থিতি অনেক ভালো।
একটি SOIC প্যাকেজে একটি চিপ সহ মডিউলগুলির মালিকরাও একটি ক্লাস্টারে মডিউলগুলিকে অভিমুখীকরণের সমস্যার মুখোমুখি হবেন৷ শুধুমাত্র এটি MAX72xx এর চেয়ে একটু ভিন্ন দেখায়। এখানে, মডিউলগুলি দেখা যাবে, যেমনটি ছিল, আউট অফ টার্ন।
লাইব্রেরির সাথে অন্তর্ভুক্ত নমুনা থেকে HelloWorld স্কেচ।
প্রোগ্রামগতভাবে স্কেচে, আমি এই অসুস্থতা নিরাময় করতে সক্ষম ছিলাম না। আমি তার সাথে অন্যরকম আচরণ করেছি। Adruino/libraries/MD_MAX72xx_lib.h ফাইলের শেষে আপনাকে ছবির মতো লাইন খুঁজে বের করতে হবে।
এবং 1 থেকে 0 নির্বাচিত নির্বাচিত লাইনটি ঠিক করুন। ফাইলটি সংরক্ষণ করুন। Arduino IDE পুনরায় চালু করার প্রয়োজন নেই। আমরা ঢালা, আমরা তাকান.
এখন আপনি 24টি অ্যানিমেশন প্রভাব ব্যবহার করতে পারেন। অ্যানিমেশনটি P.displayText কমান্ড দিয়ে শুরু করা হয় ("টেক্সট টু ডিসপ্লে", "টেক্সট অ্যালাইনমেন্ট", স্পিড, ডিসপ্লে বিলম্ব, ফেড-ইন ইফেক্ট, ফেড-আউট ইফেক্ট)। আপনি দেখতে পাচ্ছেন, সেখানে অনেকগুলি সেটিংস রয়েছে।
এবং সবচেয়ে মজা হল ভার্চুয়াল জোনে ক্লাস্টারের বিভাজন। অঞ্চলগুলির সাথে কাজ করা খুব কঠিন নয়। আমি স্কেচ পোস্ট করি না, এটি লাইব্রেরির সাথে আসা নমুনায় রয়েছে। এখন আপনি ক্লাস্টারের শুরুতে ঘড়িটি প্রদর্শন করতে পারেন এবং বাকি মডিউলগুলিতে প্রায় কোনও সমস্যা ছাড়াই নিউজ টিকার প্রদর্শন করতে পারেন।
আপনি ইতিমধ্যে অনুমান করতে পারেন, সমস্যাটি সিরিলিক অক্ষরগুলির সাথে। তিনি সমাধানযোগ্য. একই ডিরেক্টরির আগের ফাইলের পাশে MD_MAX72xx_font.cpp ফাইলটি রয়েছে। এটি একটি ফন্ট ফাইল। এটির অক্ষরগুলি লাইব্রেরির GFX ফন্ট ফাইলের অনুরূপভাবে গঠিত হয়। সামান্য পার্থক্য আছে। এখানে অক্ষরের আকার 5 পয়েন্টের কম হতে পারে। অ্যাডাফ্রুট জিএফএক্স লাইব্রেরিতে, বিস্ময়বোধক চিহ্ন, উদাহরণস্বরূপ, অন্য যেকোনো চিহ্নের মতো প্রশস্ত 5টি বিন্দু নেয়, শুধুমাত্র একটি সারি বিন্দু ব্যবহার করা হয়। বাকিগুলি জ্বলে না, তবে প্রতীক হিসাবে ব্যবহৃত হয়। পারোলাতে, একই বিস্ময়বোধক চিহ্নটিও এক সারি বিন্দু দখল করে, শুধুমাত্র কাছাকাছি খালি বিন্দু নেই, কিন্তু সন্নিহিত অক্ষর হতে পারে। ছবি দেখলে আরও পরিষ্কার হবে।
প্রথম বিবেচিত লাইব্রেরি থেকে ফাইলের অনুরূপভাবে সিরিলিক অক্ষর সহ ফাইলটি সম্পূরক করার সময় নেই। যদি কেউ এটি করে এবং আমাকে একটি ফাইল পাঠায়, আমি এটি এই নিবন্ধে যোগ করব এবং আমি এবং আমার সাইটের অতিথিরা উভয়েই আপনার কাছে কৃতজ্ঞ থাকব।
ফলাফল। মার্ক রাইসের MAX72xx প্যানেল লাইব্রেরি ব্যবহার করা এবং বোঝা সহজ, কিন্তু দুর্বল কার্যকারিতা সহ।
MajicDesigns থেকে Parola লাইব্রেরি আরও জটিল এবং প্রায় যেকোনো অ্যাপ্লিকেশনের জন্য যথেষ্ট ক্ষমতা রয়েছে।
আগের পাঠে, আমরা শিফট রেজিস্টারের সাহায্যে শিখেছি। এটি সাধারণ উদ্দেশ্য পিন থেকে সরাসরি তুলনায় একটু বেশি কঠিন হতে পরিণত. আমাদের তখন যে সমস্যাটি সমাধান করতে হয়েছিল তা হল Arduino কন্ট্রোলারে সীমিত সংখ্যক নিয়ন্ত্রিত আউটপুট। আমাদের গবেষণার apogee ছিল জন্য গতিশীল ইঙ্গিত ব্যবহার. এখন কাজটি আরও কিছুটা জটিল করার সময়: আমরা LED ম্যাট্রিক্সের সাথে কাজ করতে শিখছি।