ዝርዝር ሁኔታ:

ሁዌ አስማት -4 ደረጃዎች (ከስዕሎች ጋር)
ሁዌ አስማት -4 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: ሁዌ አስማት -4 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: ሁዌ አስማት -4 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: ደጀን ዳዕሽ ዝኾነት ከተማ ሞሱል ብሓይልታት ዒራቕ ተታሒዛ 2024, መስከረም
Anonim
Image
Image

ጠንቋዮች እንኳን ደህና መጡ!

ከጥቂት ወራት በፊት ለ 3 ዓመቱ ልጄ በበትር አንድ ትንሽ የአስማት ሳጥን ፈጠርኩ። ሣጥኑን በበትር ሲነካ ፣ የሚቀያየር ቀለም ያለው መብራት ከሳጥኑ መውጣት ይጀምራል። እሱ በተለይ የሚወደውን ቀለም ሲያይ ፣ እንጨቱን ወደ ጠረጴዛው መብራት (በፊሊፕስ ሁዌ አምፖል ውስጡን) ሊያመለክት ይችላል ፣ ፊደል ይፃፉ እና ከሳጥኑ ውስጥ ያለው ቀለም በአስማት ወደ መብራቱ ዘልሏል! ከሳጥኑ ውስጥ መብራት እና መብራት በድንገት አንድ ዓይነት ቀለም አላቸው…

ከጥቂት ሰከንዶች በኋላ ቀለሙ ይጠፋል እና የጠረጴዛው መብራት ከድግመቱ በፊት ወደነበረበት ይመለሳል። አዲስ ፊደል እስኪደረግ ድረስ…

ደረጃ 1 - ይህንን ፕሮጀክት ለመፍጠር የሚያስፈልግዎት

ይህንን ፕሮጀክት ለመፍጠር የሚያስፈልግዎት
ይህንን ፕሮጀክት ለመፍጠር የሚያስፈልግዎት
ይህንን ፕሮጀክት ለመፍጠር የሚያስፈልግዎት
ይህንን ፕሮጀክት ለመፍጠር የሚያስፈልግዎት
ይህንን ፕሮጀክት ለመፍጠር የሚያስፈልግዎት
ይህንን ፕሮጀክት ለመፍጠር የሚያስፈልግዎት

ይህንን ፕሮጀክት ለመፍጠር የሚከተሉትን ቁሳቁሶች ያስፈልግዎታል

    • 1 (ወይም ከዚያ በላይ) የፊሊፕስ ሁዌ የቀለም አምፖል እና ሁዌ ድልድይ
    • 1 Wemos D1 mini ወይም ተመሳሳይ esp8266 ላይ የተመሠረተ ማይክሮ መቆጣጠሪያ
    • 1 (አርዱinoኖ) የንክኪ ዳሳሽ (ለምሳሌ TTP223R)
    • 1 (አርዱinoኖ) ቅጽበታዊ አዝራር
    • 1 10uF capacitor
    • 1 RGB መሪ (የተለመደ የአኖድ ዓይነት)
    • 5 resistors (10 ፣ 22 እና 47 Ohm ፣ 2x 10K Ohm)
    • 2 ትናንሽ ፕሮቶኮፒ ፒሲቢዎች (2x3 ኢንች ወይም 5x7 ሴ.ሜ ያህል ትልቅ መሆን አለበት)
    • አንዳንድ (ዝላይ) ሽቦዎች
    • የሽያጭ ብረት
    • አስማታዊ ዘንግ (በአሻንጉሊት መደብር ውስጥ እንደ ዝግጁ ሆኖ ሊገዛ ይችላል ፣ ወይም እራስዎ ማድረግ ይችላሉ)
    • ከካርቶን ወይም ከእንጨት የተሠራ ትንሽ ሳጥን (ነባር ሳጥን ሊሆን ይችላል ፣ ግን ከባዶም እንዲሁ ሳጥን መገንባት ይችላሉ)
    • አንዳንድ ቴፕ
    • ፒሲቢዎችን በሳጥኑ ውስጥ ለመጫን አንዳንድ ሙጫ እና/ወይም ለውዝ እና ብሎኖች።
    • አማራጭ - ለሳጥኑ መጠቅለያ ወረቀት

ማሳሰቢያ -ይህንን መመሪያ በሚሰጥበት ጊዜ የወረዳ ንድፎችን በማንበብ ትንሽ ተሞክሮ ጠቃሚ ነው። የእኔ ዲያግራም ከመጠን በላይ የተወሳሰበ አይደለም -አንድ capacitor ን ከተከላካይ መለየት ከቻሉ ምናልባት ደህና ይሆኑዎታል።

