विषयसूची:

स्पार्कलिंग मैट्रिक्स के साथ अपने वेलेंटाइन को रोशन करें: 5 कदम
स्पार्कलिंग मैट्रिक्स के साथ अपने वेलेंटाइन को रोशन करें: 5 कदम

वीडियो: स्पार्कलिंग मैट्रिक्स के साथ अपने वेलेंटाइन को रोशन करें: 5 कदम

वीडियो: स्पार्कलिंग मैट्रिक्स के साथ अपने वेलेंटाइन को रोशन करें: 5 कदम
वीडियो: मैं आपका नाम बता सकती हूं | I Will Guess Your Name | I Can Read Your Mind | I Can Guess Your Name | 2024, नवंबर
Anonim
स्पार्कलिंग मैट्रिक्स के साथ अपने वेलेंटाइन को रोशन करें
स्पार्कलिंग मैट्रिक्स के साथ अपने वेलेंटाइन को रोशन करें

वेलेंटाइन डे आपके लिए प्रेम संदेश भेजने का मौका है। अपनी भावना व्यक्त करने के लिए सस्ते घटकों के साथ एक मजेदार एलईडी चेहरा क्यों न बनाएं!

चरण 1: इस परियोजना में प्रयुक्त चीजें

हार्डवेयर घटक

  • सीडुइनो वी4.2
  • बेस शील्ड
  • ग्रोव - रेड एलईडी मैट्रिक्स डब्ल्यू/ड्राइवर
  • ग्रोव - जेस्चर (PAJ7620U2)

सॉफ़्टवेयर ऐप्स और ऑनलाइन सेवाएं

अरुडिनो आईडीई

चरण 2: कहानी

Image
Image

चरण 3: हार्डवेयर कनेक्शन

छवि
छवि

इस परियोजना में, हम एक इनपुट के रूप में जेस्चर सेंसर का उपयोग करते हैं और लाल एलईडी मैट्रिक्स को खिलाने के लिए एलईडी मैट्रिक्स ड्राइवर को प्रतिक्रिया देते हैं।

आपको ग्रोव - जेस्चर और ग्रोव - रेड एलईडी मैट्रिक्स डब्ल्यू/ड्राइवर को बेस शील्ड के आई ^ 2 ^ सी पोर्ट से कनेक्ट करने की आवश्यकता है जिसे सीडुइनो में प्लग किया गया है। फिर USB केबल के माध्यम से Seeeduino को PC से कनेक्ट करें।

चरण 4: सॉफ्टवेयर प्रोग्रामिंग

इस परियोजना की योजना स्थिर इमोजी (रोते हुए चेहरे और प्रतीक्षा करने वाले चेहरे) को प्रदर्शित करने की है, जब कोई बायां या दायां इशारा नहीं पढ़ा जाता है।

जब बाएँ या दाएँ हावभाव पढ़ा जाता है, तो बाएँ या दाएँ हावभाव द्वारा नियंत्रित के साथ गतिशील आँख-स्थिति-परिवर्तन इमोजी प्रदर्शित करें।

छवि
छवि

विशिष्ट आंख की स्थिति में, एलईडी मैट्रिक्स पर एक धड़कते हुए दिल को प्रदर्शित किया जाएगा।

छवि
छवि

एलईडी डिस्प्ले पैटर्न एलईडी मैट्रिक्स एडिटर द्वारा डिज़ाइन किए गए हैं, आप ऊपर दिए गए प्रोग्राम शो में अपने एलईडी पैटर्न को बदल या जोड़ सकते हैं।

इस परियोजना के लिए तैयार होने के लिए, Arduino IDE में Grove - Gesture, Grove - Red LED Matrix w/Driver और MsTimer2 पुस्तकालयों को स्थापित करना आवश्यक है।

#शामिल "Grove_LED_Matrix_Driver_HT16K33.h"

#include "MsTimer2.h" #include "paj7620.h" #include "Wire.h"

सेटअप प्रक्रिया के दौरान, हमने सीरियल, मैट्रिक्स और MsTimer2 फ़ंक्शंस को इनिशियलाइज़ किया। आरंभिक सीरियल का उपयोग प्रोग्राम को डिबग करने के लिए किया जाता है, इसलिए पीसी से कनेक्ट करना या डिबगिंग के बाद सीरियल मॉनिटर का उपयोग करना अनावश्यक है। हम इस परियोजना में स्थिर इमोजी के प्रदर्शन को नियंत्रित करने के लिए MsTimer2 का उपयोग करते हैं।

// डिबग करने के लिए सीरियल को इनिशियलाइज़ किया।

सीरियल.बेगिन (९६००); जबकि (! सीरियल); paj7620Init (); वायर.बेगिन (); मैट्रिक्स.इनिट (); मैट्रिक्स.सेटब्राइटनेस(15); मैट्रिक्स.सेटब्लिंकरेट (BLINK_OFF); MsTimer2::set (1000, डिस्प्लेस्टैटिक); MsTimer2:: प्रारंभ ();

मुख्य लूप में, हम जेस्चर सेंसर, GES_RIGHT_FLAG, GES_LEFT_FLAG से केवल दो आउटपुट लेते हैं और इनका उपयोग डिस्प्लेडायनामिक () फ़ंक्शन को निर्देशित करने के लिए किया जाता है।

डिस्प्ले डायनामिक () फ़ंक्शन पिछली बार डायनामिक इमोजी प्रदर्शित होने से लेकर वर्तमान समय तक के अंतराल की गणना करेगा, यदि अंतराल TIMEOUT से अधिक है, तो यह स्थिर इमोजी खेलना बंद कर देगा, और शुरू करने के लिए प्रदर्शित डायनामिक इमोजी इंडेक्स सेट करेगा। जब बाएं से दाएं इशारों को पढ़ा जाता है, तो प्रारंभ सूचकांक 0 होता है, और बाएं से दाएं इशारों को फिर से पढ़ने के बाद सूचकांक बढ़ाया जाएगा। अन्यथा, प्रारंभ सूचकांक DYNAMIC सरणी का अंतिम सूचकांक है, और सूचकांक कम हो जाएगा।

शून्य प्रदर्शन डायनामिक (बूल लेफ्ट टू राइट) {

अहस्ताक्षरित लंबा वर्तमान समय = मिली (); अगर (वर्तमान समय - पिछला समय> टाइमआउट) {dIndex = leftToRight? 0: ARRAY_LENGTH(DYNAMIC) - 1; शोस्टैटिक = झूठा; }//इसका उपयोग सीमा से अधिक होने से बचने के लिए किया जाता है। अगर (डीइंडेक्स>= ARRAY_LENGTH(DYNAMIC) ||डीइंडेक्स <= -1) {दिल की धड़कन (); डीइंडेक्स = लेफ्ट टू राइट? ARRAY_LENGTH(DYNAMIC) - 1: 0; } पिछला समय = वर्तमान समय; मैट्रिक्स डिस्प्ले = डायनामिक [बाएं टू राइट? डीइंडेक्स++: डीइंडेक्स--]; }

यदि TIMEOUT अवधि पार हो गई है, तो कोई जेस्चर नहीं पढ़ा जाता है, स्थिर इमोजी प्लेइंग को पुनर्स्थापित किया जाएगा।

प्रोग्राम को अपने Seeeduino पर अपलोड करें, सब कुछ हो गया। खेलो और मज़े करो!

चरण 5: कोड

#शामिल "Grove_LED_Matrix_Driver_HT16K33.h"

#include "MsTimer2.h" #include "paj7620.h" #include "Wire.h" #define TIMEOUT 5000 #define GES_REG_ADDR 0x43 #define ARRAY_LENGTH(array) (sizeof(array) / sizeof(array[0])) मैट्रिक्स_8x8 मैट्रिक्स; uint64_t मैट्रिक्सडिस्प्ले = 0; अहस्ताक्षरित लंबा पिछला समय = मिली (); int8_t sIndex = 0; बूल शोस्टैटिक = सच; स्थिरांक uint64_t स्टेटिक = { 0x00003c0000a54200, 0x00003c000000e700, 0x00003c004242e700}; int8_t डीइंडेक्स = 0; कॉन्स्ट uint64_t डायनामिक = { 0x00003c000021e700, 0x00003c000042e700, 0x00003c000084e700}; कॉन्स uint64_t HEART = { 0x00183c7e7e240000, 0x00183c7effff6600, 0x183c7effffffff66, 0x00183c7effff6600}; शून्य डिस्प्लेस्टैटिक (शून्य) {अगर (शोस्टेटिक) {मैट्रिक्स डिस्प्ले = स्टेटिक [एसइंडेक्स]; sIndex = (sIndex + 1)% ARRAY_LENGTH (STATIC); } } शून्य दिल की धड़कन () { के लिए (uint8_t i = 0; i TIMEOUT) {showStatic = false; पिछला समय = वर्तमान समय; डीइंडेक्स = लेफ्ट टू राइट? 0: ARRAY_LENGTH(DYNAMIC) - 1; }//इसका उपयोग सीमा से अधिक होने से बचने के लिए किया जाता है। अगर (dIndex >= ARRAY_LENGTH(DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } मैट्रिक्स.राइटऑनपिक्चर (मैट्रिक्सडिस्प्ले); मैट्रिक्स.डिस्प्ले (); देरी (100); }

सिफारिश की: