विषयसूची:
- चरण 1: सामग्री
- चरण 2: निर्माण योजना
- चरण 3: हार्डवेयर: सर्किट डिजाइन
- चरण 4: हार्डवेयर: ऐक्रेलिक काटना
- चरण 5: Arduino प्रोग्रामिंग कोड
- चरण 6: एक समाप्त देखो
वीडियो: डॉट लाइट पैटर्न: 6 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:22
मैंने इस विचार से शुरुआत की "क्या मैं अपने हाथों से प्रकाश को नियंत्रित कर सकता हूं और अपनी इच्छा व्यक्त कर सकता हूं?"
यह एक 'डॉट लाइट पैटर्न' है जो आपको अपने स्वयं के रंग बनाने, उन रंगों के साथ अपने स्वयं के पैटर्न डिजाइन करने और विभिन्न एनीमेशन प्रभावों का अनुभव करने की अनुमति देता है।
चरण 1: सामग्री
- अरुडिनो यूएनओ एक्स 13
- WS2901 या WS2811 पिक्सेल एलईडी पट्टी (130 LEDS)
- बटन स्विच x 1
- स्नैप स्विच x 65
- पोटेन्शनमीटर x 65
- इंद्रधनुष केबल
- पावर सफ़ी एसएमपीएस
- कंडक्टर केबल
- एक्रिलिक पारदर्शी गोल बार (30 मिमी व्यास)
- काला रंग एक्रिलिक बोर्ड (5T) (500 मिमी * 790 मिमी) x 2, (500 मिमी * 35 मिमी) x 2, (790 मिमी * 35 मिमी) x 2
चरण 2: निर्माण योजना
चरण 3: हार्डवेयर: सर्किट डिजाइन
-
उपरोक्त संरचना की तरह ऐक्रेलिक प्लेट को काटें। (चरण 2 देखें)
- नियो-पिक्सेल एलईडी का एक टुकड़ा पोटेन्शनमीटर होल के ऊपर और नीचे लगाया जाता है, और कुल 65 जोड़े नियो-पिक्सेल एलईडी संलग्न होते हैं।
- एक एकल Arduino पिन बनाने के लिए नियो-पिक्सेल एलईडी की एक जोड़ी को एक साथ तार दिया जाता है।
- 65 पोटेंशनमीटर को पोटेंशनमीटर के छेद में फिट करें। (इसे नियो-पिक्सेलेटेड सतह के विपरीत दिशा में रखें।)
- स्विच होल से मिलान करने के लिए 65 स्नैप स्विच संलग्न करें।
- हार्डवेयर के 65 टुकड़ों को एक Arduino UNO में बाँधने के लिए, तेरह क्षेत्रों में से प्रत्येक से कुल तेरह Arduino UNO जुड़े हुए हैं।
- जैसा कि संलग्न फोटो में दिखाया गया है, तार द्वारा Arduino UNO के पिनों में पोटेंशियलमीटर, स्नैप स्विच और नियो-पिक्सेल एलईडी कनेक्ट करें। (चरण 2 देखें)
- कई Arduino UNO के GND और 5V पिन को केबल तारों में एकत्र किया जाता है, फिर बाहरी शक्ति से जोड़ा जाता है। (चरण 2 देखें)
- हवा के दबाव से धूल हटा दें।
चरण 4: हार्डवेयर: ऐक्रेलिक काटना
-
ऐक्रेलिक रॉड को 50 मिमी की लंबाई में काटें।
- ऐक्रेलिक रॉड के एक तरफ को पोटेंशियलमीटर के नियंत्रक भाग से मिलान करने के लिए आकार और गहराई तक ड्रिल किया जाता है।
- ऐक्रेलिक रॉड को क्लीयरेंस के लिए छेद की तुलना में थोड़ा चौड़ा ट्रिम किया जाता है जो पोटेंशनमीटर में अच्छी तरह से फिट हो सकता है।
- दूसरा पक्ष थोड़ा सा सैंडपेपर देता है ताकि प्रकाश को बड़े करीने से प्रसारित किया जा सके।
चरण 5: Arduino प्रोग्रामिंग कोड
www.kasperkamperman.com/blog/arduino/ardui…
'hsb to rgb' कोड를
#शामिल
//'adafruit_neopixel'헤더파일라는
//네오픽셀
#पिन परिभाषित करें1 2 #पिन 2 3 परिभाषित करें #पिन 3 4 परिभाषित करें #पिन 4 5 परिभाषित करें #पिन 5 6 परिभाषित करें
#define NUMPIXELS 2 //네오픽셀 LED
#परिभाषित करें NUM_LIGHTS 5 //작동 (네오픽셀)
//네오픽셀 ऐरे
Adafruit_NeoPixel पिक्सेल = { Adafruit_NeoPixel (NUMPIXELS, PIN1, NEO_GRB + NEO_KHZ800), Adafruit_NeoPixel (NUMPIXELS, PIN2, NEO_GRB + NEO_KHZ800), Adafruit_NeoPixel (NUMPIX_Z, PIN3, NEOK,NEO_NeoPixel, NUMPIXEL, PIN3, NEOK, NEO_NeoPixel, NUMPIXEL, PIN3, NEOK, NEO_NeoPixel, Adafruit_NeoPixel(NUMPIXELS, PIN5, NEO_GRB + NEO_KHZ800)}; ////네오픽셀을 । //첫번째 LED의 //두번째 //세번째 झंडा
//////////////////////////////////////////////////////////////
//////HSV RGB로 getRGB ()를
कास्ट बाइट dim_curve = {
0, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 20, 20, 20, 21, 21, 22, 22, 22, 23, 23, 24, 24, 25, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 32, 32, 33, 33, 34, 35, 35, 36, 36, 37, 38, 38, 39, 40, 40, 41, 42, 43, 43, 44, 45, 46, 47, 48, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 70, 71, 73, 74, 75, 76, 78, 79, 81, 82, 83, 85, 86, 88, 90, 91, 93, 94, 96, 98, 99, 101, 103, 105, 107, 109, 110, 112, 114, 116, 118, 121, 123, 125, 127, 129, 132, 134, 136, 139, 141, 144, 146, 149, 151, 154, 157, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 190, 193, 196, 200, 203, 207, 211, 214, 218, 222, 226, 230, 234, 238, 242, 248, 255, }; //
शून्य getRGB (इंट ह्यू, इंट सैट, इंट वैल, इंट कलर्स [५] [३], इंट इंडेक्स) {
वैल = dim_curve [वैल]; शनि = २५५ - dim_curve [२५५ - शनि];
//, (HSB / HSV)를 RGB로
//dim_curve는 (반전)에서만 । // ।
इंट आर;
इंट जी; इंट बी; इंट बेस;
अगर (शनि == 0) {
रंग [सूचकांक] [0] = वैल; रंग [सूचकांक] [1] = वैल; रंग [सूचकांक] [२] = वैल; } अन्यथा {
आधार = ((२५५ - शनि) * वैल) >> ८;
स्विच (ह्यू / 60) {
केस 0: आर = वैल; जी = (((वैल - बेस) * ह्यू) / 60) + बेस; बी = आधार; टूटना;
मामला एक:
आर = (((वैल - बेस) * (६० - (ह्यू% ६०))) / ६०) + आधार; जी = वैल; बी = आधार; टूटना;
मामला 2:
आर = आधार; जी = वैल; बी = (((वैल - बेस) * (ह्यू% ६०)) / ६०) + आधार; टूटना;
मामला 3:
आर = आधार; जी = (((वैल - बेस) * (६० - (ह्यू% ६०))) / ६०) + आधार; बी = वैल; टूटना;
मामला 4:
आर = (((वैल - आधार) * (रंग% ६०)) / ६०) + आधार; जी = आधार; बी = वैल; टूटना;
मामला 5:
आर = वैल; जी = आधार; बी = (((वैल - बेस) * (६० - (ह्यू% ६०))) / ६०) + आधार; टूटना; }
रंग [सूचकांक] [0] = आर;
रंग [सूचकांक] [1] = जी; रंग [सूचकांक] [२] = ख; }
}
int rgb_colors[NUM_LIGHTS][3]; //네오픽셀 आरजीबी रंग
इंट ह्यू [NUM_LIGHTS]; //네오픽셀 오브젝트갯수마다 रंग 선언 इंट सैट [NUM_LIGHTS]; //네오픽셀 इंट ब्रिगंट [NUM_LIGHTS]; //네오픽셀
//
इंट स्टार्टस्विच = {८, ९, १०, ११, १२}; // चालू / बंद बूलियन स्टार्टस्टेट = {झूठा, झूठा, झूठा, झूठा, झूठा}; // चालू / बंद
const int colorPin = {A0, A1, A2, A3, A4}; //
इंट कलरवैल = {0, 0, 0, 0, 0}; //
इंट एनिमेशनबटन = 7; //
/////////////////////////////////////////////////
//애니메이션 //디바운싱? इंट बटनस्टेट; // int lastButtonState = High; // अहस्ताक्षरित लंबे समय तक lastDebounceTime = 0; // 0으로 अहस्ताक्षरित लंबी बहस देरी = ५०; //;출력이 इंट मोड = 0; //
इंट बी_इंटरवल[5]; //블링킹을
इंट बी_मिन = १००; //; इंट बी_मैक्स = 500; //; इंट आर_इंटरवल = ५०; //레인보우 int D_Interval = 10; //
बूलियन बी_स्टेट [5]; //
///////////////////////////////////////////////////////
//
अहस्ताक्षरित लंबी धारामिलिस; //
अहस्ताक्षरित लंबा B_previousMillis[5]; //각 블링킹 अहस्ताक्षरित लंबे DR_Millis [5]; //각 (예비) अहस्ताक्षरित लंबा R_previousMillis; //레인보우 अहस्ताक्षरित लंबी D_previousMillis; //
बूलियन फर्स्टरेनबो = सच; //레인보우
इंट रेनबोस्पीड; //
इंट ब्राइट = १००; // इंट ब्राइटनेसफैक्टर = 1; //디밍 /////////////////////////////////////////// ////////////////////////////////////
व्यर्थ व्यवस्था() {
के लिए (int i = 0; i < NUM_LIGHTS; i++) {पिक्सेल .begin (); //네오픽셀 }
//
के लिए (int i = 0; i <NUM_LIGHTS; i++) {पिनमोड (स्टार्टस्विच , INPUT_PULLUP); // चालू/बंद } पिनमोड (एनीमेशनबटन, INPUT_PULLUP); //애니메이션
के लिए (int i = 0; i <NUM_LIGHTS; i++) {B_Interval = int(random(B_Min, B_Max)); //모듈별 (인터발) }
सीरियल.बेगिन (९६००); //
}
शून्य लूप () {
मोड = चेकएनीममोड (); //
//버튼과 ।
के लिए (int i = 0; i <NUM_LIGHTS; i++) { startState = !digitalRead(startsSwitch); // चालू / बंद startState에 넣어준다 // startState = digitalRead (startsSwitch ); कलरवैल = एनालॉगरेड (कलरपिन ); //가변저항에서 값을 }
स्विच (मोड) {//애니메이션함수
केस 0: ऑन (); // पर함수 ब्रेक; //
मामला एक:
इंद्रधनुष (); //इंद्रधनुष함수 तोड़;
मामला 2:
डिमिंग (); // डिमिंग함수 ब्रेक;
मामला 3:
पलक झपकाना(); // पलक झपकना टूटना; }
के लिए (int i = 0; i <NUM_LIGHTS; i++) {पिक्सेल । शो (); //네오픽셀 }
}
/////////////////////////////////////////////////////////////
इंट चेकएनीममोड () {
//애니메이션 ।
/////////////////////////////////////////////// /// करंटमिलिस = मिली (); // इंट रीडिंग = digitalRead (एनीमेशनबटन); अगर (पढ़ना! = lastButtonState) {//입력핀으로부터 lastDebounceTime = मिली (); //현재 }
अगर ((currentMillis - lastDebounceTime) > debounceDelay) {
अगर (पढ़ना! = बटनस्टेट) {//입력핀으로부터
बटनस्टेट = पढ़ना; //판독값을 बटनस्टेट에
अगर (बटनस्टेट == कम) {//버튼상태가
मोड++; //버튼모드 1씩 अगर (मोड> 3) {मोड = 0; पहला इंद्रधनुष = सच; //레인보우 ब्राइटनेसफैक्टर = 1; // उज्ज्वल = १५; //밝기는 १५ } } } }
लास्टबटनस्टेट = पढ़ना; //판독값을
वापसी मोड; मोड함수로 }
////////////////////////////////////////////////////////////////////
// एनिमेशन मोड फंक्शनलेशन
//पर
शून्य पर () {Serial.println ("चालू"); //시리얼 on을 के लिए (int i = 0; i <NUM_LIGHTS; i++) { color_set(i, colorVal); //가변저항 } }
//इंद्रधनुष
शून्य इंद्रधनुष () { Serial.println ("बारिश"); //시리얼 बारिश을 अगर (फर्स्टरेनबो) {इंद्रधनुष गति = 0; //레인보우 firstRainbow = false; //레인보우 } अगर (मिली () - R_previousMillis > R_Interval) {//흐른 R_previousMillis = currentMillis; //현재시간을 रेनबोस्पीड += 10; //레인보우 १०을 }
के लिए (int i = 0; i <NUM_LIGHTS; i++) { color_set(i, (colorVal + RainbowSpeed) % 1023); //레인보우컬러셋팅 }
}
// डिमिंग
शून्य डिमिंग () {Serial.println ("dimm"); //시리얼모니터에 dimm을 Serial.println(उज्ज्वल); //시리얼모니터에 ब्राइट를 अगर (currentMillis - D_previousMillis > D_Interval) {//흐른 D_previousMillis = currentMillis; //현재시간을 ब्राइट += ब्राइटनेसफैक्टर; //밝기에 1씩 } अगर (उज्ज्वल 254) {ब्राइटनेसफैक्टर = -1 * ब्राइटनेसफैक्टर; } उज्ज्वल = बाधा (उज्ज्वल, ९९, २५४); //변수 99~최대값254
के लिए (int i = 0; i <NUM_LIGHTS; i++) {dim_color_set(i, Bright); //디밍컬러셋팅 } }
//पलक झपकाना
शून्य ब्लिंकिंग () {Serial.println ("ब्लिंक"); // पलक를
के लिए (int i = 0; i B_Interval) {//흐른
B_previousMillis = currentMillis; //현재시간을 블링크 시간에 B_state = !B_state; //각 } } के लिए (int i = 0; i <NUM_LIGHTS; i++) { if (B_state) {//모듈의 상태가 히면 color_set (i, colorVal ); //가변저항 } और { noColor_set(i); //읽히지 } }
}
////////////////////////////////////////////////////////////////////////////////////////
// कोर फंक्शंस
// रंग सेट
शून्य रंग_सेट (इंट इंडेक्स, इंट कलरसेंसर) {
अगर (स्टार्टस्टेट [इंडेक्स]) {ह्यू [इंडेक्स] = मैप (कलरसेंसर, ०, १०२३, ०, ३५९); //0~1023값을 0~359값으로 (colorSenser에) getRGB (ह्यू [इंडेक्स], 255, 255, rgb_colors, index); के लिए (int i = 0; i < NUMPIXELS; i ++) {पिक्सेल [इंडेक्स]। सेट पिक्सेलकलर (i, पिक्सल [इंडेक्स]। कलर (आरजीबी_कलर्स [इंडेक्स] [०], आरजीबी_कलर्स [इंडेक्स] [1], आरजीबी_कलर्स [इंडेक्स] [2])); } //픽셀컬러 rgb_colors의 r, g, b으로 } और noColor_set(index); //컬러셋팅 }
//////नोकलर सेट
शून्य noColor_set (इंट इंडेक्स) {//컬러셋팅
के लिए (int i = 0; i < NUMPIXELS; i++) {पिक्सेल [इंडेक्स].setPixelColor (i, पिक्सल [इंडेक्स]। कलर (0, 0, 0)); } //픽셀컬러 0, 0, 0으로 }
////dimColor सेट
शून्य dim_color_set (इंट इंडेक्स, इंट बीसी) {//디밍컬러셋팅
अगर (स्टार्टस्टेट [इंडेक्स]) {ह्यू [इंडेक्स] = मैप (कलरवैल [इंडेक्स], ०, १०२३, ०, ३५९); //0~1023값을 0~359값으로 (colorVal에) getRGB(hue[index], 255, BC, rgb_colors, index); के लिए (int i = 0; i < NUMPIXELS; i++) {पिक्सेल [इंडेक्स].setPixelColor (i, पिक्सल [इंडेक्स]। कलर (rgb_colors [इंडेक्स] [0], rgb_colors [इंडेक्स] [1], rgb_colors [इंडेक्स] [2])); } ///픽셀컬러 rgb_colors의 r, g, b으로 } और noColor_set(index); //컬러셋팅 }
चरण 6: एक समाप्त देखो
सिफारिश की:
ESP8266 विकिरण पैटर्न: 7 कदम
ESP8266 विकिरण पैटर्न: ESP8266 एक लोकप्रिय माइक्रोकंट्रोलर मॉड्यूल है क्योंकि इसे ऑनबोर्ड वाईफाई के माध्यम से इंटरनेट से जोड़ा जा सकता है। यह हॉबीस्ट के लिए रिमोट नियंत्रित गैजेट्स और IoT डिवाइसेस को न्यूनतम अतिरिक्त हार्डवे के साथ बनाने के कई अवसर खोलता है
एलईडी पैटर्न को संतुष्ट करना: 9 कदम
एलईडी पैटर्न को संतुष्ट करना: कई लोगों के लिए नींद लगभग अप्राप्य वस्तु बन गई है, एक विलासिता जो उन भाग्यशाली लोगों के लिए आरक्षित है जो जिम्मेदारी के विभिन्न तारों को एक ही बार में अलग-अलग दिशाओं में खींचते हुए महसूस नहीं करते हैं। सोना महत्वपूर्ण है और आपको तरोताजा महसूस करने में मदद कर सकता है
एलईडी पैटर्न (विभिन्न प्रकाश पैटर्न): 3 कदम
एलईडी पैटर्न (विभिन्न प्रकाश पैटर्न): विचार: मेरी परियोजना एक एलईडी रंग पैटर्न है। इस परियोजना में 6 एल ई डी हैं जो सभी संचालित हैं और Arduino के साथ संचार करते हैं। 4 अलग-अलग पैटर्न हैं जो चक्र से गुजरेंगे और एक लूप में खेले जाएंगे। जब एक पैटर्न समाप्त होता है, तो दूसरा
मल्टी-पैटर्न के साथ म्यूजिक रिएक्टिव WS2812B LED कैसे बनाएं: 4 कदम
मल्टी-पैटर्न के साथ संगीत प्रतिक्रियाशील WS2812B एलईडी कैसे बनाएं: WS2812, WS2812B एक बुद्धिमान नियंत्रित एलईडी प्रकाश स्रोत है। इसमें एक इनबिल्ट कंट्रोल चिप है और इसमें 4 पिन हैं। वी+, वी-, दीन & Dout। इन एल ई डी को नियंत्रित करने के लिए हम Arduino, PIC या Rasberry pie जैसे MCU का उपयोग करना चाहते हैं। मैंने इस प्रोजेक्ट के लिए Arduino UNO का उपयोग किया है
एक एलईडी नाइट लाइट डब्ल्यू / स्टार पैटर्न बनाना: 8 कदम (चित्रों के साथ)
एक एलईडी नाइट लाइट डब्ल्यू / स्टार पैटर्न बनाना: इस एलईडी नाइटलाइट में एक स्टार पैटर्न है और यह जादुई तरीके से एक अंधेरे कमरे को रोशन करता है। मैंने लकड़ी के लिए ipe का उपयोग किया, हालाँकि कोई भी गहरे रंग की लकड़ी, या उदाहरण के लिए चित्रित MDF अच्छी तरह से काम करेगा। यह वास्तव में एक मजेदार परियोजना है और एक उच्चारण प्रकाश के रूप में बहुत अच्छा होगा