አርዱዲኖ አይዲኢን በመጠቀም በአርዱዲኖ ፕሮግራም አንዳንድ ልምዶች እንዲሁ ጠቃሚ ናቸው። እርስዎ ለመቅዳት/ለመለጠፍ የተሟላውን ኮድ ስለምሰጥዎት መሠረታዊው ተሞክሮ በቂ መሆን አለበት። ምንም እንኳን በእርስዎ የተወሰነ ቅንብር (ለምሳሌ የአውታረ መረብ ቅንብሮችዎ እና አንዳንድ ዝርዝሮች ከእርስዎ Hue ውቅረት) እንዲሠራ ለማድረግ ጥቂት ነገሮችን ማላመድ ያስፈልግዎታል። ይህ ትንሽ የሚያስፈራ ቢመስልዎት ፣ አይጨነቁ ፣ የሚፈልጉትን መረጃ ሁሉ ለማምጣት እረዳዎታለሁ።

ደረጃ 2 - ሳጥኑ እና ዋንድ

ሣጥን እና ዋንድ
ሣጥን እና ዋንድ
ሣጥን እና ዋንድ
ሣጥን እና ዋንድ

የመጀመሪያዎቹ ደረጃዎች በተለምዶ በጣም ከባድ ናቸው ፣ ግን በዚህ ትምህርት ውስጥ አይደለም! ለቀላል ጅምር ፣ ከአሻንጉሊት መደብር ውስጥ የአስማት ዋንዳን ብቻ መግዛት ይችላሉ እና ለሳጥኑ እርስዎ ቀደም ብለው ተኝተው የነበረውን ነባር ትንሽ ሳጥን እንደገና መጠቀም ይችላሉ። ሳጥኑ ከብረት የተሠራ አለመሆኑን ያረጋግጡ ፣ ምክንያቱም ይህ የ wifi ምልክቶችን ስለሚያግድ እና እኛ ለአስማት እንፈልጋለን ፤-)።

አሁን ያለውን ሳጥን እንደገና ሲያቅዱ ፣ ማድረግ ያለብዎት ብቸኛው ነገር በሳጥኑ አናት ላይ ሁለት ቀዳዳዎችን ማድረግ ነው -1 ትንሽ ቀዳዳ (መጠን 5 ሚሜ = 0.2 ኢንች) ለ RGB መሪ እና ትልቅ ቀዳዳ (12- አካባቢ) ለንክኪ ዳሳሽ 14 ሚሜ ወይም ወደ 0.5 ኢንች)።

የጉድጓዶቹ ትክክለኛ አቀማመጥ ወሳኝ አይደለም ፣ ልክ እንደ ውበትዎ ስሜት ያስቀምጡዋቸው ግን ጥቂት ነገሮችን ያስታውሱ-

  • ከጉድጓዶቹ በታች የሚጫኑት ክፍሎች (የ RGB መሪ እና የንክኪ ዳሳሽ) ሁለቱም ለመገጣጠም እና ለመገጣጠም በቂ ቦታ እንዲይዙ ለማድረግ በሁለቱም ቀዳዳዎች መካከል የተወሰነ ርቀት ያስቀምጡ።
  • ትልቁ ቀዳዳ ለንክኪ ዳሳሽ ነው። ይህ ዳሳሽ ከጉድጓዱ በታች በቀላሉ ይጫናል ፣ ይህም በመዳፊያው ሊነካ (እና በትንሹም ሊጫን ይችላል)። ስለዚህ የሚገዙት ዘንግ በጣም ወፍራም አለመሆኑን ያረጋግጡ!

እንደ አማራጭ ሳጥንዎን ትንሽ ቆንጆ ለማድረግ እና ከምግብ ፍሳሾች እና ከቆሸሹ እጆች ለመጠበቅ (በመርጨት) ቀለም ወይም መጠቅለያ ወረቀት እና ፕላስቲክን መሸፈን ይችላሉ።

ይህ የመጀመሪያ ደረጃ ለእርስዎ ፍላጎት ትንሽ በጣም የማይጎዳ ከሆነ ፣ እባክዎን ይቀጥሉ እና ሳጥን ይፍጠሩ እና ከባዶ ሙሉ በሙሉ ይቅበዘበዙ! የሚያምር ዋንዳን ለመፍጠር የሚያግዙዎት ብዙ የማይገነቡ ነገሮች አሉ

የትኛውም መንገድ ቢመርጡ ፣ የሳጥን ውስጡን ለመመርመር ጊዜው አሁን ነው።

ደረጃ 3: ውስጡ ያለው ሃርድዌር

የውስጥ ሃርድዌር
የውስጥ ሃርድዌር
የውስጥ ሃርድዌር
የውስጥ ሃርድዌር
የውስጥ ሃርድዌር
የውስጥ ሃርድዌር

ከላይ ባለው የወረዳ ዲያግራም መሠረት የኤሌክትሮኒክ ክፍሎቹን ለማገናኘት የሽያጭ ብረት ይጠቀሙ። ልዩ ትኩረት ሊሰጣቸው የሚገቡ ሁለት ነገሮች አሉ-

  • በ ‹Wemos D1 Mini ›እና በ ‹RGB› መሪነት መካከል ያሉት ገመዶች በቂ መሆን አለባቸው ስለዚህ የ RGB መሪ በሳጥኑ ክዳን ውስጥ ባደረጉት ቀዳዳ ውስጥ ሊጫን ይችላል።
  • እነዚህ በክዳኑ ውስጥ ባለው ሌላ ቀዳዳ በኩል ተደራሽ መሆን ስለሚችሉ ከቅጽበት መቀየሪያ እና የንክኪ ዳሳሽ ጋር ለተያያዙት ሽቦዎች ተመሳሳይ ቆጠራዎች።
  • አናት ላይ ባለው የንክኪ ዳሳሽ ላይ አዝራሩን ወደ ቅጽበታዊ ማብሪያ / ማጥፊያ (መልሱ) በላዩ ላይ ተጣብቆ (ሥዕሉን ይመልከቱ)። የንክኪ ዳሳሽ በአንድ ጣት የተደረጉ የአዝራር ማተሚያዎችን ለመለየት በቅጽበት መቀየሪያ አናት ላይ ተጭኗል ፣ በዚህ ሁኔታ የአዝራር መጫኑ ችላ ይባላል። አዝራሩ በአስማት ዘንግ ሲጫን ብቻ (የማይሰራ መሆን አለበት ፣ ስለሆነም ፕላስቲኮች እና እንጨቶች ጥሩ ናቸው) ፣ አስማታዊ ዑደት ይጀምራል።
  • የአስማት አዝራሩን ከላይ ካለው የመዳሰሻ ዳሳሽ ጋር በክዳኑ ውስጥ ካለው ቀዳዳ በታች በጣም ጥልቅ አይደለም ፣ ምክንያቱም አስማቱን በእንቅስቃሴ ላይ ለማቀናጀት አስማታዊ ዘንግ መድረስ አለበት።
  • በሚሸጡበት ጊዜ የ capacitor ዋልታውን ማየቱን ያረጋግጡ። አወንታዊውን እና አሉታዊ መሪዎቹን ከቀለበሱ ፣ capacitor ምናልባት አንዳንድ አስማት ጭስ ያወጣና ወረዳዎን በዘላለማዊ እንቅልፍ ውስጥ ያስገባል።
  • ሙጫ ፣ ቴፕ እና የባትሪ መያዣውን እና ፒሲቢ (ዎቹን) በቦታው ላይ ያጣምሩ። በእይታ ውስጥ ስለሌለ ሥርዓታማ መሆን የለበትም። እሱ የመጣል ማረጋገጫ ብቻ መሆን አለበት።

ወደ ሶፍትዌሩ ይሂዱ!

ደረጃ 4 - ሶፍትዌሩ

Https://www.arduino.cc/en/Main/Software ላይ ሊወርድ የሚችል የቅርብ ጊዜ (ነፃ) የአርዱዲኖ ሶፍትዌር አርታኢ እንዳለዎት ያረጋግጡ። ለሞሞስ ዲ 1 ሚኒ እና ለሌሎች ESP8266 ላይ ለተመሰረቱ ሰሌዳዎች ድጋፍ ለማከል የሚከተሉትን እርምጃዎች ይውሰዱ

  • ከተጫነ በኋላ የ Arduino ሶፍትዌርን ይጀምሩ እና የምርጫ መስኮቶችን ይክፈቱ።
  • ወደ «ተጨማሪ የቦርድ አስተዳዳሪ ዩአርኤሎች» መስክ https://arduino.esp8266.com/stable/package_esp8266com_index.json ያስገቡ። በነጠላ ሰረዝ በመለየት ብዙ ዩአርኤሎችን ማከል ይችላሉ።
  • የቦርድ አስተዳዳሪን ከመሳሪያዎች> የቦርድ ምናሌ ይክፈቱ እና የ esp8266 መድረክን ይጫኑ (እና ከተጫኑ በኋላ የእርስዎን ESP8266 ቦርድ ከመሳሪያዎች> የቦርድ ምናሌ መምረጥዎን አይርሱ። "LOLIN (WEMOS) D1 R2 & mini" ለ Wemos D1 mini v2 እና v3 በተሻለ ሁኔታ ይሰራል። ሰሌዳዎች.

አርዱዲኖን ለመጫን እና ሾፌሮችን ለማዋቀር ተጨማሪ እገዛ ከፈለጉ https://www.instructables.com/id/Wemos-ESP8266-Getting-Started-Guide-Wemos-101/ ላይ መመልከት ይችላሉ።

በአርዱዲኖ አርታኢ ውስጥ አዲስ ፋይል (ፋይል> አዲስ) ይክፈቱ እና አሁን በተከፈተው መስኮት ውስጥ ከዚህ በታች ያለውን ኮድ ይቅዱ/ይለጥፉ። በአዲሱ መስኮት ውስጥ ቀድሞውኑ የሚገኙትን መስመሮች ብቻ ይፃፉ (ባዶ አቀማመጥ እና ባዶ ዙር)።

አሁን ዝግጁ ነዎት ማለት ነው ፣ ግን ለተለየ ቅንጅትዎ ጥቂት የኮዱን ቁርጥራጮች ማመቻቸት አለብዎት።

መጀመሪያ ማድረግ ያለብዎት በመስመር 34 ላይ ያለውን የአይፒ አድራሻ (በአርዱዲኖ አርታኢ ውስጥ የኮዱ መስመሮች ተቆጥረዋል) ወደ ሁዌ ድልድይዎ አይፒ አድራሻ መለወጥ ነው። የ Hue Bridge IP አድራሻዎን ካላወቁ https://discovery.meethue.com/ ን ይጎብኙ እና ትክክለኛውን የአይፒ አድራሻ ወዲያውኑ በአሳሽዎ ውስጥ ይታያል። የአይፒ አድራሻው ከ “internalipaddress” ቀድመው የተቀመጠው የነጥብ ቁጥር ነው።

ከ Hue መብራቶች ጋር ለመገናኘት ፣ ለዌሞስ D1 ሚኒ የ Hue ኤፒአይ ተጠቃሚን መፍጠር አለብዎት ፣ ስለዚህ Wemos በሃው ኤፒአይ በኩል ወደ ሁዌ መብራት መገናኘት ይችላሉ። ይህንን ለማድረግ በ https://developers.meethue.com/develop/get-started-2/ ላይ ያሉትን መመሪያዎች ይከተሉ እና በአርዲኖ ኮድ መስኮት ውስጥ የተፈጠረውን (ቆንጆ ረጅም) የተጠቃሚ ስም ይቅዱ/ይለጥፉ። እያንዳንዱን “የእርስዎ HUE ኤፒአይ USERNAME” በተፈጠረው የኤፒአይ የተጠቃሚ ስም ይተኩ።

ከዚያ ቀለም ለመቀየር ትክክለኛውን የ Hue ብርሃን መምረጥ ያስፈልግዎታል። በ Hue ኤፒአይ ውስጥ እያንዳንዱ መብራት ቁጥር አለው ፣ ስለዚህ ለዚህ ፕሮጀክት ሊጠቀሙበት ከሚፈልጉት ብርሃን ጋር የሚስማማውን ቁጥር ማወቅ ያስፈልግዎታል። አንድ የተወሰነ መብራት የትኛው ቁጥር እንዳለው ለማወቅ በጣም ቀላሉ መንገዶች አንዱ ለ Android ወይም ለ iOS የ Hue Viewer መተግበሪያን ማውረድ ነው። በአርዱዲኖ ኮድ መስኮት ውስጥ በሁሉም ቦታ “የእርስዎ የብርሃን ቁጥር” የሚለውን ጽሑፍ በትክክለኛው ቁጥር ይተኩ።

ማድረግ ያለብዎት የመጨረሻው ነገር ከ wifi አውታረ መረብዎ ጋር ለመገናኘት ቬሞስን ማዋቀር ነው። ይህ የሚከናወነው ኮዱን ወደ ዌሞዎች በመስቀል እና በላፕቶፕዎ ላይ ወደ ሌላ የ wifi አውታረ መረብ ቀይር - ወደ “ራስ -አገናኝ”። ከዚያ አሳሽዎ የዊሞስ ተቆጣጣሪ ወደ የእርስዎ wifi አውታረ መረብ (እና ወደ ሁዩ ድልድይ) ለማገናኘት የሚጠቀምበትን የ SSID (ስም) እና የ wifi አውታረ መረብዎን የይለፍ ቃል የሚያክሉበት ገጽ ያሳያል።

ማሳሰቢያ: ኮዱን በዩኤስቢ በኩል ወደ የእኛ Wemos D1 mini መስቀሉ የማይሰራ ከሆነ ፣ በቪሞስ ላይ ለዩኤስቢ ቺፕ ሾፌር ማውረድ ሊኖርብዎት ይችላል። ለእርስዎ መድረክ (ዊንዶውስ ፣ ማክ) ነጂ በ https://sparks.gogo.co.nz/ch340.html ላይ ማውረድ ይችላል

አሁን ፍጥረትዎን ለመፈተሽ ዝግጁ ነዎት!

// ESP8266 Hue Magic Wand // ሪቻርድ ቫን ካምፔን - 2018 // ይህ ኮድ በዌሞስ D1 ሚኒ ላይ ተፈትኗል ፣ ግን ምናልባት በሌሎች ESP8266 ላይ በተመሠረቱ የልማት ሰሌዳዎች ላይም ይሠራል // ለዌሞስ D1 ሚኒ እና ለሌሎች የ ESP8266 ሰሌዳዎች ድጋፍ ለመጨመር ለአርዱዲኖ አርታኢ የሚከተሉትን እርምጃዎች ይውሰዱ - // - አርዱዲኖን ይጀምሩ እና የምርጫ መስኮቶችን ይክፈቱ። // - ወደ ተጨማሪ ቦርድ አስተዳዳሪ ዩአርኤሎች መስክ https://arduino.esp8266.com/stable/package_esp8266com_index.json ያስገቡ። በነጠላ ሰረዝ በመለየት ብዙ ዩአርኤሎችን ማከል ይችላሉ። // - ከመሳሪያዎች> የቦርድ ምናሌ የቦርድ አስተዳዳሪን ይክፈቱ እና የ esp8266 መድረክን ይጫኑ (እና ከተጫነ በኋላ የእርስዎን የ ESP8266 ቦርድ ከመሳሪያዎች> የቦርድ ምናሌ መምረጥዎን አይርሱ)። // ያገለገሉ ቤተ -መጻህፍት ፦ #ESP8266WiFi.h”ን ያጠቃልላል // ESP8266 ኮር WiFi ቤተ -መጽሐፍት #‹ DNSServer.h ›ን ያጠቃልላል// አካባቢያዊ የዲ ኤን ኤስ አገልጋይ ምንም የ WIFI ቅንብሮች (SSID ፣ የይለፍ ቃል) ከሌሉ ሁሉንም ጥያቄዎች ወደ WiFiManager ውቅረት መግቢያ ለማዘዋወር ያገለግላል። ገና አልተዋቀረም። #ESP8266WebServer.h »/አካባቢያዊ ዌብ ሰርቨር የ WiFiManager ውቅረ ገጽን ለማገልገል ያገለገለ #« WiFiManager.h »// የ WiFi ውቅር አስማት ቤተ -መጽሐፍትን ጨምሮ ፣ ገና ካልተጫነ እባክዎን https://github.com/tzapu/WiFiManager ን ይመልከቱ #ጫን-በቤተ-መጽሐፍት-ሥራ አስኪያጅ #‹RestClient.h› // https://github.com/fabianofranca/ESP8266RestClient ፣ የፊሊፕስ ሁአይ ኤፒአይን ለመጠቀም ያስፈልጋል (https://developers.meethue.com/develop/ ን ይመልከቱ) hue-api/)። #«ArduinoJson.h» ን ያካትቱ // https://github.com/bblanchon/ArduinoJson ፣ የ Hue API ምላሽን ለመተንተን ያስፈልጋል ፣ እባክዎን ስሪት 5.x በአርዱዲኖ ውስጥ ባለው የቤተመጽሐፍት ሥራ አስኪያጅ (ምናሌ “ረቂቅ”> ቤተ -መጽሐፍትን ያክሉ/ያቀናብሩ) ቤተመጻሕፍት> አርዱዲኖ ጆንሰን ይፈልጉ እና ስሪቱን ወደ የቅርብ ጊዜው 5.x ይለውጡ)። ስሪት 6 (በአሁኑ ጊዜ በቅድመ -ይሁንታ ውስጥ) ስህተት ይጥላል። // ተለዋዋጮች እና init: ሕብረቁምፊ ምላሽ; const int redPin = 13; // በዌሞስ ይህ d7 const int greenPin = 12; // በዌሞስ ይህ d6 const int bluePin = 14; // በዌሞስ ይህ d5 const int touchSensor = 5; // on Wemos this d1 const int activationPin = 4; // በዌሞስ ላይ ይህ d2 bool activation = HIGH ነው bool touch = LOW; const char* aan_restore; int bri_restore; ድርብ x_restore; ድርብ y_restore; ድርብ x_magic; ድርብ y_magic; bool መጀመሪያ = እውነት; ያልተፈረመ ረጅም ጅምር ሚሊሊስ; ያልተፈረመ ረጅም የአሁኑ ሚሊስ; ያልተፈረመ ረጅም ቆይታ ሚሊስ; የ RestClient ደንበኛ = RestClient ("192.168.178.23"); // “የእርስዎ ሁዌ ድልድይ አይፒ አድራሻ” // የ Hue Bridge IP አድራሻዎን ካላወቁ https://discovery.meethue.com ን ይጎብኙ እና ወዲያውኑ በአሳሽዎ ውስጥ ይታያል። የአይፒ አድራሻው በ "internalipaddress" ባዶ ቅንብር () {analogWriteRange (255) ቀደመ ነጥብ ያለው የነጥብ ቁጥር ነው። Serial.begin (9600); // በ LED ጠፍቷል ይጀምሩ። pinMode (activationPin ፣ INPUT_PULLUP); pinMode (የመዳሰሻ ዳሳሽ ፣ ግብዓት); startMillis = millis (); checkWand (); } ባዶ ቦታ () {// እዚህ ምንም ማድረግ ፣ ባዶ መተው…} ባዶ ቼክ ዋንድ () {int rgbColour [3]; // የ RGB የቀለም ኮድ በጄምስ ሃርቶን ፣ https://gist.github.com/jamesotron/766994 // በቀይ ይጀምሩ። rgbColour [0] = 255; rgbColour [1] = 0; rgbColour [2] = 0; activation = digitalRead (activationPin); // LOW ማለት ዋንድ ጥቅም ላይ እየዋለ ነው ማለት ነው። touch = digitalRead (touchSensor); // HIGH ማለት ጣት ከመጠምዘዝ ይልቅ ጥቅም ላይ ይውላል ፣ ይህ መሆን የለበትም። (activation == LOW && touch == LOW) {// ለመጨመር እና ለመቀነስ ቀለሞችን ይምረጡ። ለ (int decColour = 0; decColour <3; decColour += 1) {int incColour = decColour == 2? 0: decColour + 1; // = ternary ከዋኝ ማለት ፣ int incColour ፤ ከሆነ (decColour == 2) {incColour = 0;} ሌላ {incColour = decColour +1;} // ሁለቱን ቀለሞች ያቋርጡ። ለ (int i = 0; i <255; i += 1) {rgbColour [decColour] -= 1; rgbColour [incColour] += 1; // የእኛ የ RGB መሪነት ከካቶድ ይልቅ የጋራ አኖድ እንዳለው (ስለዚህ ከመሬት ይልቅ ከ +3.3 ቪ ጋር መገናኘት አለብን) ፣ ለ RGB የተገላቢጦሽ እሴቶች ያስፈልጉናል int int = 255 - rgbColour [0]; int አረንጓዴ = 255 - rgbColour [1]; int ሰማያዊ = 255 - rgbColour [2]; analogWrite (redPin ፣ ቀይ); አናሎግ ፃፍ (አረንጓዴ ፒን ፣ አረንጓዴ); አናሎግ ፃፍ (ሰማያዊ ፒን ፣ ሰማያዊ); መዘግየት (8); ማግበር = digitalRead (activationPin); ከሆነ (ማግበር == ከፍተኛ) {// HIGH ማለት ዋድ ይነሳል ማለት ነው። goto stopColorCycling; }}}} stopColorCycling: currentMillis = millis (); durationMillis = (currentMillis - startMillis); ከሆነ (ቆይታ ሚሊስ> 1000) {RGBtoxy (rgbColour [0] ፣ rgbColour [1] ፣ rgbColour [2]) ፤ } ሌላ {// ቬሞስን በእንቅልፍ ሁኔታ ውስጥ ያስገቡ ESP.deepSleep (0); }} ባዶነት RGBtoxy (int red, int green, int ሰማያዊ) {// https://developers.meethue.com/documentation/color-conversions-rgb-xy double R = map (ቀይ ፣ 0 ፣ 255 ፣ 0 ፣ ይመልከቱ) 1000); አር /= 1000; ድርብ G = ካርታ (አረንጓዴ ፣ 0 ፣ 255 ፣ 0 ፣ 1000); ግ /= 1000; ድርብ ቢ = ካርታ (ሰማያዊ ፣ 0 ፣ 255 ፣ 0 ፣ 1000); ቢ /= 1000; R = (R> 0.04045f)? ዱቄት ((R + 0.055f) / (1.0f + 0.055f) ፣ 2.4f): (R / 12.92f); G = (G> 0.04045f)? ዱቄት ((G + 0.055f) / (1.0f + 0.055f) ፣ 2.4f): (G / 12.92f); ቢ = (ለ> 0.04045 ኤፍ)? ዱቄት ((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); } ባዶነት sendtoHue (ድርብ ሀ ፣ ድርብ ለ) {// ትክክለኛ የቀለም ለውጥ ከ wand አስማት ((መጀመሪያ) ከሆነ {// መጀመሪያ ማለፊያ - የአሁኑን መብራት ሁኔታ getCurrentValues () ያግኙ); } // ከዚያ አስማታዊ ዘንግ ቀለሞችን ይላኩ: // ፊደል ይጠብቁ: ረጅም ጊዜ ይጠብቁ; x_magic = ሀ; y_magic = ለ; // መብራት በአስማት ዋድ ቀለም ውስጥ: ምላሽ = ""; int temp = የዘፈቀደ (2, 9); const char* state = "true"; ለ (int i = 1; i <= temp; i ++) {// ወደ ድልድይ ለመላክ የቻር ድርድርን ይፍጠሩ - ሕብረቁምፊ temp_body1 = "{" on / ":" + String (state) + ", \" bri / ": 220 ፣ / "xy \": [" + String (x_magic) +", " + String (y_magic) +"], / "የሽግግር ጊዜ \": 1} "; int str_len1 = temp_body1.length () + 1; ቻር post_body1 [str_len1]; temp_body1.toCharArray (post_body1 ፣ str_len1) ፤ // አሁን እኛ post_body1 እንደ ቻር ድርድር አለን ፤ // የእረፍት ጥሪ ያድርጉ - int statusCodePut1 = client.put ("/api/የእርስዎ HUE API USERNAME/lights/የእርስዎ LIGHT NUMBER/state" ፣ post_body1 እና ምላሽ) ፤ ይጠብቁ = በዘፈቀደ (100 ፣ 600); መዘግየት (ይጠብቁ); ከሆነ (ሁኔታ == "እውነተኛ") {state = "false"; } ሌላ {state = "true"; }} // ብሩህነትን ይቀንሱ…: response = ""; ቴምፕ = በዘፈቀደ (4, 17); // ወደ ድልድይ ለመላክ ቻር ድርድርን ይፍጠሩ - ሕብረቁምፊ temp_body2 = "{" on / ": true, \" bri / ": 154, \" transitiontime / ":" + String (temp) + "}"; int str_len2 = temp_body2.length () + 1; ቻር post_body2 [str_len2]; temp_body2.toCharArray (post_body2 ፣ str_len2) ፤ // አሁን እኛ post_body2 እንደ ቻር ድርድር አለን ፤ // የእረፍት ጥሪ ያድርጉ - int statusCodePut2 = client.put ("/api/የእርስዎ HUE API USERNAME/lights/የእርስዎ LIGHT NUMBER/state" ፣ post_body2 እና ምላሽ) ፤ ይጠብቁ = በዘፈቀደ (1000 ፣ 2500); መዘግየት (ይጠብቁ); //.. እና እንደገና ብሩህ ያድርጉ - ምላሽ = ""; ቴምፕ = በዘፈቀደ (4, 17); // ወደ ድልድይ ለመላክ የቻር ድርድርን ይፍጠሩ - ሕብረቁምፊ temp_body3 = "{" bri_inc / ": 100, \" transitiontime / ":}"; int str_len3 = temp_body3.length () + 1; ቻር post_body3 [str_len3]; temp_body3.toCharArray (post_body3 ፣ str_len3) ፤ // አሁን እኛ post_body3 እንደ ቻር ድርድር አለን ፤ // የእረፍት ጥሪ ያድርጉ - int statusCodePut3 = client.put ("/api/የእርስዎ HUE API USERNAME/lights/your LIGHT NUMBER/state" ፣ post_body3 ፣ and response); ይጠብቁ = በዘፈቀደ (2500 ፣ 5000); // ከ2-5 ሰከንዶች መዘግየት ይጠብቁ (ይጠብቁ); // እና ወደ አሮጌ እሴት ይመለሱ: ምላሽ = ""; // ወደ ድልድይ ለመላክ የቻር ድርድርን ይፍጠሩ - ሕብረቁምፊ temp_body4 = "{" on / ":" + String (aan_restore) + ", \" bri / ":" + String (bri_restore) + ", \" xy / ": [" + String (x_restore) +", " + String (y_restore) +"], / "የሽግግር ጊዜ \": " + String (20) +"} "; int str_len4 = temp_body4.length () + 1; ቻር 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 ፣ and response) ፤ ESP.deepSleep (0); // እንደገና ይተኛል… } ያልተፈረመ int getCurrentValues () {connectWifi () ፤ // መጀመሪያ ከ Wifi ምላሽ = "" ጋር ይገናኙ; // የእረፍት ጥሪ ያድርጉ - int statusCodeGet = client.get ("/api/Your HUE API USERNAME/lights/የእርስዎ LIGHT NUMBER" ፣ & response); Serial.print ("ከ GET በኋላ የአገልጋይ ሁኔታ ኮድ"); Serial.println (statusCodeGet); Serial.print ("ምላሽ አካል ከአገልጋይ:"); Serial.println (ምላሽ); StaticJsonBuffer jsonBuffer; // የጄሰን ምላሽ በመተርጎም // የነገር ዛፍ ሥር። // // እሱ ለጄንሰን ነገር ማጣቀሻ ነው ፣ ትክክለኛው ባይቶች ከሌሎች የነገሮች ዛፍ አንጓዎች ጋር በ // 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 = ግዛት ["xy"] [0]; y_restore = state ["xy"] [1]; first = false;} ባዶነት connectWifi () {// አካባቢያዊ ፈጠራ)።አንዴ ሥራው ከተጠናቀቀ በኋላ በ WiFiManager wifiManager ዙሪያ ማቆየት አያስፈልግም። // ቅንብሮችን ዳግም ያስጀምሩ - ለሙከራ //wifiManager.resetSettings (); // ከቀዳሚው WiFi ጋር ሲገናኝ የሚጠራውን መልሶ ጥሪ ያዘጋጁ እና ወደ የመድረሻ ነጥብ ሁኔታ wifiManager.setAPCallback (configModeCallback) ይገባል ፤ // ssid አምጥቶ ያልፋል እና ለመገናኘት ይሞክራል // ካልተገናኘ ከተጠቀሰው ስም ጋር የመዳረሻ ነጥብ ይጀምራል // እዚህ “AutoConnectAP” // እና (! wifiManager.autoConnect ()) {Serial.println ("መገናኘት እና የእረፍት ጊዜ መምታት አልተሳካም"); // ዳግም አስጀምር እና እንደገና ሞክር ፣ ወይም ምናልባት ወደ ጥልቅ እንቅልፍ አስገባ ESP.reset (); መዘግየት (1000); } // እዚህ ከደረሱ ከ WiFi Serial.println ("ተገናኝቷል… yeey:)") ጋር ተገናኝተዋል ፤ Serial.print ("ተገናኝቷል ከ"); Serial.println (WiFi. SSID ()); Serial.print ("IP address:"); Serial.println (WiFi.localIP ()); // ለእርስዎ ESP (ዌሞስ) የተመደበ የአይፒ አድራሻ // የተቀበለውን የምልክት ጥንካሬ ማተም - ረጅም rssi = WiFi. RSSI (); Serial.print ("የምልክት ጥንካሬ (RSSI):"); Serial.println (rssi); } ባዶ configModeCallback (WiFiManager * myWiFiManager) {Serial.println («የቅንብር ሁነታ ገብቷል»); Serial.println (WiFi.softAPIP ()); // በራስ-ሰር የተፈጠረ SSID ን ከተጠቀሙ Serial.println (myWiFiManager-> getConfigPortalSSID ()) ን ያትሙት ፤ }

የሚመከር: