विषयसूची:

साइन-एज़ ड्रैगन: 10 कदम (चित्रों के साथ)
साइन-एज़ ड्रैगन: 10 कदम (चित्रों के साथ)

वीडियो: साइन-एज़ ड्रैगन: 10 कदम (चित्रों के साथ)

वीडियो: साइन-एज़ ड्रैगन: 10 कदम (चित्रों के साथ)
वीडियो: Goku And Vegeta Uses Fusion technique Vs Hearts 2024, जुलाई
Anonim
साइन-एज़ ड्रैगन
साइन-एज़ ड्रैगन

साइन-एज़ ड्रैगन एक परिवेशी घरेलू सजावट का टुकड़ा है जो आपको अगले तीन तीन घंटों के अंतराल के लिए मौसम पूर्वानुमान बताने के लिए यांत्रिक आंदोलनों और रोशनी का उपयोग करता है। परिभाषा के अनुसार, परिवेश किसी चीज के तत्काल परिवेश का वर्णन करता है; इसलिए यह निर्णय लिया गया कि परिवेशी प्रदर्शन में मौसम डेटा को शामिल करना उचित होगा। मौसम एक ऐसा पहलू है जो अनजाने में लोगों के दिन को बदल देता है और यह जानकारी का एक टुकड़ा है जो लगातार हर मिनट, या यहां तक कि सेकंड में भी बदल रहा है।

चीनी ड्रैगन "शक्ति, शक्ति और सौभाग्य का प्रतीक" है और इसे अक्सर एशियाई उपमहाद्वीप में एक उच्च सांस्कृतिक और पारंपरिक मूल्य पर रखा जाता है। सौभाग्य लाने के अलावा, चीनी ड्रैगन के पास शक्तिशाली शक्तियां भी हैं जो "पानी, वर्षा, आंधी और बाढ़" को नियंत्रित करती हैं। अंततः, चीनी ड्रैगन को मौसम के आंकड़ों का प्रतिनिधित्व करने के लिए उपयुक्त माना गया।

VISUALIZATION

साइन-एज़ ड्रैगन को तीन अलग-अलग वर्गों में छह मुख्य बिंदुओं पर तीन 3 घंटे के अंतराल के लिए मौसम के पूर्वानुमान का प्रतिनिधित्व करते हुए हेरफेर किया जाता है। प्रत्येक 3 घंटे के अंतराल के लिए, निम्नलिखित जानकारी शामिल की जाएगी:

  • मौसम विवरण - वर्तमान मौसम की जानकारी का रंग निर्धारित करता है।
  • तापमान - शरीर की ऊंचाई निर्दिष्ट करता है
  • आर्द्रता - एलईडी खंडों का झपकना
  • हवा की गति - शरीर के बाएँ और दाएँ चलने की गति को नियंत्रित करती है।

सामग्री की आवश्यकता

  1. 3 मिमी प्लाईवुड / कार्डबोर्ड
  2. 5 मिमी लकड़ी के डॉवेल या चॉपस्टिक
  3. 2 कण फोटोन
  4. 3 स्लिंकी खिलौने
  5. 6 सर्वो मोटर्स
  6. NeoPixel लाइट्स (या तो एक स्ट्रैंड या अलग-अलग लाइट्स को एक साथ सिल दिया जाता है)
  7. बहुत सारे सुपर गोंद
  8. प्रवाहकीय धागा
  9. एक्रिलिक पेंट
  10. सजावटी कपड़े
  11. लेजर कटर
  12. थ्री डी प्रिण्टर

चरण 1: ऊपर और नीचे

उतार व चढ़ाव!
उतार व चढ़ाव!
उतार व चढ़ाव!
उतार व चढ़ाव!
उतार व चढ़ाव!
उतार व चढ़ाव!

साइन-एज़ ड्रैगन के निर्माण के लिए आपका पहला कदम उस घटक का निर्माण करना है जो शरीर के ऊपर और नीचे की गति को नियंत्रित करता है। कितना रोमांचक है!

  1. Adobe Illustrator फ़ाइलें (.ai) डाउनलोड करें और एक लेज़र कटर मशीन का उपयोग करके उनका प्रिंट आउट लें।

    upDownBoxWithPlatform.ai कार्डबोर्ड पर प्रिंट होना चाहिए।

  2. 3D प्रिंटिंग फ़ाइलें (.stl) डाउनलोड करें और उन्हें प्रिंट करने के लिए अपने पसंदीदा 3D प्रिंटर का उपयोग करें।

    डिस्क या डिस्क टर्नर के लिए रंग कोई मायने नहीं रखता। दूसरी छवि में, डिस्क के छेद के अंदर डिस्क टर्नर डाला गया है।

  3. पहले दो घटकों को इकट्ठा करें और उन्हें एक साथ गोंद दें जैसा कि चित्र 3 से 5 में दिखाया गया है।

    1. प्लेटफ़ॉर्म
    2. डिस्क के लिए खांचे
  4. अब, नीचे दिए गए सुझावों का पालन करते हुए बॉक्स को एक साथ रखें।

    1. सर्वो के तारों को बॉक्स के किनारे पर आयताकार उद्घाटन के माध्यम से जाना चाहिए।
    2. डिस्क टर्नर का सबसे छोटा सिरा सर्वो हेड से जुड़ जाता है और लंबा सिरा बॉक्स के दूसरी तरफ के छेद से होकर जाता है, जिस पर एक गोलाकार छेद होता है। यह चित्र 6 में दिखाया गया है।
  5. अब, हमें यह सुनिश्चित करने के लिए कुछ चाहिए कि डिस्क के चालू होने पर प्लेटफ़ॉर्म समतल रहे। चॉपस्टिक को 75 मिमी लंबी छड़ियों में काटें (चित्र 7) और उन्हें बॉक्स के शीर्ष के माध्यम से गर्म गोंद का उपयोग करके प्लेटफॉर्म के शीर्ष पर गोंद दें। सुनिश्चित करें कि स्टिक्स प्लेटफॉर्म पर 90 डिग्री पर नीचे की ओर हैं।
  6. प्लेटफॉर्म पर बॉक्स के शीर्ष पर मध्य छेद में 212 मिमी लंबी छड़ी डालें।

मिठाई! अब आपके पास ड्रैगन के ऊपर और नीचे की गति के लिए एक पूरा बॉक्स (चित्र 8) है। अब, ऊपर के चरणों को दो बार और दोहराएं!

चरण 2: बाएँ और दाएँ के बारे में क्या ?

बाएँ और दाएँ के बारे में क्या ?!
बाएँ और दाएँ के बारे में क्या ?!
बाएँ और दाएँ के बारे में क्या ?!
बाएँ और दाएँ के बारे में क्या ?!
बाएँ और दाएँ के बारे में क्या ?!
बाएँ और दाएँ के बारे में क्या ?!
बाएँ और दाएँ के बारे में क्या ?!
बाएँ और दाएँ के बारे में क्या ?!

अब, हम साइन-एज़ ड्रैगन के बाएँ और दाएँ आंदोलन के बारे में नहीं भूल सकते हैं, है ना? आइए दूसरे चरण में कूदें!

  1. Adobe Illustrator फ़ाइलें (.ai) डाउनलोड करें और एक लेज़र कटर मशीन का उपयोग करके उनका प्रिंट आउट लें।

    1. leftRightBoxWithPlatforms.ai को कार्डबोर्ड पर प्रिंट किया जाना चाहिए।
    2. armTurner.ai फ़ाइल को 3 मिमी मोटी सामग्री पर मुद्रित किया जाना चाहिए।
  2. 3D प्रिंटिंग फ़ाइलें (.stl) डाउनलोड करें और उन्हें प्रिंट करने के लिए अपने पसंदीदा 3D प्रिंटर का उपयोग करें।

    सुनिश्चित करें कि आप दो भुजाओं को प्रिंट करते हैं! यहां रंग मायने नहीं रखता।

  3. दो प्लेटफार्मों को एक साथ इकट्ठा करें जैसा कि चित्र 3 में गर्म गोंद का उपयोग करके दिखाया गया है।
  4. बॉक्स को एक साथ रखो। हालांकि ऐसा करना मुश्किल हो सकता है, इसे हासिल करना आसान है:

    1. बॉक्स के दोनों ओर दो बड़े स्लिट्स के बीच दो प्लेटफॉर्म को इंसर्ट करना।
    2. पहले हाथ को ऊपरी मंच के शीर्ष पर रखें।
    3. आर्म टर्नर को आर्म और फिर ऊपरी प्लेटफॉर्म के माध्यम से थ्रेड करना।
    4. दूसरे हाथ को नीचे के प्लेटफॉर्म के शीर्ष पर रखें।
    5. आर्म टर्नर को दूसरे हाथ से और फिर नीचे के प्लेटफॉर्म से पिरोना।
    6. 3D प्रिंटेड आर्म टर्नर के आयताकार उद्घाटन के माध्यम से आर्म टर्नर को चिपकाना।
    7. टर्नर का दूसरा सिरा सर्वो मोटर के ऊपर जाता है।
    8. बॉक्स में ऊपर, नीचे और पीछे के टुकड़े जोड़ें।

आपका अंतिम असेंबल बॉक्स छठे चित्र जैसा दिखना चाहिए। अब, आपको वह दो बार और दोहराने को मिलता है!

इस चरण के अंत तक, आपके पास ऊपर/नीचे और बाएँ/दाएँ गति प्रणालियों में से प्रत्येक के साथ छह बक्से होने चाहिए।

चरण ३: शरीर को ऊपर उठाना…कैसे?

शरीर को पकड़े हुए…कैसे?
शरीर को पकड़े हुए…कैसे?

अच्छा प्रश्न! तभी वे 3डी प्रिंटेड स्लिंकी होल्डर अंदर आते हैं। शामिल की गई.stl फाइल को डाउनलोड करें और 3डी प्रिंटर का उपयोग करके इसे प्रिंट करें। ६ अलग-अलग बक्सों के लिए कुल ६ धारकों को प्रिंट करना सुनिश्चित करें।

यदि आपने ऊपर स्लिंकी होल्डर की तस्वीर देखी है, तो आश्चर्य बर्बाद हो गया है - वह हमारे साइन-एज़ ड्रैगन का रंग है!

चरण 4: लेकिन वे बक्से इतने सुंदर नहीं हैं …

और मैं सहमत हूं! यही कारण है कि हम उन सभी बक्सों को समाहित करने और उन्हें छुपाने के लिए अधिक आकर्षक बॉक्स को काटने के लिए एक लेज़र कटर का उपयोग करने जा रहे हैं।

उन एडोब इलस्ट्रेटर फाइलों को डाउनलोड करें और लेजर कटर का उपयोग करके उन्हें काट लें। बादलों के डिजाइन को योगदानकर्ताओं में से एक द्वारा हाथ से तैयार किया गया था। बेझिझक उन्हें इलस्ट्रेटर फ़ाइल के अंदर हटाकर और अपनी खुद की डिज़ाइन जोड़कर संशोधित करें जैसा कि आप फिट देखते हैं! सब कुछ एक साथ रखने के लिए सुझाए गए चरण नीचे दिए गए हैं।

  1. पहली फ़ाइल (outerBoxFinal_1) से तीनों टुकड़ों को एक साथ इकट्ठा और गोंद करें।
  2. दूसरी फ़ाइल (outerBoxFinal_2) से अभी तक टुकड़ा न जोड़ें।
  3. टुकड़े को तीसरी फ़ाइल (outerBoxFinal_3) से बॉक्स के निचले भाग में रखें और इसे शीर्ष पर बंद करना चाहिए। केवल बॉक्स के नीचे गोंद करें।
  4. इनरबॉक्स प्लेटफॉर्म को दो बार प्रिंट करें। उन दो टुकड़ों को गोंद करें जिनमें बड़े आयत छेद हों। फिर, शेष तीन टुकड़ों को एक साथ गोंद दें। अंत में, इसे दूसरे चिपके हुए सेट में छेद के साथ गोंद दें।
  5. प्लेटफॉर्म को बड़े बॉक्स के नीचे रखें।
  6. सभी ६ छोटे बक्सों को प्लेटफॉर्म पर उनके संगत स्थानों में डालें।
  7. अब, दूसरी फ़ाइल (outerBoxFinal_2) के टुकड़े को बॉक्स के शीर्ष पर रखें और किनारे के चारों ओर गोंद करें। शीर्ष टुकड़े पर छेद छोटे बक्से पर छेद के साथ संरेखित होना चाहिए। यदि नहीं, तो अपने छोटे बक्सों को पुनर्व्यवस्थित करें। छोटे बक्सों में गोंद बिल्कुल न डालें।
  8. यदि आप एक ब्रेडबोर्ड का उपयोग कर रहे हैं जिसके नीचे एक चिपचिपा टुकड़ा है, तो इसे नीचे के टुकड़े के केंद्र के पास ऐसी जगह पर रखें कि जब आप बॉक्स को बंद करें, तो फोटॉन के साथ ब्रेडबोर्ड गायब हो जाए। नीचे के टुकड़े पर छोटे-छोटे स्लिट हैं जो आपके लिए बाहर से फोटॉन से जुड़ना आसान बनाते हैं।

चरण 5: स्लिंकी खिलौने ?? अरे मेरा

स्लिंकी खिलौने ?? अरे मेरा!
स्लिंकी खिलौने ?? अरे मेरा!
स्लिंकी खिलौने ?? अरे मेरा!
स्लिंकी खिलौने ?? अरे मेरा!

ड्रैगन का शरीर:

1. गर्म गोंद या टेप का उपयोग करके तीन स्लिंकियों को एक साथ मिलाएं।

2. स्लिंकियों की लंबाई और व्यास को मापें और सजावटी कपड़े का एक टुकड़ा काट लें।

3. कपड़े के दोनों सिरों को एक साथ लाएं और उन्हें एक साथ सीवे।

4. एक बार जब आप उन्हें सिलाई कर लें, तो स्लिंकियों को जुर्राब की तरह स्लाइड करें।

5. स्लिंकी के सिरों को सिले हुए कपड़े से सीना।

चरण 6: अपने ड्रैगन को प्रिंट करें

ड्रैगन के 3डी प्रिंटेड हिस्से:

1. भागों को https://www.thingiverse.com/thing:854575 से लिया गया था।

2. हमने केवल सिर, पैर और आंखों का इस्तेमाल किया।

3. 3डी प्रिंटिंग के बाद, इसे सैंडपेपर और एसीटोन का उपयोग करके चिकना करें।

4. जिस तरह से आप इसे सजाना चाहते हैं, उसके हिस्सों को पेंट करें।

चरण 7: NeoPixels के साथ अपने ड्रैगन को आगे बढ़ाने का समय

NeoPixels के साथ अपने ड्रैगन को आगे बढ़ाने का समय!
NeoPixels के साथ अपने ड्रैगन को आगे बढ़ाने का समय!
NeoPixels के साथ अपने ड्रैगन को आगे बढ़ाने का समय!
NeoPixels के साथ अपने ड्रैगन को आगे बढ़ाने का समय!

प्रकाश खंड:

1. यदि आप चाहें तो रोशनी बनाने के लिए आप बस एक नियोपिक्सल स्ट्रैंड का उपयोग कर सकते हैं। (हम तारों से बाहर भाग गए)।

2. हमने 20 नियोपिक्सल रोशनी का इस्तेमाल किया और उन्हें तारों का उपयोग करके जोड़ा। इन तारों को उन पर मिलाया गया और लाल तारों का उपयोग करके फोटॉन से जोड़ा गया ताकि यह ड्रैगन की थीम से मेल खाए।

3. आप कपड़े के एक लंबे टुकड़े पर अपनी नियोपिक्सल रोशनी भी सिल सकते हैं, लेकिन हमने उनका उपयोग नहीं किया क्योंकि हमारे पास धातु से बना एक स्लिंकी था।

भागों का संयोजन: धागे या तारों का उपयोग करके ड्रैगन के शरीर के अंदर प्रकाश खंड को सुरक्षित करें। सुनिश्चित करें कि आप बेस बॉक्स के अंदर रोशनी को फोटॉन से कनेक्ट करने में सक्षम हैं। गोंद का उपयोग करके सिर, पैर और पूंछ को शरीर से जोड़ दें। एक बार जब वे जगह पर हों, तो शरीर को पहले मुद्रित किए गए स्लिंकी धारकों में सुरक्षित करें। अब शरीर प्रोग्राम करने के लिए तैयार है।

