সুচিপত্র:

হিউ ম্যাজিক: 4 টি ধাপ (ছবি সহ)
হিউ ম্যাজিক: 4 টি ধাপ (ছবি সহ)

ভিডিও: হিউ ম্যাজিক: 4 টি ধাপ (ছবি সহ)

ভিডিও: হিউ ম্যাজিক: 4 টি ধাপ (ছবি সহ)
ভিডিও: 🎢全职法师第6季EP1-12!莫凡为挑战全火院前往收服炎姬!探索炎姬之谜成功与炎姬达成契约!【全职法师 AlmightyMage】 2024, জুন
Anonim
Image
Image

স্বাগতম উইজার্ডস!

কয়েক মাস আগে আমি আমার 3 বছরের ছেলের জন্য ছড়ি দিয়ে একটি ছোট ম্যাজিক বক্স তৈরি করেছি। যখন তিনি ছাদ দিয়ে বাক্সটি স্পর্শ করবেন, তখন একটি পরিবর্তনশীল রঙিন আলো বাক্স থেকে নির্গত হতে শুরু করবে। যখন তিনি বিশেষভাবে পছন্দ করেন এমন একটি রঙ দেখেন, তিনি ছাদটি টেবিল ল্যাম্পের দিকে নির্দেশ করতে পারেন (ভিতরে ফিলিপস হিউ বাল্ব সহ), একটি বানান নিক্ষেপ করুন এবং বাক্স থেকে রঙটি জাদুকরীভাবে বাতিতে ঝাঁপিয়ে পড়বে! বাক্স থেকে প্রদীপ এবং আলো হঠাৎ একই রঙের হয় …

কয়েক সেকেন্ড পরে, রঙটি বিবর্ণ হয়ে যায় এবং বানানের আগে টেবিল ল্যাম্প তার অবস্থায় ফিরে আসে। নতুন বানান না হওয়া পর্যন্ত …

ধাপ 1: এই প্রকল্পটি তৈরি করতে আপনার যা প্রয়োজন

এই প্রকল্পটি তৈরি করতে আপনার যা দরকার
এই প্রকল্পটি তৈরি করতে আপনার যা দরকার
এই প্রকল্পটি তৈরি করতে আপনার যা দরকার
এই প্রকল্পটি তৈরি করতে আপনার যা দরকার
এই প্রকল্পটি তৈরি করতে আপনার যা দরকার
এই প্রকল্পটি তৈরি করতে আপনার যা দরকার

এই প্রকল্পটি তৈরি করতে, আপনার নিম্নলিখিত উপকরণগুলির প্রয়োজন হবে:

    • ফিলিপস হিউ রঙের বাল্ব এবং একটি হিউ ব্রিজ
    • 1 Wemos D1 মিনি বা অনুরূপ esp8266- ভিত্তিক মাইক্রোকন্ট্রোলার
    • 1 (Arduino) টাচ সেন্সর (যেমন TTP223R)
    • 1 (Arduino) ক্ষণস্থায়ী বোতাম
    • 1 10uF ক্যাপাসিটর
    • 1 আরজিবি নেতৃত্বাধীন (সাধারণ অ্যানোড টাইপ)
    • 5 প্রতিরোধক (10, 22 এবং 47 ওহম, 2x 10K ওহম)
    • 2 টি ছোট প্রোটোটাইপিং পিসিবি (2x3 ইঞ্চি বা প্রায় 5x7 সেমি যথেষ্ট বড় হওয়া উচিত)
    • কিছু (জাম্পার) তার
    • একটি সোল্ডারিং লোহা
    • একটি জাদুর কাঠি (একটি খেলনার দোকানে রেডিমেড হিসেবে কেনা যায়, অথবা আপনি নিজেই এটি তৈরি করতে পারেন)
    • পিচবোর্ড বা কাঠের তৈরি একটি ছোট বাক্স (একটি বিদ্যমান বাক্স হতে পারে, তবে আপনি অবশ্যই শুরু থেকে একটি বাক্স তৈরি করতে পারেন)
    • কিছু টেপ
    • বাক্সে PCB গুলি মাউন্ট করার জন্য কিছু আঠালো এবং/অথবা বাদাম এবং বোল্ট।
    • alচ্ছিক: বাক্সের জন্য কাগজ মোড়ানো

