MAX 7219 का उपयोग करके Arduino में LED मैट्रिक्स कैसे कनेक्ट करें?


9

मेरे पास है:

प्रश्न: मुझे आश्चर्य है कि मैं कैसे Arduino Duemilanove से कनेक्ट कर सकता हूं ?

मैं गुगली कर रहा हूं, लेकिन मुझे यह पता नहीं चला कि कैसे।


@ ब्रूनो - आपने लिंक हटा दिया, तो मुझे लगा कि यह मर चुका है। लेकिन यह ठीक है, और आपने यह नहीं बताया कि आपने क्यों हटाया, इसलिए मैंने वापस रोल किया। यदि आपके पास लिंक को हटाने का एक अच्छा कारण है, तो कृपया इसे टिप्पणी क्षेत्र में छोड़ दें।
स्टीवनव सिप

@stevenvh क्षमा करें, मैंने पहले इसका परीक्षण किया था और यह काम नहीं कर रहा था। शायद मुझे कुछ इंटरनेट कनेक्टिविटी समस्याएं हो रही थीं लेकिन अब यह काम कर रहा है। आपने अच्छी तरह से मेरा संपादन वापस किया।
ब्रूनो फेरेरा

जवाबों:


11

ब्रायन चुंग का इंटरनेट आर्काइव पर अभी भी एक ट्यूटोरियल उपलब्ध था कि कैसे एक एलईडी मैट्रिक्स को एक Arduino से कनेक्ट करने के लिए MAX7219 का उपयोग किया जाता है:

यहां एक 8 × 8 एलईडी मैट्रिक्स के साथ एक प्रयोग किया गया है, जिसे एक Arduino माइक्रो-कंट्रोलर बोर्ड के माध्यम से नियंत्रित MAX7219 IC द्वारा संचालित किया गया है। एलईडी मैट्रिक्स और आईसी को जोड़ने वाले सभी तारों को साफ करने के लिए डिनोटेक से टैन द्वारा एक कस्टम पीसीबी बनाया गया है। यह एक अलग 12V बिजली की आपूर्ति के साथ आता है, ताकि Arduino बोर्ड से सब कुछ सूखा न जाए।

MAX7219 ड्राइवर IC को नियंत्रित करने के लिए केवल 4 तार आवश्यक हैं। वे सभी

डेटा क्लॉक लैच / लोड ग्राउंड

डेटा और क्लॉक पिन को Arduino में ShiftOut () कमांड के लिए मेल खाना चाहिए। ShiftOut कमांड के बाद कुंडी का पिन एक LOW to HIGH पल्स देगा। मैंने जेवलिन स्टैम्प के लिए मूल कार्यक्रम लिखा है। चूंकि Arduino केवल 8 बिट डेटा को शिफ्ट कर सकता है, मुझे ऊपरी और निचले बाइट्स को MAX7219 पर शिफ्ट करने के लिए 2 अलग-अलग कमांड का उपयोग करना होगा, जिसके लिए प्रत्येक कमांड के लिए 2 बाइट्स नियंत्रण की आवश्यकता होती है।

8 × 8 एलईडी मैट्रिक्स की डेटा संरचना के लिए, मैं एक बाइट सरणी का उपयोग करता हूं - लंबाई का मैट्रिक्स 8. मैट्रिक्स में प्रत्येक पंक्ति वाई आयाम से मेल खाती है। एक पंक्ति में प्रत्येक बिट एक्स आयाम से मेल खाती है। अंक 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];
  }
}

2

क्षमा करें यदि यह आपके लिए थोड़ा देर से है, लेकिन मैंने अभी-अभी एक पोस्ट लिखा है जिसमें MAX7219 का उपयोग एलईडी मैट्रीस और 7-सेगमेंट डिस्प्ले के साथ किया गया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.