चरण 8: प्रोग्रामिंग समय

चूंकि हम छह अलग-अलग सर्वो मोटर्स के साथ काम करने के लिए दो कण फोटॉन का उपयोग करेंगे (एक फोटॉन केवल चार के साथ काम कर सकता है), हम माइक्रोकंट्रोलर पर फ्लैश करने के लिए दो अलग लेकिन समान कोड लिखेंगे।

अब, पहले माइक्रोकंट्रोलर के लिए…

एक Arduino फ़ाइल (.ino) में, निम्नलिखित पुस्तकालयों को शामिल करें और परिभाषित करें:

#शामिल "neopixel.h"

#शामिल "ArduinoJson.h"

#PIXEL_PIN D4 परिभाषित करें

#परिभाषित करें PIXEL_COUNT 18

अगला, निम्नलिखित चर घोषित करें:

Adafruit_NeoPixel स्ट्रिप = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN);

सर्वो सर्वो लेफ्टराइट_1; सर्वो सर्वोअपडाउन_1; सर्वो सर्वो लेफ्टराइट_2; सर्वो सर्वोअपडाउन_2; इंट पोजीशन लेफ्ट राइट_1 = 0; इंट पोजीशनअपडाउन_1 = 0; इंट लेफ्टराइट_1 = 1; इंट अपडाउन_1 = 1; इंट पोजीशन लेफ्ट राइट_2 = १००; // 0 और 180 के बीच होना चाहिए (डिग्री में) int positionUpDown_2 = 180; // 0 और 180 के बीच होना चाहिए (डिग्री में) int leftRight_2 = 1; //0=बाएं, 1=दायां इंट अपडाउन_2 = 1; //0=अप, 1=डाउन कॉन्स्ट साइज_टी बफरसाइज करंट = JSON_ARRAY_SIZE(1) + JSON_OBJECT_SIZE(1) + 2*JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(4) + JSON_OBJECT_SIZE(5) + JSON_OBJECT_SIZE(6) + JSON_OBJECT ३९०; const size_t बफ़र आकार पूर्वानुमान = 38*JSON_ARRAY_SIZE(1) + JSON_ARRAY_SIZE(38) + 2*JSON_OBJECT_SIZE(0) + 112*JSON_OBJECT_SIZE(1) + 39*JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZEOB(3) + 38 (५) + ७६*JSON_OBJECT_SIZE(8) + १२४९०; स्ट्रिंग वेदरअरे [3]; फ्लोट तापमानअरे [3]; फ्लोट आर्द्रताअरे [3]; फ्लोट विंडस्पीडअरे [3]; स्ट्रिंग टाइमस्टैम्पअरे [3]; इंट अपडाउनमैक्सडिग्री [3]; इंट लेफ्ट राइटस्पीड [3]; स्ट्रिंग allData5DaysForecast;

वेबहुक कैसे सेट करें, यह जानने के लिए यहां क्लिक करें। जब आप कर लें, तो निम्नलिखित घोषणाओं और कार्यों को जोड़ें और यदि आवश्यक हो तो उचित परिवर्तन करें:

शून्य getWeather5DayForecast () { Particle.publish ("get_weather5DayForecast"); AllData5DaysForecast = ""; } टाइमर टाइमरWeatherForecast(६००००, getWeather5DayForecast); शून्य getCurrentWeather () { Particle.publish ("get_currentWeather"); } टाइमर टाइमरWeatherCurrent(६००००, getCurrentWeather);

निम्नलिखित कार्य ड्रैगन के ऊपर/नीचे और बाएं/दाएं आंदोलनों को नियंत्रित करते हैं:

शून्य परिवर्तनLeftRight1 () { अगर (बाएं दाएं_1) { स्थिति लेफ्ट राइट_1 = स्थिति लेफ्ट राइट_1 + बाएं राइट स्पीड [0]; अगर (पोजिशन लेफ्टराइट_1> 100) { लेफ्ट राइट_1 = 0; } } और { पोजिशन लेफ्ट राइट_1 = पोजिशन लेफ्ट राइट_1 - लेफ्ट राइटस्पीड [0]; अगर (पोजिशन लेफ्ट राइट_1 < 0) { लेफ्ट राइट_1 = 1; } } सर्वो लेफ्टराइट_1.लिखें (स्थिति लेफ्टराइट_1); }

शून्य परिवर्तन लेफ्ट राइट 2 () {

अगर (बाएं दाएं_2) { स्थिति बाएं दाएं_2 = स्थिति बाएं दाएं_2 + बाएं दाएं गति [1]; अगर (पोजिशन लेफ्टराइट_2> 100) { लेफ्ट राइट_2 = 0; } } और { positionLeftRight_2 = positionLeftRight_2 - leftRightSpeed[1]; अगर (पोजिशन लेफ्ट राइट_2 < 0) { लेफ्ट राइट_2 = 1; } } सर्वो लेफ्टराइट_2.लिखें (स्थिति लेफ्टराइट_2); }

शून्य परिवर्तन अपडाउन 1 () {

अगर (अपडाउन_1) {पोजिशनअपडाउन_1++; अगर (पोजिशनअपडाउन_1> अपडाउनमैक्सडिग्री[0]) {अपडाउन_1 = 0; } } और { पोजिशनअपडाउन_1--; अगर (पोजिशनअपडाउन_1 <1) {अपडाउन_1 = 1; } } सर्वोअपडाउन_1.लिखें (पोजिशनअपडाउन_1); }

शून्य परिवर्तन अपडाउन 2 () {

अगर (अपडाउन_2) {पोजिशनअपडाउन_2++; अगर (पोजिशनअपडाउन_2> अपडाउनमैक्सडिग्री[1]) {अपडाउन_2 = 0; } } और { पोजिशनअपडाउन_2--; अगर (पोजिशनअपडाउन_2 <1) {अपडाउन_2 = 1; } } सर्वोअपडाउन_2.लिखें (स्थितिअपडाउन_2); }

एक अंतराल में आंदोलनों को बदलने में सक्षम होने के लिए, टाइमर बनाए जाते हैं।

टाइमर टाइमर लेफ्ट राइट 1 (100, चेंज लेफ्ट राइट 1);

टाइमर टाइमर लेफ्ट राइट 2 (100, चेंज लेफ्ट राइट 2); टाइमर टाइमरअपडाउन1(10, चेंजअपडाउन1); टाइमर टाइमरअपडाउन 2 (10, चेंजअपडाउन 2);

सेटअप फ़ंक्शन अंत में अगला जोड़ा गया है। वेबहुक से संबंधित कोड की पंक्तियों में उचित परिवर्तन करना सुनिश्चित करें।

शून्य सेटअप () {// मौसम टाइमर शुरू करें टाइमरWeatherForecast.start (); timerWeatherCurrent.start (); // नियोपिक्सल स्ट्रिप.बेगिन (); // पिनमोड की तरह इनिशियलाइज़ेशन डालें और यहाँ फंक्शन शुरू करें। // माइक्रो सर्वो सर्वो सर्वो को सेटअप करें। संलग्न करें (डी १); सर्वोअपडाउन_1.संलग्न करें(D0); सर्वो लेफ्टराइट_2.अटैच (डी३); सर्वोअपडाउन_2.अटैच(डी2); सर्वो लेफ्टराइट_1.लिखें (स्थिति लेफ्टराइट_1); // सर्वो स्थिति को प्रारंभ करें सर्वोअपडाउन_1.लिखें (स्थिति अपडाउन_1); // सर्वो स्थिति शुरू करें // सर्वो स्थिति को प्रारंभ करें सर्वोअपडाउन_2.लिखें (स्थिति अपडाउन_2); // सर्वो स्थिति टाइमर शुरू करेंLeftRight1.start (); timerLeftRight2.start (); टाइमरअपडाउन1.स्टार्ट (); टाइमरअपडाउन2.स्टार्ट (); // एक कंसोल खोलें Serial.begin(9600); देरी (2000); Serial.println ("हैलो!"); // get_weather5DayForecast और get_currentWeather webhooks Particle.subscribe की सदस्यता लें। पार्टिकल.सब्सक्राइब ("हुक-प्रतिक्रिया/get_currentWeather/0", getCurrentWeatherData, MY_DEVICES); getCurrentWeather (); getWeather5DayForecast (); }

इस प्रोजेक्ट के लिए लूप फ़ंक्शन का उपयोग नहीं किया जाता है। हम वेबहुक से प्राप्त डेटा को संभालने के कार्यों को नहीं भूल सकते हैं!

शून्य मिलाWeather5DayForecast(const char *event, const char *data){ allData5DaysForecast += data; // सभी डेटा को एक स्ट्रिंग में सहेजता है। int allData5DaysForecastLen = allData5DaysForecast.length (); चार बफर [allData5DaysForecastLen + 1]; allData5DaysForecast.toCharArray(buffer, allData5DaysForecastLen + 1); // स्ट्रिंग के लिए एक बफर बनाएं int bufferLength = sizeof(buffer); डायनामिकजसनबफर जेसनबफरवेदर (बफर लम्बाई); JsonObject और रूट = jsonBufferWeather.parseObject (बफर); // परीक्षण करें कि क्या पार्सिंग सफल है। if (!root.success()) {//Serial.println("मौसम 5 दिनों के पूर्वानुमान के लिए पार्सिंग…त्रुटि!"); वापसी; } इंट आई = 1; JsonArray और सूची = रूट ["सूची"]; के लिए (JsonObject और currentObject: सूची) {अगर (i <3) {JsonObject और मुख्य = currentObject ["मुख्य"]; फ्लोट तापमान = मुख्य ["अस्थायी"]; int आर्द्रता = मुख्य ["आर्द्रता"]; जेसनऑब्जेक्ट और मौसम = करंटऑब्जेक्ट ["मौसम"] [0]; कास्ट चार * वेदरइन्फो = मौसम ["मुख्य"]; फ्लोट विंडस्पीड = करंटऑब्जेक्ट ["विंड"] ["स्पीड"]; कास्ट चार * टाइमस्टैम्प = करंटऑब्जेक्ट ["dt_txt"]; int tempFah = ConvertToFahrenheit (तापमान); int सर्वोमैक्सडिग्री = अपडेटअपडाउन (tempFah); अपडाउनमैक्सडिग्री = सर्वोमैक्सडिग्री; इंट सर्वोइन्क्रिमेंट = अपडेटलेफ्ट राइट (विंडस्पीड); लेफ्ट राइटस्पीड = सर्वो इंक्रीमेंट; सेटकलर (वेदरइन्फो, आई); तापमानअरे = tempFah; आर्द्रताअरे = आर्द्रता; वेदरअरे = वेदरइन्फो; विंडस्पीडअरे = विंडस्पीड; टाइमस्टैम्पअरे = टाइमस्टैम्प; मैं++; } और {ब्रेक; } } }

शून्य मिल गयाCurrentWeatherData (कॉन्स्ट चार * घटना, कॉन्स्ट चार * डेटा) {डायनामिकजसनबफर जेसनबफरवेदर (बफरसाइज करंट); JsonObject और रूट = jsonBufferWeather.parseObject (डेटा); // परीक्षण करें कि क्या पार्सिंग सफल है। if (!root.success()) {//Serial.println("वर्तमान मौसम के लिए पार्सिंग…त्रुटि!"); वापसी; } जेसनऑब्जेक्ट और मौसम = रूट ["मौसम"] [0]; कास्ट चार * वेदर_मेन = मौसम ["मुख्य"]; जेसनऑब्जेक्ट और मुख्य = रूट ["मुख्य"]; फ्लोट main_temp = मुख्य ["अस्थायी"]; int main_humidity = main ["आर्द्रता"]; फ्लोट विंड_स्पीड = रूट ["हवा"] ["स्पीड"]; कास्ट चार * टाइमस्टैम्प = रूट ["dt_txt"]; int tempFah = ConvertToFahrenheit (main_temp); int सर्वोमैक्सडिग्री = अपडेटअपडाउन (tempFah); अपडाउनमैक्सडिग्री [0] = सर्वोमैक्सडिग्री; इंट सर्वोइन्क्रिमेंट = अपडेटलेफ्ट राइट (विंड_स्पीड); लेफ्ट राइटस्पीड [0] = सर्वो इंक्रीमेंट; सेटकलर (मौसम_मेन, 0); वेदरअरे [0] = वेदर_मेन; तापमानअरे [0] = tempFah; आर्द्रताअरे [0] = main_humidity; विंडस्पीडअरे [0] = विंड_स्पीड; टाइमस्टैम्पअरे [0] = टाइमस्टैम्प; }

नीचे, आप अतिरिक्त कार्य पा सकते हैं जो सर्वो मोटर्स की स्थिति को अद्यतन करने, केल्विन से फ़ारेनहाइट में तापमान के रूपांतरण और एल ई डी के रंग सेट करने को नियंत्रित करते हैं।

इंट अपडेटअपडाउन (फ्लोट टेम्प) {// डिग्री को [0, 180] फ्लोट सर्वोमैक्सडिग्री = टेम्प * 45/31 + (990/31) की सीमा तक मैप करें; सीरियल.प्रिंट ("नई सर्वो डिग्री:"); Serial.println (सर्वोमैक्सडिग्री); सर्वोमैक्सडिग्री लौटाएं; }

इंट अपडेट लेफ्ट राइट (फ्लोट विंडस्पीड) {

// हवा की गति को [१, १००] फ्लोट सर्वोइन्क्रिमेंट = विंडस्पीड * ९९/२६ + १; Serial.print ("नया सर्वो वेतन वृद्धि मूल्य:"); Serial.println(servoIncrement); सर्वो वेतन वृद्धि; }

इंट कन्वर्ट टू फ़ारेनहाइट (फ्लोट टेम्पकेल) {

int tempFah = tempKel * 9.0 / 5.0 - 459.67; वापसी अस्थायी; }

शून्य सेटकलर (स्ट्रिंग वेदरडेस्क, इंट इंडेक्स) {

इंट लेडइंडेक्स = 0; अगर (सूचकांक == 0) {ledIndex = 0; } और अगर (सूचकांक == 1) {ledIndex = 6; } और अगर (सूचकांक == 2) {ledIndex = 12; } और {वापसी; } if(weatherDesc == "Clear") {//पीले के लिए (int j = ledIndex; j <ledIndex+6; j++){ strip.setPixelColor(j, strip. Color(253, 219, 62));// पीली पट्टी।शो (); देरी(20); } } और अगर (वेदरडेस्क == "क्लाउड्स") {//ग्रे फॉर (इंट जे = लेडइंडेक्स; जे <लीडइंडेक्स + 6; जे ++) {स्ट्रिप.सेट पिक्सेलकोलर (जे, स्ट्रिप। कलर (223, 229, 237)); // ग्रे स्ट्रिप। शो (); देरी(20); } } और अगर (weatherDesc == "स्नो") {// सफेद के लिए (int j = ledIndex; j <ledIndex+6; j++){ strip.setPixelColor(j, strip. Color(255, 225, 225)); // सफेद पट्टी। शो (); देरी(20); } } और अगर (weatherDesc == "रेन") {// के लिए नीला (int j = ledIndex; j <ledIndex+6; j++){ strip.setPixelColor(j, strip. Color(119, 191, 246)); // नीली पट्टी। शो (); देरी(20); }} और {// लाल के लिए (int j = ledIndex; j <ledIndex+6; j++){ strip.setPixelColor(j, strip. Color(254, 11, 5));//red strip.show(); देरी(20); } } }

एक बार जब आप अपनी Arduino फ़ाइल में सब कुछ जोड़ लेते हैं, तो उसे संकलित करें। यदि कोई त्रुटि नहीं है, तो आगे बढ़ें और कोड को पहले फोटॉन पर फ्लैश करें। अगला चरण आपको दूसरे फोटॉन पर फ्लैश करने के लिए समान कोड प्रदान करेगा।

चरण 9: प्रोग्रामिंग जारी है

चूंकि दूसरे फोटॉन के लिए कोड लगभग पहले वाले के समान है, इसलिए पूरा कोड कॉपी और पेस्ट किया गया है:

#शामिल "ArduinoJson.h"

सर्वो सर्वो लेफ्टराइट_3;

सर्वो सर्वोअपडाउन_3;

इंट पोजीशन लेफ्ट राइट_3 = 45;

इंट पोजीशनअपडाउन_3 = 0; इंट लेफ्टराइट_3 = 1; इंट अपडाउन_3 = 1;

const size_t बफ़रSizeCurrent = JSON_ARRAY_SIZE(1) + JSON_OBJECT_SIZE(1) + 2*JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(4) + JSON_OBJECT_SIZE(5) + 90 JSON_OBJECT_SIZE(6) + JSON_OBJECT_SIZE(12);

const size_t बफ़र आकार पूर्वानुमान = 38*JSON_ARRAY_SIZE(1) + JSON_ARRAY_SIZE(38) + 2*JSON_OBJECT_SIZE(0) + 112*JSON_OBJECT_SIZE(1) + 39*JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZEOB(3) + 38 (५) + ७६*JSON_OBJECT_SIZE(8) + १२४९०;

स्ट्रिंग वेदरअरे [3];

फ्लोट तापमानअरे [3]; फ्लोट आर्द्रताअरे [3]; फ्लोट विंडस्पीडअरे [3]; स्ट्रिंग टाइमस्टैम्पअरे [3]; इंट अपडाउनमैक्सडिग्री [3]; इंट लेफ्ट राइटस्पीड [3];

स्ट्रिंग allData5DaysForecast;

शून्य getWeather5DayForecast ()

{ पार्टिकल.प्रकाशित ("get_weather5DayForecast2"); AllData5DaysForecast = ""; }

टाइमर टाइमरWeatherForecast(६००००, getWeather5DayForecast); ///10, 800, 000 एमएस = 3 दिन

शून्य getCurrentWeather ()

{ पार्टिकल.प्रकाशित ("get_currentWeather2"); }

टाइमर टाइमरWeatherCurrent(६००००, getCurrentWeather);

शून्य परिवर्तनLeftRight3 () {

अगर (बाएं दाएं_3) { स्थिति बाएं दाएं_3 = स्थिति बाएं दाएं_3 + बाएं दाएं गति [2]; अगर (पोजिशन लेफ्ट राइट_3> 100) { लेफ्ट राइट_3 = 0; } } और { positionLeftRight_3 = positionLeftRight_3 - leftRightSpeed[2]; अगर (पोजिशन लेफ्ट राइट_3 < 0) { लेफ्ट राइट_3 = 1; } } सर्वो लेफ्टराइट_3.लिखें (पोजिशन लेफ्टराइट_3); }

शून्य परिवर्तनअपडाउन3 () {

अगर (अपडाउन_3) {पोजिशनअपडाउन_3++; अगर (पोजिशनअपडाउन_3> अपडाउनमैक्सडिग्री[2]) {अपडाउन_3 = 0; } } और { पोजिशनअपडाउन_3--; अगर (पोजिशनअपडाउन_३ <१) {अपडाउन_३ = १; } } सर्वोअपडाउन_3.लिखें (पोजिशनअपडाउन_3); }

टाइमर टाइमर लेफ्ट राइट 3 (100, चेंज लेफ्ट राइट 3);

टाइमर टाइमरअपडाउन3(10, चेंजअपडाउन3);

व्यर्थ व्यवस्था() {

// मौसम टाइमर शुरू करें टाइमरWeatherForecast.start (); timerWeatherCurrent.start (); // पिनमोड की तरह इनिशियलाइज़ेशन डालें और यहाँ फंक्शन शुरू करें। // माइक्रो सर्वो सर्वो लेफ्टराइट_3.अटैच (डी 1) सेटअप करें; सर्वोअपडाउन_3.अटैच(D0);

सर्वो लेफ्टराइट_3.लिखें (स्थिति लेफ्टराइट_3); // सर्वो स्थिति शुरू करें

सर्वोअपडाउन_३.लिखें (पोजिशनअपडाउन_३); // सर्वो स्थिति शुरू करें

टाइमर लेफ्टराइट3.स्टार्ट ();

टाइमरअपडाउन3.स्टार्ट (); // एक कंसोल खोलें Serial.begin(9600); देरी (2000); Serial.println ("हैलो!"); // get_weather5DayForecast और get_currentWeather webhooks Particle.subscribe की सदस्यता लें। पार्टिकल.सब्सक्राइब ("हुक-प्रतिक्रिया/get_currentWeather2/0", गोट करंटवेदरडेटा, MY_DEVICES); getCurrentWeather (); getWeather5DayForecast (); }

शून्य getWeather5DayForecast(const char *event, const char*data)

{ AllData5DaysForecast += डेटा; // सभी डेटा को एक स्ट्रिंग में सहेजता है। int allData5DaysForecastLen = allData5DaysForecast.length (); चार बफर [allData5DaysForecastLen + 1]; allData5DaysForecast.toCharArray(buffer, allData5DaysForecastLen + 1); // स्ट्रिंग के लिए एक बफर बनाएं int bufferLength = sizeof(buffer); डायनामिकजसनबफर जेसनबफरवेदर (बफर लम्बाई); JsonObject और रूट = jsonBufferWeather.parseObject (बफर); // Serial.println (allData5DaysForecast); // परीक्षण करें कि क्या पार्सिंग सफल है। if (!root.success()) {//Serial.println("मौसम 5 दिनों के पूर्वानुमान के लिए पार्सिंग…त्रुटि!"); वापसी; } इंट आई = 1; JsonArray और सूची = रूट ["सूची"]; के लिए (JsonObject और currentObject: सूची) {अगर (i <3) {JsonObject और मुख्य = currentObject ["मुख्य"]; फ्लोट तापमान = मुख्य ["अस्थायी"]; int आर्द्रता = मुख्य ["आर्द्रता"]; जेसनऑब्जेक्ट और मौसम = करंटऑब्जेक्ट ["मौसम"] [0]; कास्ट चार * वेदरइन्फो = मौसम ["मुख्य"]; फ्लोट विंडस्पीड = करंटऑब्जेक्ट ["विंड"] ["स्पीड"]; कास्ट चार * टाइमस्टैम्प = करंटऑब्जेक्ट ["dt_txt"]; int tempFah = ConvertToFahrenheit (तापमान); int सर्वोमैक्सडिग्री = अपडेटअपडाउन (tempFah); अपडाउनमैक्सडिग्री = सर्वोमैक्सडिग्री; इंट सर्वोइन्क्रिमेंट = अपडेटलेफ्ट राइट (विंडस्पीड); लेफ्ट राइटस्पीड = सर्वो इंक्रीमेंट; तापमानअरे = tempFah; आर्द्रताअरे = आर्द्रता; वेदरअरे = वेदरइन्फो; विंडस्पीडअरे = विंडस्पीड; टाइमस्टैम्पअरे = टाइमस्टैम्प; मैं++; } और {ब्रेक; } } }

शून्य मिल गयाCurrentWeatherData(const char *event, const char*data)

{डायनामिकजसनबफर जोंसबफरवेदर (बफरसाइज करंट); JsonObject और रूट = jsonBufferWeather.parseObject (डेटा); // सीरियल.प्रिंट्लन (डेटा); // परीक्षण करें कि क्या पार्सिंग सफल है। if (!root.success()) {//Serial.println("वर्तमान मौसम के लिए पार्सिंग…त्रुटि!"); वापसी; } जेसनऑब्जेक्ट और मौसम = रूट ["मौसम"] [0]; कास्ट चार * वेदर_मेन = मौसम ["मुख्य"]; जेसनऑब्जेक्ट और मुख्य = रूट ["मुख्य"]; फ्लोट main_temp = मुख्य ["अस्थायी"]; int main_humidity = main ["आर्द्रता"]; फ्लोट विंड_स्पीड = रूट ["हवा"] ["स्पीड"]; कास्ट चार * टाइमस्टैम्प = रूट ["dt_txt"]; int tempFah = ConvertToFahrenheit (main_temp); int सर्वोमैक्सडिग्री = अपडेटअपडाउन (tempFah); अपडाउनमैक्सडिग्री [0] = सर्वोमैक्सडिग्री; इंट सर्वोइन्क्रिमेंट = अपडेटलेफ्ट राइट (विंड_स्पीड); लेफ्ट राइटस्पीड [0] = सर्वो इंक्रीमेंट; वेदरअरे [0] = वेदर_मेन; तापमानअरे [0] = tempFah; आर्द्रताअरे [0] = main_humidity; विंडस्पीडअरे [0] = विंड_स्पीड; टाइमस्टैम्पअरे [0] = टाइमस्टैम्प; }

इंट अपडेटअपडाउन (फ्लोट टेम्प) {

// डिग्री को [0, 180] फ्लोट सर्वोमैक्सडिग्री = अस्थायी * 45/31 + (990/31) की सीमा तक मैप करें; सीरियल.प्रिंट ("नई सर्वो डिग्री:"); Serial.println (सर्वोमैक्सडिग्री); सर्वोमैक्सडिग्री लौटाएं; }

इंट अपडेट लेफ्ट राइट (फ्लोट विंडस्पीड) {

// हवा की गति को [१, १००] फ्लोट सर्वोइन्क्रिमेंट = विंडस्पीड * ९९/२६ + १; Serial.print ("नया सर्वो वेतन वृद्धि मूल्य:"); Serial.println(servoIncrement); सर्वो वेतन वृद्धि; }

इंट कन्वर्ट टू फ़ारेनहाइट (फ्लोट टेम्पकेल) {

int tempFah = tempKel * 9.0 / 5.0 - 459.67; वापसी अस्थायी; }

तुमने यह किया! आपने इसे प्रोजेक्ट के प्रोग्रामिंग सेक्शन के माध्यम से बनाया है! अब, सर्वो मोटर्स और नियोपिक्सल से ब्रेडबोर्ड और माइक्रोकंट्रोलर तक सभी वायरिंग और कनेक्शन बनाना सुनिश्चित करें। नोट: शरीर के बाएं और दाएं आंदोलनों के लिए बक्से पर लंबवत स्लिट्स के माध्यम से अतिरिक्त डॉवेल/चॉपस्टिक डालें। दूसरा सिरा ड्रैगन के शरीर से जुड़ा होना चाहिए।

चरण 10: अपने ड्रैगन का आनंद लें

बधाई हो! आपने शुरुआत से एक साइन-एज़ ड्रैगन बनाया है! अब आपको बस इतना करना है कि वापस बैठना है और अपने परिवेश के प्रदर्शन का आनंद लेना है!

नोट: यह परियोजना जोआन बेम्पोंग और सौंदर्या मुथुवेल द्वारा एक शोध के एक भाग के रूप में बनाई गई थी। पाठ्यक्रम पृष्ठ यहां पाया जा सकता है।

सिफारिश की: