আমার আছে:
- 2 8x8 এলইডি ম্যাট্রিক্স , এবং
- একটি MAX7219 চিপ।
প্রশ্ন: আমি কেবল আশ্চর্য হয়েছি কীভাবে আমি এটিকে আরডুইনো ডাইমিলানোভের সাথে সংযুক্ত করতে পারি ?
আমি গুগল করছি তবে কীভাবে তা জানতে পারলাম না।
আমার আছে:
প্রশ্ন: আমি কেবল আশ্চর্য হয়েছি কীভাবে আমি এটিকে আরডুইনো ডাইমিলানোভের সাথে সংযুক্ত করতে পারি ?
আমি গুগল করছি তবে কীভাবে তা জানতে পারলাম না।
উত্তর:
ব্রায়ান চুং এখনও একটি ম্যাক্স 7219 ব্যবহার করে একটি এলআরডি ম্যাট্রিক্সকে আরডুইনোতে কীভাবে সংযুক্ত করবেন সে সম্পর্কে ইন্টারনেট সংরক্ষণাগারটিতে একটি টিউটোরিয়াল ছিল :
এখানে একটি × 8 LED এলইডি ম্যাট্রিক্সের সাথে একটি পরীক্ষা করা হয়, যা একটি এমএএক্স 7219 আইসি দ্বারা চালিত হয়, একটি আরডুইনো মাইক্রো-কন্ট্রোলার বোর্ডের মাধ্যমে নিয়ন্ত্রিত হয়। এলইডি ম্যাট্রিক্স এবং আইসি সংযোগকারী সমস্ত তারের গোছাবার জন্য টিন ডাইনটেক থেকে একটি কাস্টম পিসিবি তৈরি করেছে। এটি একটি পৃথক 12 ভি বিদ্যুৎ সরবরাহ নিয়ে আসে, যাতে আরডুইনো বোর্ড থেকে সমস্ত কিছু খালি না করা হয়।
MAX7219 ড্রাইভার আইসি নিয়ন্ত্রণ করতে কেবল 4 টি তারের প্রয়োজন। তারা
ডেটা ক্লক ল্যাচ / লোড গ্রাউন্ড
আরডুইনোতে শিফটআউট () কমান্ডের জন্য ডেটা এবং ক্লক পিনগুলির সাথে মেলে। ল্যাচ পিনটি শিফটআউট কমান্ডের পরে হাই ডালকে একটি LOW দেবে। আমি জাভেলিন স্ট্যাম্পের জন্য মূল প্রোগ্রামটি লিখেছি। যেহেতু আরডুইনো কেবল 8 বিট ডেটা স্থানান্তর করতে পারে, তাই উপরের এবং নিম্ন উভয় বাইটগুলি MAX7219 এ স্থানান্তর করতে আমাকে 2 টি পৃথক কমান্ড ব্যবহার করতে হবে, যার প্রতিটি কমান্ডের জন্য 2 বাইট নিয়ন্ত্রণ প্রয়োজন।
8 × 8 এলইডি ম্যাট্রিক্সের ডেটা স্ট্রাকচারের জন্য, আমি একটি বাইট অ্যারে ব্যবহার করি - দৈর্ঘ্যের ম্যাট্রিক্স 8। ম্যাট্রিক্সের প্রতিটি সারিটি Y ডাইমেনশনের সাথে মিলে যায়। এক সারিতে প্রতিটি বিট এক্স মাত্রার সাথে মিলে যায়। সংখ্যা 1 চালু আছে; 0 বন্ধ আছে। এক্স দিকটি বিপরীত হয় এবং 1 বিট শিফটও রয়েছে। আপডেট এলইডি () ফাংশন এটি সরবরাহ করে।
প্রথম প্রোগ্রামটি একটি একক লাইন গতির একটি অ্যানিমেশন।
int CLOCK = 12;
int LATCH = 13;
int DATA = 11;
byte matrix[8];
int idx = 0;
void setup() {
pinMode(CLOCK, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(DATA, OUTPUT);
digitalWrite(CLOCK, LOW);
digitalWrite(LATCH, LOW);
digitalWrite(DATA, LOW);
initLED();
clearLED();
}
void loop() {
for (int j=0;j<8;j++) {
updateLED(idx, j, true);
}
refreshLED();
delay(200);
for (int j=0;j<8;j++) {
updateLED(idx, j, false);
}
refreshLED();
delay(100);
idx++;
idx %= 8;
}
void ledOut(int n) {
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, MSBFIRST, (n>>8));
shiftOut(DATA, CLOCK, MSBFIRST, (n));
digitalWrite(LATCH, HIGH);
delay(1);
digitalWrite(LATCH, LOW);
}
void initLED() {
ledOut(0x0B07);
ledOut(0x0A0C);
ledOut(0x0900);
ledOut(0x0C01);
}
void clearLED() {
for (int i=0;i<8;i++) {
matrix[i] = 0x00;
}
refreshLED();
}
void refreshLED() {
int n1, n2, n3;
for (int i=0;i<8;i++) {
n1 = i+1;
n2 = matrix[i];
n3 = (n1<<8)+n2;
ledOut(n3);
}
}
void updateLED(int i, int j, boolean b) {
int t = 1;
int n = 0;
int m = 0;
if (j==0) {
m = 7;
}
else {
m = j-1;
}
n = t<<m;
if (b) {
matrix[i] = n | matrix[i];
}
else {
n = ~n;
matrix[i] = n & matrix[i];
}
}
আপনার জন্য যদি এটি কিছুটা দেরি করে তবে দুঃখিত, তবে আমি এলইডি ম্যাট্রিক এবং 7-বিভাগের এলইডি ডিসপ্লে সহ MAX7219 ব্যবহার সম্পর্কে একটি পোস্ট লিখেছি ।