NB: এই নির্দেশনা দিয়ে যাওয়ার সময় সার্কিট ডায়াগ্রাম পড়ার ক্ষেত্রে সামান্য অভিজ্ঞতা সহায়ক। আমার ডায়াগ্রাম অত্যধিক জটিল নয়: যদি আপনি একটি ক্যাপাসিটরকে একটি প্রতিরোধক থেকে আলাদা করতে পারেন, তাহলে আপনি সম্ভবত ভাল থাকবেন।

Arduino IDE ব্যবহার করে Arduino প্রোগ্রামিং এর কিছু অভিজ্ঞতাও সহায়ক। বরং মৌলিক অভিজ্ঞতা যথেষ্ট হওয়া উচিত, কারণ আমি আপনাকে কপি/পেস্ট করার জন্য সম্পূর্ণ কোড প্রদান করব। আপনার নির্দিষ্ট সেট-আপ (যেমন আপনার নেটওয়ার্ক সেটিংস এবং আপনার হিউ কনফিগারেশনের কিছু বিবরণ) এ কাজ করার জন্য আপনাকে কিছু জিনিস মানিয়ে নিতে হবে। যদি এটি একটু ভয়ঙ্কর মনে হয়, চিন্তা করবেন না, আমি আপনাকে প্রয়োজনীয় সমস্ত তথ্য পুনরুদ্ধার করতে সাহায্য করব।

ধাপ 2: বক্স এবং ভান্ড

বাক্স এবং ছড়ি
বাক্স এবং ছড়ি
বাক্স এবং ছড়ি
বাক্স এবং ছড়ি

প্রথম পদক্ষেপগুলি সাধারণত সবচেয়ে কঠিন, কিন্তু এই নির্দেশযোগ্য নয়! একটি সহজ শুরুর জন্য, আপনি কেবল একটি খেলনার দোকান থেকে একটি জাদুর কাঠি কিনতে পারেন এবং বাক্সের জন্য আপনি কেবল একটি বিদ্যমান ছোট বাক্সটি পুনরায় ব্যবহার করতে পারেন যা আপনি ইতিমধ্যে পড়ে আছেন। শুধু নিশ্চিত করুন যে বাক্সটি ধাতু দিয়ে তৈরি নয়, কারণ এটি ওয়াইফাই সিগন্যালগুলিকে ব্লক করবে এবং আমাদের যাদুর জন্য প্রয়োজন;-)।

যখন আপনি একটি বিদ্যমান বাক্সকে পুনরায় উদ্দেশ্য করেন, তখন আপনাকে কেবলমাত্র বাক্সের উপরে দুটি গর্ত করতে হবে: RGB নেতৃত্বাধীন 1 টি ছোট গর্ত (আকার 5 মিমি = 0.2 ") এবং একটি বড় গর্ত (প্রায় 12- 14 মিমি বা প্রায় 0.5 ") টাচ সেন্সরের জন্য।

গর্তগুলির সঠিক স্থান সমালোচনামূলক নয়, কেবল আপনার নান্দনিকতার অনুভূতি অনুসারে সেগুলি রাখুন তবে কয়েকটি জিনিস মনে রাখবেন:

  • উভয় গর্তের মধ্যে কিছু দূরত্ব রাখুন যাতে নিশ্চিত করা যায় যে উপাদানগুলি গর্তের নীচে মাউন্ট করা হবে (আরজিবি নেতৃত্বাধীন এবং টাচ সেন্সর) উভয়ই মাউন্ট এবং ওয়্যারিংয়ের জন্য পর্যাপ্ত জায়গা দখল করতে পারে।
  • সবচেয়ে বড় ছিদ্র টাচ সেন্সরের জন্য। এই সেন্সরটি গর্তের ঠিক নীচে মাউন্ট করা হবে, এমনভাবে যে এটি ছিদ্র দ্বারা স্পর্শ করা যেতে পারে (এবং এমনকি সামান্য চাপাও)। তাই নিশ্চিত করুন যে আপনি যে দড়ি কিনেছেন তা যেন খুব মোটা না হয়!

Boxচ্ছিকভাবে আপনি (স্প্রে) পেইন্ট বা মোড়ানো কাগজ এবং প্লাস্টিকের আবরণ ব্যবহার করতে পারেন যাতে আপনার বাক্সটি একটু সুন্দর হয় এবং এটি খাবার ছিটানো এবং নোংরা হাত থেকে রক্ষা পায়।

যদি এই প্রথম ধাপটি আপনার পছন্দের জন্য একটু বেশি অস্পষ্ট হয়, দয়া করে এগিয়ে যান এবং একটি বাক্স তৈরি করুন এবং পুরোপুরি শুরু থেকে ভাঁজ করুন! সেখানে অনেকগুলি ইন্সট্রাক্টেবল রয়েছে যা আপনাকে একটি সুন্দর কাঠি তৈরি করতে সহায়তা করবে

আপনি যে পথই বেছে নিন না কেন, এখন সময় এসেছে বাক্সের ভেতরটা ঘুরে দেখার।

ধাপ 3: ভিতরে হার্ডওয়্যার

হার্ডওয়্যার ভিতরে
হার্ডওয়্যার ভিতরে
হার্ডওয়্যার ভিতরে
হার্ডওয়্যার ভিতরে
হার্ডওয়্যার ভিতরে
হার্ডওয়্যার ভিতরে

উপরের সার্কিট ডায়াগ্রাম অনুযায়ী ইলেকট্রনিক উপাদানগুলিকে সংযুক্ত করতে একটি সোল্ডারিং লোহা ব্যবহার করুন। বিশেষ মনোযোগ দেওয়ার জন্য কয়েকটি জিনিস রয়েছে:

  • ওয়েমোস ডি 1 মিনি এবং আরজিবি নেতৃত্বের মধ্যে তারগুলি যথেষ্ট দীর্ঘ হওয়া উচিত যাতে আপনি বাক্সের idাকনায় তৈরি গর্তে আরজিবি নেতৃত্ব স্থাপন করতে পারেন।
  • ক্ষণস্থায়ী সুইচ এবং স্পর্শ সেন্সরের সাথে সংযুক্ত তারের জন্য একই গণনা করা হয় কারণ এটি holeাকনার অন্যান্য গর্তের মাধ্যমে অ্যাক্সেসযোগ্য হওয়া উচিত।
  • ক্ষণস্থায়ী সুইচের বোতাম টাচ সেন্সরের নিচের দিকে (অ -সংবেদনশীল দিক) আঠালো করা উচিত, এমনভাবে যাতে আপনি উপরের দিকে আঠালো স্পর্শ সেন্সরের সাহায্যে ক্ষণস্থায়ী সুইচটিতে বোতামটি রাখতে পারেন (ছবি দেখুন)। টাচ সেন্সরটি আঙ্গুলের দ্বারা করা বোতাম প্রেসগুলি সনাক্ত করার জন্য ক্ষণস্থায়ী সুইচের উপরে মাউন্ট করা হয়, সেক্ষেত্রে বোতাম প্রেসটি উপেক্ষা করা হবে। শুধুমাত্র যখন জাদুর কাঠি দ্বারা বোতাম টিপানো হয় (যা অ-পরিবাহী হওয়া উচিত, তাই প্লাস্টিক এবং কাঠ ঠিক আছে), জাদু চক্র শুরু হবে।
  • স্পর্শ সেন্সর সহ ক্ষণস্থায়ী বোতামটি Mountাকনার গর্তের নীচে খুব গভীর নয়, কারণ এটি যাদুর গতিতে সেট করার জন্য জাদুর কাঠি দ্বারা পৌঁছানো প্রয়োজন।
  • সোল্ডারিং করার সময় ক্যাপাসিটরের পোলারিটি পর্যবেক্ষণ করতে ভুলবেন না। যদি আপনি ইতিবাচক এবং নেতিবাচক লিডগুলি বিপরীত করেন, ক্যাপাসিটর সম্ভবত কিছু জাদুকরী ধোঁয়া নির্গত করবে এবং আপনার সার্কিটকে একটি চিরতরে ঘুমের মধ্যে রাখবে।
  • আঠালো, টেপ এবং বা ব্যাটারি ধারক এবং PCB (গুলি) জায়গায় স্ক্রু। এটি ঝরঝরে হতে হবে না, কারণ এটি দৃশ্যমান হবে না। এটা শুধু ড্রপ প্রুফ হওয়া উচিত।

সফটওয়্যারে!

ধাপ 4: সফটওয়্যার

নিশ্চিত করুন যে আপনার কাছে সর্বশেষ (বিনামূল্যে) Arduino সফটওয়্যার সম্পাদক আছে, যা https://www.arduino.cc/en/Main/Software এ ডাউনলোড করা যাবে। Wemos D1 মিনি এবং অন্যান্য ESP8266- ভিত্তিক বোর্ডগুলির জন্য সমর্থন যোগ করতে, নিম্নলিখিত পদক্ষেপগুলি নিন:

  • ইনস্টলেশনের পরে, আরডুইনো সফ্টওয়্যারটি শুরু করুন এবং পছন্দ উইন্ডোটি খুলুন।
  • "অতিরিক্ত বোর্ড ম্যানেজার ইউআরএল" ফিল্ডে https://arduino.esp8266.com/stable/package_esp8266com_index.json লিখুন। আপনি একাধিক ইউআরএল যোগ করতে পারেন, সেগুলোকে কমা দিয়ে আলাদা করে।
  • সরঞ্জাম> বোর্ড মেনু থেকে বোর্ড ম্যানেজার খুলুন এবং esp8266 প্ল্যাটফর্ম ইনস্টল করুন (এবং ইনস্টলেশনের পরে সরঞ্জাম> বোর্ড মেনু থেকে আপনার ESP8266 বোর্ড নির্বাচন করতে ভুলবেন না। "LOLIN (WEMOS) D1 R2 & mini" Wemos D1 mini v2 এবং v3 এর জন্য সবচেয়ে ভালো কাজ করে বোর্ড

যদি আপনার আরডুইনো ইনস্টল করতে এবং ড্রাইভার সেট আপ করতে আরও সাহায্যের প্রয়োজন হয় তাহলে আপনি

আরডুইনো এডিটরে, একটি নতুন ফাইল (ফাইল> নতুন) খুলুন এবং উইন্ডোতে নীচের কোডটি অনুলিপি/আটকান যা সবে খোলা হয়েছে। নতুন উইন্ডোতে ইতিমধ্যেই উপস্থিত লাইনগুলিকে ওভাররাইট করুন (অকার্যকর সেটআপ এবং অকার্যকর লুপ)।

এখন আপনি প্রায় প্রস্তুত, কিন্তু আপনার নির্দিষ্ট সেট-আপের জন্য আপনাকে কোডের কয়েকটি টুকরো মানিয়ে নিতে হবে।

আপনার হিউ ব্রিজের আইপি ঠিকানায় 34 নম্বরে (Arduino এডিটরে কোডের লাইন সংখ্যাযুক্ত) আইপি ঠিকানা পরিবর্তন করা প্রথম কাজ। আপনি যদি আপনার হিউ ব্রিজের আইপি ঠিকানা না জানেন, তাহলে https://discovery.meethue.com/ এ যান এবং সঠিক আইপি ঠিকানাটি আপনার ব্রাউজারে অবিলম্বে উপস্থিত হবে। আইপি ঠিকানা হল বিন্দুযুক্ত সংখ্যা যা "অভ্যন্তরীণপ্যাড্রেস" এর পূর্বে থাকে।

হিউ লাইটের সাথে যোগাযোগ করার জন্য, আপনাকে ওয়েমোস ডি 1 মিনি এর জন্য একটি হিউ এপিআই ব্যবহারকারী তৈরি করতে হবে, যাতে ওয়েমোস হিউ এপিআই এর মাধ্যমে হিউ লাইটের সাথে যোগাযোগ করতে পারে। এটি করার জন্য, https://developers.meethue.com/develop/get-started-2/ এ নির্দেশাবলী অনুসরণ করুন এবং Arduino কোড উইন্ডোতে উত্পন্ন (বেশ দীর্ঘ) ব্যবহারকারীর নাম কপি/পেস্ট করুন। জেনারেটেড API ব্যবহারকারীর নাম দিয়ে প্রতিটা "আপনার HUE API ব্যবহারকারীর নাম" প্রতিস্থাপন করুন।

তারপরে আপনাকে রঙ পরিবর্তন করতে ডান হিউ লাইট নির্বাচন করতে হবে। হিউ এপিআইতে প্রতিটি আলোর একটি সংখ্যা থাকে, তাই আপনাকে এই প্রজেক্টের জন্য যে আলোর ব্যবহার করতে চান তার সাথে মিল থাকা সংখ্যাটি খুঁজে বের করতে হবে। কোন বিশেষ আলোর কোন নম্বর আছে তা খুঁজে বের করার সবচেয়ে সহজ উপায় হল, অ্যান্ড্রয়েড বা আইওএসের জন্য হিউ ভিউয়ার অ্যাপ ডাউনলোড করা। Arduino কোড উইন্ডোতে সর্বত্র সঠিক নম্বর দিয়ে "আপনার আলো সংখ্যা" পাঠ্যটি প্রতিস্থাপন করুন।

আপনার ওয়াইফাই নেটওয়ার্কের সাথে সংযোগ স্থাপনের জন্য Wemos সেটআপ করা সর্বশেষ কাজ। এটি Wemos এ কোড আপলোড করে এবং আপনার ল্যাপটপে অন্য ওয়াইফাই নেটওয়ার্কে "AutoConnectAP" এ স্যুইচ করে। আপনার ব্রাউজার তারপরে একটি পৃষ্ঠা প্রদর্শন করবে যেখানে আপনি আপনার ওয়াইফাই নেটওয়ার্কের SSID (নাম) এবং পাসওয়ার্ড যোগ করতে পারবেন যা Wemos নিয়ামক আপনার ওয়াইফাই নেটওয়ার্ক (এবং হিউ ব্রিজে) সংযোগ করতে ব্যবহার করবে।

NB: যদি USB এর মাধ্যমে আমাদের Wemos D1 মিনিতে কোড আপলোড করা কাজ না করে, তাহলে আপনাকে Wemos- এ USB চিপের জন্য ড্রাইভার ডাউনলোড করতে হতে পারে। আপনার প্ল্যাটফর্মের জন্য একটি ড্রাইভার (উইন্ডোজ, ম্যাক) ডাউনলোড করা যাবে

এখন আপনি আপনার সৃষ্টি পরীক্ষা করার জন্য পুরোপুরি প্রস্তুত!

// ESP8266 Hue Magic Wand // Richard van Kampen - 2018 // এই কোডটি Wemos D1 মিনি তে পরীক্ষা করা হয়েছে, কিন্তু সম্ভবত অন্যান্য ESP8266- ভিত্তিক ডেভেলপমেন্ট বোর্ডেও কাজ করবে // Wemos D1 mini এবং অন্যান্য ESP8266 বোর্ডের জন্য সমর্থন যোগ করতে Arduino এডিটর, নিম্নলিখিত পদক্ষেপ নিন: // - Arduino শুরু করুন এবং পছন্দ উইন্ডো খুলুন। // - https://arduino.esp8266.com/stable/package_esp8266com_index.json অতিরিক্ত বোর্ড ম্যানেজার ইউআরএল ফিল্ডে প্রবেশ করুন। আপনি একাধিক ইউআরএল যুক্ত করতে পারেন, সেগুলোকে কমা দিয়ে আলাদা করে। // - সরঞ্জাম> বোর্ড মেনু থেকে বোর্ড ম্যানেজার খুলুন এবং esp8266 প্ল্যাটফর্ম ইনস্টল করুন (এবং ইনস্টলেশনের পরে সরঞ্জাম> বোর্ড মেনু থেকে আপনার ESP8266 বোর্ড নির্বাচন করতে ভুলবেন না)। // ব্যবহৃত লাইব্রেরি: এখনো সেট করা হয়নি #অন্তর্ভুক্ত করুন "ESP8266WebServer.h" // স্থানীয় ওয়েব সার্ভার ওয়াইফাই ম্যানেজার কনফিগারেশন পোর্টাল পরিবেশন করতে ব্যবহার করে #install-through-library-manager #include "RestClient.h" // https://github.com/fabianofranca/ESP8266RestClient, ফিলিপস হিউ এপিআই ব্যবহারের জন্য প্রয়োজন (দেখুন https://developers.meethue.com/develop/ হিউ-এপিআই/)। #অন্তর্ভুক্ত করুন "ArduinoJson.h" // https://github.com/bblanchon/ArduinoJson, হিউ এপিআই প্রতিক্রিয়া বিশ্লেষণ করতে প্রয়োজন, অনুগ্রহ করে Arduino (মেনু "স্কেচ"> লাইব্রেরি ম্যানেজারের মাধ্যমে 5.x সংস্করণ ইনস্টল করুন> লাইব্রেরি অন্তর্ভুক্ত করুন> পরিচালনা করুন লাইব্রেরি> ArduinoJson এর জন্য অনুসন্ধান করুন এবং সংস্করণটি সর্বশেষ 5.x এ পরিবর্তন করুন)। সংস্করণ 6 (বর্তমানে বিটাতে) একটি ত্রুটি ছুঁড়েছে। // ভেরিয়েবল এবং init: স্ট্রিং প্রতিক্রিয়া; const int redPin = 13; // Wemos এ d7 const int greenPin = 12; // Wemos এ d6 const int bluePin = 14; // Wemos এ এটি d5 const int touchSensor = 5; // Wemos এ হল d1 const int activationPin = 4; // Wemos এ এটি d2 বুল অ্যাক্টিভেশন = হাই; বুল স্পর্শ = কম; const char* aan_restore; int bri_restore; ডবল x_restore; ডবল y_restore; ডবল x_magic; ডবল y_magic; bool first = সত্য; স্বাক্ষরবিহীন দীর্ঘ শুরু মিলিস; স্বাক্ষরবিহীন দীর্ঘ বর্তমান মিলিস; স্বাক্ষরবিহীন দীর্ঘ সময়কাল মিলিস; RestClient ক্লায়েন্ট = RestClient ("192.168.178.23"); // "আপনার হিউ ব্রিজ আইপি ঠিকানা" // যদি আপনি আপনার হিউ ব্রিজের আইপি ঠিকানা না জানেন, তাহলে https://discovery.meethue.com এ যান এবং এটি আপনার ব্রাউজারে অবিলম্বে উপস্থিত হবে। আইপি অ্যাড্রেস হল বিন্দু সংখ্যা যা পূর্বে "internalipaddress" void setup () {analogWriteRange (255); Serial.begin (9600); // LED বন্ধ দিয়ে শুরু করুন। পিনমোড (অ্যাক্টিভেশনপিন, INPUT_PULLUP); পিনমোড (টাচসেন্সর, ইনপুট); startMillis = মিলিস (); checkWand (); } অকার্যকর লুপ () {// এখানে কিছু করার নেই, খালি রাখুন…} অকার্যকর চেকওয়ান্ড () {int rgbColour [3]; // জেমস হার্টনের RGB কালার কোড, https://gist.github.com/jamesotron/766994 // লাল দিয়ে শুরু করুন। rgbColour [0] = 255; rgbColour [1] = 0; rgbColour [2] = 0; অ্যাক্টিভেশন = ডিজিটাল রিড (অ্যাক্টিভেশনপিন); // কম মানে ছড়ি ব্যবহার করা হচ্ছে। স্পর্শ = ডিজিটাল রিড (টাচ সেন্সর); // উচ্চ মানে আঙুলটি ছড়ার পরিবর্তে ব্যবহৃত হয়, যা এমন হওয়া উচিত নয়। while (অ্যাক্টিভেশন == LOW && টাচ == LOW) {// বৃদ্ধি এবং হ্রাসের জন্য রং নির্বাচন করুন। জন্য (int decColour = 0; decColour <3; decColour += 1) {int incColour = decColour == 2? 0: decColour + 1; // = টার্নারি অপারেটর, মানে: int incColour; জন্য (int i = 0; i <255; i += 1) {rgbColour [decColour] -= 1; rgbColour [incColour] += 1; // যেহেতু আমাদের আরজিবি নেতৃত্বে ক্যাথোডের পরিবর্তে একটি সাধারণ অ্যানোড রয়েছে (তাই আমাদের স্থানের পরিবর্তে +3.3V এর সাথে সংযোগ করতে হবে), আমাদের RGB এর জন্য বিপরীত মান প্রয়োজন: int red = 255 - rgbColour [0]; int green = 255 - rgbColour [1]; int blue = 255 - rgbColour [2]; analogWrite (redPin, লাল); analogWrite (সবুজ পিন, সবুজ); analogWrite (bluePin, নীল); বিলম্ব (8); সক্রিয়করণ = ডিজিটাল রিড (অ্যাক্টিভেশনপিন); যদি (অ্যাক্টিভেশন == উচ্চ) {// উচ্চ মানে ছড়ি উঠানো হয়। goto stopColorCycling; }}}} stopColorCycling: currentMillis = millis (); periodMillis = (currentMillis - startMillis); যদি (periodMillis> 1000) {RGBtoxy (rgbColour [0], rgbColour [1], rgbColour [2]); } অন্যথায় {// Wemos কে ঘুমের মোডে রাখুন: ESP.deepSleep (0); }} অকার্যকর RGBtoxy (int red, int green, int blue) {// দেখুন https://developers.meethue.com/documentation/color-conversions-rgb-xy double R = map (red, 0, 255, 0, 1000); আর /= 1000; ডবল জি = মানচিত্র (সবুজ, 0, 255, 0, 1000); জি /= 1000; ডবল বি = মানচিত্র (নীল, 0, 255, 0, 1000); বি /= 1000; R = (R> 0.04045f)? Pow ((R + 0.055f) / (1.0f + 0.055f), 2.4f): (R / 12.92f); G = (G> 0.04045f)? Pow ((G + 0.055f) / (1.0f + 0.055f), 2.4f): (G / 12.92f); B = (B> 0.04045f)? Pow ((B + 0.055f) / (1.0f + 0.055f), 2.4f): (B / 12.92f); ডবল X = R * 0.649926f + G * 0.103455f + B * 0.197109f; ডাবল Y = R * 0.234327f + G * 0.743075f + B * 0.022598f; ডাবল Z = R * 0.0000000f + G * 0.053077f + B * 1.035763f; ডবল x = X / (X + Y + Z); ডাবল y = Y / (X + Y + Z); // রূপান্তর সম্পূর্ণরূপে সম্পন্ন হয়নি, কিন্তু আমরা যা অর্জন করতে চাই তার জন্য সম্ভবত যথেষ্ট ভাল, তাই এটিকে এখানে রেখে XY মানগুলি বাতিতে পাঠান: sendtoHue (x, y); } void sendtoHue (double a, double b) {// প্রকৃত রঙ পরিবর্তন wand যাদু থেকে যদি (প্রথম) {// প্রথম পাস: বর্তমান বাতি অবস্থা getCurrentValues () পান; } // তারপর জাদুর কাঠির রং পাঠান: // বানানের জন্য অপেক্ষা করুন: দীর্ঘ অপেক্ষা; x_magic = a; y_magic = b; // জাদুর কাঠির রঙে প্রদীপ: প্রতিক্রিয়া = ""; int temp = এলোমেলো (2, 9); const char* state = "true"; জন্য: 220, / "xy \": [" + স্ট্রিং (x_magic) +", " + স্ট্রিং (y_magic) +"], / "ট্রানজিশনটাইম \": 1} "; int str_len1 = temp_body1.length () + 1; char post_body1 [str_len1]; temp_body1.toCharArray (post_body1, str_len1); // এখন আমাদের post_body1 আছে char অ্যারে হিসেবে; // বিশ্রাম কল করুন: int statusCodePut1 = client.put ("/api/YOUR HUE API USERNAME/lights/your light number/state", post_body1, & response); অপেক্ষা = এলোমেলো (100, 600); বিলম্ব (অপেক্ষা); যদি (state == "true") {state = "false"; } অন্য {রাষ্ট্র = "সত্য"; }} // উজ্জ্বলতা হ্রাস করুন …: প্রতিক্রিয়া = ""; টেম্প = এলোমেলো (4, 17); // সেতুতে পাঠানোর জন্য চার অ্যারে তৈরি করুন: String temp_body2 = "{" on / ": true, \" bri / ": 154, \" transmissiontime / ":" + স্ট্রিং (temp) + "}"; int str_len2 = temp_body2.length () + 1; char post_body2 [str_len2]; temp_body2.toCharArray (post_body2, str_len2); // এখন আমাদের post_body2 আছে char অ্যারে হিসেবে; // বিশ্রাম কল করুন: int statusCodePut2 = client.put ("/api/YOUR HUE API USERNAME/lights/your light number/state", post_body2, & response); অপেক্ষা = এলোমেলো (1000, 2500); বিলম্ব (অপেক্ষা); //.. এবং আবার উজ্জ্বল করুন: প্রতিক্রিয়া = ""; টেম্প = এলোমেলো (4, 17); // সেতুতে পাঠানোর জন্য চার অ্যারে তৈরি করুন: স্ট্রিং temp_body3 = "{" bri_inc / ": 100, \" ট্রানজিশনটাইম / ":}"; int str_len3 = temp_body3.length () + 1; char post_body3 [str_len3]; temp_body3.toCharArray (post_body3, str_len3); // এখন আমাদের post_body3 আছে char অ্যারে হিসেবে; // make rest call: int statusCodePut3 = client.put ("/api/YOUR HUE API USERNAME/lights/your light number/state", post_body3, & response); অপেক্ষা = এলোমেলো (2500, 5000); // অপেক্ষা করুন 2-5 সেকেন্ড বিলম্ব (অপেক্ষা করুন); // এবং পুরানো মান ফিরিয়ে দিন: প্রতিক্রিয়া = ""; // সেতুতে পাঠানোর জন্য চার অ্যারে তৈরি করুন: String temp_body4 = "{" on / ":" + String (aan_restore) + ", \" bri / ":" + স্ট্রিং (bri_restore) + ", \" xy / ": [" + স্ট্রিং (x_restore) +", " + স্ট্রিং (y_restore) +"], / "ট্রানজিশনটাইম \": " + স্ট্রিং (20) +"} "; int str_len4 = temp_body4.length () + 1; char post_body4 [str_len4]; temp_body4.toCharArray (post_body4, str_len4); // এখন আমাদের আছে post_body4 চর অ্যারে হিসেবে; // বিশ্রাম কল করুন: int statusCodePut4 = client.put ("/api/YOUR HUE API USERNAME/lights/your light number/state", post_body4, & response); ESP.deepSleep (0); // আবার ঘুমাতে যাচ্ছি …. } স্বাক্ষরবিহীন int getCurrentValues () {connectWifi (); // প্রথমে ওয়াইফাই প্রতিক্রিয়া = ""; // বিশ্রাম কল করুন: int statusCodeGet = client.get ("/api/YOUR HUE API USERNAME/আলো/আপনার আলো সংখ্যা", এবং প্রতিক্রিয়া); Serial.print ("GET এর পর সার্ভার থেকে স্ট্যাটাস কোড:"); Serial.println (statusCodeGet); Serial.print ("সার্ভার থেকে রেসপন্স বডি:"); Serial.println (সাড়া); StaticJsonBuffer jsonBuffer; // পার্সিং Json প্রতিক্রিয়া // বস্তু গাছের মূল। // // এটি JsonObject- এর একটি রেফারেন্স, প্রকৃত বাইটগুলি // jsonBuffer এর ভিতরে বস্তু গাছের অন্যান্য সমস্ত নোডের সাথে রয়েছে। // jsonBuffer সুযোগের বাইরে গেলে মেমরি মুক্ত হয়। JsonObject & root = jsonBuffer.parseObject (সাড়া); JsonObject & state = root ["state"]; // পার্সিং সফল হলে পরীক্ষা করুন। যদি (! root.success ()) {Serial.println ("parseObject () ব্যর্থ"); } // মান আনুন। aan_restore = state ["on"]; Serial.println (aan_restore); bri_restore = state ["bri"]; x_restore = state ["xy"] [0]; y_restore = state ["xy"] [1]; first = false;} void connectWifi () {// local intialization।একবার এর ব্যবসা হয়ে গেলে, WiFiManager wifiManager এর আশেপাশে রাখার দরকার নেই; // রিসেট সেটিংস - পরীক্ষার জন্য: //wifiManager.resetSettings (); // সেট কলব্যাক যা পূর্ববর্তী ওয়াইফাই সংযোগের সময় কল করা হয় ব্যর্থ হয়, এবং প্রবেশ পয়েন্ট মোডে প্রবেশ করে wifiManager.setAPCallback (configModeCallback); // এসএসআইডি এবং পাস নিয়ে আসে এবং সংযোগের চেষ্টা করে // যদি এটি সংযোগ না করে তবে এটি নির্দিষ্ট নাম দিয়ে একটি অ্যাক্সেস পয়েন্ট শুরু করে // এখানে "অটোকানেক্টএপি" // এবং কনফিগারেশনের অপেক্ষায় একটি ব্লকিং লুপে যায় যদি (! wifiManager.autoConnect ()) {Serial.println ("সংযোগে ব্যর্থ এবং সময়সীমা হিট"); // পুনরায় সেট করুন এবং আবার চেষ্টা করুন, অথবা হয়তো এটি গভীর ঘুম ESP.reset (); বিলম্ব (1000); } // যদি আপনি এখানে পান তাহলে আপনি WiFi Serial.println ("সংযুক্ত … yeey:)") এর সাথে সংযুক্ত হয়েছেন; সিরিয়াল.প্রিন্ট ("এর সাথে সংযুক্ত:"); Serial.println (WiFi. SSID ()); সিরিয়াল.প্রিন্ট ("আইপি ঠিকানা:"); Serial.println (WiFi.localIP ()); // আপনার ইএসপি (Wemos) এ বরাদ্দ করা IP ঠিকানা // প্রাপ্ত সংকেত শক্তি মুদ্রণ করুন: দীর্ঘ rssi = WiFi. RSSI (); Serial.print ("সংকেত শক্তি (RSSI):"); Serial.println (rssi); } void configModeCallback (WiFiManager * myWiFiManager) {Serial.println ("এন্ট্রিড কনফিগ মোড"); Serial.println (WiFi.softAPIP ()); // যদি আপনি স্বয়ংক্রিয়ভাবে তৈরি এসএসআইডি ব্যবহার করেন, তাহলে এটি প্রিন্ট করুন Serial.println (myWiFiManager-> getConfigPortalSSID ()); }

প্রস্তাবিত: