ዝርዝር ሁኔታ:

የ LED Spiral Tree: 4 ደረጃዎች (ከስዕሎች ጋር)
የ LED Spiral Tree: 4 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: የ LED Spiral Tree: 4 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: የ LED Spiral Tree: 4 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: 220v ከ 12v የመኪና ተለዋጭ ከሶላር ፓነል ጋር 2024, ሀምሌ
Anonim
የ LED ጠመዝማዛ ዛፍ
የ LED ጠመዝማዛ ዛፍ
የ LED ጠመዝማዛ ዛፍ
የ LED ጠመዝማዛ ዛፍ
የ LED ጠመዝማዛ ዛፍ
የ LED ጠመዝማዛ ዛፍ

ሁሉንም ዓይነት የ LED ሰቆች እወዳለሁ። ከእነሱ ጋር ጥሩ የቀስተ ደመና ብርሃን አደረግሁ። አድራሻ የሌላቸው እንኳ ጠቃሚ ናቸው። ከብርብርብ የጎድን አጥንቶች ጋር በማያያዝ ደማቅ የገበያ ጃንጥላ ከቤት ውጭ ብርሃን አደረግሁ። ስለዚህ ጠመዝማዛ ዛፌ ሲነፍስ አንድ ርዝመት ያለው የሊድ ስትሪፕ ለመጠቅለል ወሰንኩ።

ደረጃ 1 ተቆጣጣሪ

ተቆጣጣሪ
ተቆጣጣሪ
ተቆጣጣሪ
ተቆጣጣሪ
ተቆጣጣሪ
ተቆጣጣሪ

አድራሻ የማይሰጡ የ RGB ሌዲዎችን ለመጠቀም ወሰንኩ። ይህ ማለት እኔ በፕሮግራም የተቀረፀ ውጤት ሊኖረው እችላለሁ ግን ሁሉም ሊድዎች በአንድ ጊዜ ቀለማቸውን ይለውጣሉ። ይህ ማለት ተቆጣጣሪ ያስፈልጋል ማለት ነው። እኔ አርዱዲኖን አንድ ተጠቅሜ የ RGB ጋሻ በመጠቀም የመጀመሪያ ሙከራዎችን ለማድረግ እችል ነበር ነገር ግን በባዶ Atmega328 ቺፕ ብጁ ነጠላ ሰሌዳ በመጠቀም አጠናቅቄአለሁ። የዒላማውን ፕሮግራም አድራጊ መቀየር እና ቺፕውን በቀጥታ ማቀድ ብቻ ነበር።

ከሌሎች የመብራት ፕሮጄክቶች የተረፉት እነዚህ ሰሌዳዎች በብዛት ነበሩኝ። በምትኩ ጃንጥላዬ ላይ እንዳደረግሁት በርካሽ የመስመር ውስጥ ቅድመ -መርሃ ግብር መቆጣጠሪያን ለመጠቀም ነፃነት ይሰማዎት።

እኔ የዛፉ መሠረት እንደመሆኑ መጠን ዘገምተኛ የመስቀለኛ መንገድ ማሳያን በመጠቀም አበቃሁ።

/** ለ 3 LEDs ፣ ቀይ ፣ አረንጓዴ እና ሰማያዊ (አርጂቢ) * የሚደበዝዝ ኮድ * ፋዳዎችን ለመፍጠር ሁለት ነገሮችን ማድረግ አለብዎት * * 1. እንዲታዩ የሚፈልጓቸውን ቀለሞች ይግለጹ * 2. የሚፈልጉትን ቅደም ተከተል ይዘርዝሩ እነሱ እንዲደበዝዙ * * ቀለምን መግለፅ: * አንድ ቀለም የሶስት መቶኛ ድርድር ብቻ ነው ፣ 0-100 ፣ * ቀይ ፣ አረንጓዴ እና ሰማያዊ ኤልኢዲዎችን መቆጣጠር * * ቀይ ሙሉው ቀይ LED ፣ ሰማያዊ እና አረንጓዴ ጠፍቷል * int red = {100, 0, 0} * ዲም ነጭ ሶስቱም ኤልኢዲዎች በ 30% * int dimWhite = {30, 30, 30} * ወዘተ * * አንዳንድ የተለመዱ ቀለሞች ከዚህ በታች ቀርበዋል ፣ ወይም የራስዎን * * ዝርዝሩን በመዘርዘር ትዕዛዝ * በፕሮግራሙ ዋና ክፍል ውስጥ ቀለሞች እንዲታዩ የሚፈልጉትን ትዕዛዝ * መዘርዘር ያስፈልግዎታል ፣ ለምሳሌ * crossFade (ቀይ); * crossFade (አረንጓዴ); * crossFade (ሰማያዊ); * * እነዚያ ቀለሞች በዚያ ቅደም ተከተል ይታያሉ ፣ ከ * አንድ ቀለም እየደበዘዙ ወደ ቀጣዩ * * በተጨማሪም ፣ ሊያስተካክሉዋቸው የሚችሏቸው 5 አማራጭ ቅንብሮች አሉ - * 1. የመጀመሪያው ቀለም ወደ ጥቁር ተቀናብሯል (ስለዚህ የመጀመሪያው ቀለም ይጠፋል) ውስጥ) ፣ ግን * የመጀመሪያውን ቀለም ማንኛውንም ሌላ ቀለም እንዲሆን ማቀናበር ይችላሉ * 2. የውስጠኛው ሉፕ ለ 1020 ግንኙነቶች ይሠራል። የ ‹ተጠባቂ› ተለዋዋጭ * የአንድን መስቀለኛ መንገድ ግምታዊ ቆይታ ያዘጋጃል። በንድፈ ሀሳብ ፣ * የ ‹10 ms› ‹መጠበቅ› የ ‹10 ሰከንዶች ›መስቀልን ማጥፋት አለበት። በ * ልምምድ ውስጥ ፣ ሌሎች ተግባሮች ኮዱ ይህንን በዝግታ እያከናወነ ነው * በቦርዱ ላይ እስከ 11 ሰከንዶች ድረስ። YMMV። * 3. ‹መድገም› ወደ 0 ከተዋቀረ ፕሮግራሙ ላልተወሰነ ጊዜ ይሽከረከራል። * ወደ ቁጥር ከተዋቀረ ያን ያህል ጊዜ ያሽከረክራል ፣ * ከዚያም በቅደም ተከተል በመጨረሻው ቀለም ላይ ያቁሙ። ('ተመለስ' ን ወደ 1 ፣ * ያዋቅሩት እና መጨረሻው እንዲጠፋ ከፈለጉ የመጨረሻውን ቀለም ጥቁር ያድርጉት።) * 4. አማራጭ 'ያዝ' ተለዋዋጭ አለ ፣ ይህም * ፕሮግራሙን ለ ‹ያዝ› ሚሊሰከንዶች በሚሸሽግበት ጊዜ አንድ ቀለም ተጠናቅቋል ፣ * ግን ቀጣዩ ቀለም ከመጀመሩ በፊት። * 5. የማረም ውፅዓት * ወደ ተከታታይ ሞኒተር እንዲላክ ከፈለጉ የ DEBUG ባንዲራውን ወደ 1 ያዘጋጁ። * * የፕሮግራሙ ውስጣዊ አካላት የተወሳሰቡ አይደሉም ፣ ግን እነሱ * ትንሽ ተበሳጭተዋል - የውስጥ አሠራሩ ከዋናው ዑደት በታች ተብራርቷል። * * ኤፕሪል 2007 ፣ ሸክላ ሸርኪ *

/ ውፅዓት

int grnPin = 9; // አረንጓዴ LED ፣ ከዲጂታል ፒን 10 int redPin = 10 ጋር ተገናኝቷል። // ቀይ LED ፣ ከዲጂታል ፒን 9 int bluPin = 11 ጋር ተገናኝቷል። // ሰማያዊ LED ፣ ከዲጂታል ፒን 11 ጋር ተገናኝቷል

// የቀለም ድርድሮች

int ጥቁር [3] = {0, 0, 0}; int ነጭ [3] = {100 ፣ 100 ፣ 100}; int red [3] = {100, 0, 0}; int አረንጓዴ [3] = {0, 100, 0}; int ሰማያዊ [3] = {0, 0, 100}; int ቢጫ [3] = {40, 95, 0}; int dimWhite [3] = {30, 30, 30}; // ወዘተ

// የመጀመሪያ ቀለም ያዘጋጁ

int redVal = ጥቁር [0]; int grnVal = ጥቁር [1]; int bluVal = ጥቁር [2];

int wait = 3; // 10ms ውስጣዊ የመስቀል መዘግየት; ለዝግታ ጭማሪዎች መጨመር

int hold = 0; // አንድ ቀለም ሲጠናቀቅ አማራጭ መያዝ ፣ ከሚቀጥለው መስቀል በፊት ‹FAD int DEBUG = 0 ›; // ዕደላ ቆጣሪ; ወደ 1 ከተዋቀረ እሴቶችን በተከታታይ int loopCount = 60 በኩል ይጽፋል። // ደባቡ ለምን ያህል ጊዜ ሪፖርት ማድረግ አለበት? int መድገም = 0; // ከማቆማችን በፊት ምን ያህል ጊዜ ማዞር አለብን? (0 ያለማቆም) int j = 0; // ለመድገም ሉፕ ቆጣሪ

// የቀለም ተለዋዋጮችን ያስጀምሩ

int prevR = redVal; int prevG = grnVal; int prevB = bluVal;

// የ LED ውጤቶችን ያዘጋጁ

ባዶነት ማዋቀር () {pinMode (redPin ፣ OUTPUT); // ፒኖችን እንደ የውጤት ፒን ሞዶ (grnPin ፣ OUTPUT) ያዘጋጃል ፤ pinMode (bluPin ፣ OUTPUT);

ከሆነ (ማረም) {// ለማረም እሴቶችን ማየት ከፈለግን…

Serial.begin (9600); //… ተከታታይ መውጫውን ያዋቅሩ}}

// ዋና ፕሮግራም -የመስቀለኛ መንገዶችን ቅደም ተከተል ይዘርዝሩ

ባዶነት loop () {crossFade (ቀይ); CrossFade (አረንጓዴ); crossFade (ሰማያዊ); CrossFade (ቢጫ);

ከሆነ (ይድገሙት) {// የተወሰነ ጊዜን እናዞራለን?

j += 1; ከሆነ (j> = መድገም) {// ገና እዚያ ነን? መውጫ (j); // ከሆነ ያቁሙ። }}}

/* ከታች ይህ መስመር ሂሳብ ነው - ለመሠረታዊ ነገሮች ይህንን መለወጥ አያስፈልግዎትም

* * ፕሮግራሙ እንደዚህ ይሠራል- * ቀይ LED ን ከ 0-10 ፣ አረንጓዴውን ከ 0-5 ፣ ሰማያዊውን ከ 10 እስከ 7 ፣ * በአሥር ደረጃዎች የሚያንቀሳቅስ የመስቀለኛ መንገድን በዓይነ ሕሊናህ ይታይህ። * 10 ደረጃዎቹን መቁጠር እና በእኩል ደረጃ በደረጃ ደረጃዎች የቀለም እሴቶችን መጨመር ወይም * መቀነስ እንፈልጋለን። * አስቡት አንድ + ዋጋን በ 1 ማሳደግን ያመለክታል ፣ እና a - * ዝቅ ከማድረግ ጋር እኩል ነው። የ 10 እርምጃችን መጥፋት እንደዚህ ይመስላል * * 1 2 3 4 5 6 7 8 9 10 * R + + + + + + + + + + + G + + + + + * B - - - * * ቀዩ ከ በአሥር ደረጃዎች ከ 0 እስከ 10 ፣ አረንጓዴው ከ * 0-5 በ 5 እርከኖች ፣ እና ሰማያዊው በሶስት ደረጃዎች ከ 10 ወደ 7 ይወርዳል። * * በእውነተኛ መርሃ ግብር ውስጥ የቀለም መቶኛዎች ወደ * 0-255 እሴቶች ይቀየራሉ ፣ እና 1020 ደረጃዎች (255 * 4) አሉ። * * በአንደኛው የ LED እሴቶች በአንዱ ወደ ላይ ወይም ወደ ታች ምልክት ማድረጉ አንድ ደረጃ ምን ያህል ትልቅ መሆን እንዳለበት ለማወቅ ፣ በጅማሬ እና በመጨረሻ እሴቶች መካከል ያለውን ፍጹም ክፍተት * * እና ከዚያ በኋላ calculaStep () ን እንጠራዋለን ፣ * በእሴቱ ውስጥ ባሉ ማስተካከያዎች መካከል የእርምጃውን * መጠን ለመወሰን ያንን ክፍተት በ 1020 ይከፍላል። */

int calculaStep (int prevValue ፣ int endValue) {

int step = endValue - prevValue; // አጠቃላይ ክፍተቱ ምንድነው? ከሆነ (ደረጃ) {// ዜሮ ካልሆነ ደረጃ = 1020/ደረጃ; // በ 1020 ተከፋፍል} የመመለሻ ደረጃ; }

/* ቀጣዩ ተግባር ቫል ማስላት ነው። የሉፕ እሴት ፣ i ፣

* ለአንዱ * ቀለሞች ተስማሚ የሆነ የእርከን መጠን ላይ ይደርሳል ፣ የዚያ ቀለም ዋጋ በ 1. * ይጨምራል ወይም ይቀንሳል (አር ፣ ጂ እና ቢ እያንዳንዳቸው ለየብቻ ይሰላሉ።) */

int calculaVal (int ደረጃ ፣ int val ፣ int i) {

((ደረጃ) && i % ደረጃ == 0) {// ደረጃ ዜሮ ካልሆነ እና ዋጋን ለመለወጥ ጊዜው ከሆነ ፣

ከሆነ (ደረጃ> 0) {// እርምጃው አዎንታዊ ከሆነ እሴቱን ይጨምሩ… val += 1; } ሌላ ከሆነ (ደረጃ 255) {val = 255; } ሌላ ከሆነ (val <0) {val = 0; } መመለስ ቫል; }

/* crossFade () መቶኛ ቀለሞችን ወደ ሀ ይቀይራል

* 0-255 ክልል ፣ ከዚያ 1020 ጊዜዎችን ያንሸራትቱ ፣ * እሴቱ በየጊዜው መዘመን አለበት የሚለውን በመፈተሽ ፣ ከዚያ የቀለም እሴቶችን ወደ ትክክለኛ ፒኖች ይፃፉ። */

ባዶነት crossFade (int ቀለም [3]) {

// ወደ 0-255 int R = (ቀለም [0] * 255) / 100 ይለውጡ። int G = (ቀለም [1] * 255) / 100; int B = (ቀለም [2] * 255) / 100;

int stepR = ስሌት ደረጃን (ቅድመቭ አር ፣ አር);

int stepG = ስሌት ደረጃ (prevG ፣ G); int stepB = ስሌት ደረጃን (prevB ፣ B);

ለ (int i = 0; i <= 1020; i ++) {redVal = calculaVal (stepR ፣ redVal ፣ i); grnVal = ቫል ያሰሉ (stepG ፣ grnVal ፣ i); bluVal = calculaVal (stepB, bluVal, i);

analogWrite (redPin ፣ redVal); // የአሁኑን እሴቶች ለ LED ፒኖች ይፃፉ

አናሎግ ፃፍ (grnPin ፣ grnVal); analogWrite (bluPin ፣ bluVal);

መዘግየት (ይጠብቁ); // loop ን ከመቀጠልዎ በፊት 'ይጠብቁ' ሚሊሰከንዶች ለአፍታ ያቁሙ

(DEBUG) {// ተከታታይ ውፅዓት ከፈለግን በ

ከሆነ (i == 0 ወይም i % loopCount == 0) {// መጀመሪያ ፣ እና እያንዳንዱ loopCount ጊዜያት Serial.print ("Loop/RGB: #"); Serial.print (i); Serial.print ("|"); Serial.print (redVal); Serial.print (" /"); Serial.print (grnVal); Serial.print (" /"); Serial.println (bluVal); } ማረም += 1; }} // ለሚቀጥለው ዑደት prevR = redVal የአሁኑን እሴቶች ያዘምኑ ፤ prevG = grnVal; prevB = bluVal; መዘግየት (መያዝ); // ዑደቱን ከመቀጠልዎ በፊት ለአማራጭ ‹መጠበቅ› ሚሊሰከንዶች ለአፍታ ያቁሙ}

ደረጃ 2 - ዛፉን መጠቅለል

ዛፉን መጠቅለል
ዛፉን መጠቅለል
ዛፉን መጠቅለል
ዛፉን መጠቅለል
ዛፉን መጠቅለል
ዛፉን መጠቅለል
ዛፉን መጠቅለል
ዛፉን መጠቅለል

እነዚህ ከቤት ውጭ ስለሚሆኑ ውሃ የማይገባባቸው ንጣፎችን እጠቀም ነበር። እነሱ በራሳቸው ተጣብቀዋል ፣ ግን እነሱ እዚያ እንዲቆዩ ለማድረግ በፍጥነት የሽቦ ግንኙነቶችን ተከታትያለሁ። ቀላል እና ቀላል ጠለፋ። የስትሪፕቱ የማሻሻያ ኃይል ችሎታው የኃይል አቅርቦቱን ወደ ታች ለመመገብ እና ኃይልን ከላይ ወደ ኮከቡ ለማውጣት ቀላል አድርጎታል።

ደረጃ 3 - ከላይ ያለውን ኮከብ አይርሱ

ከላይ ያለውን ኮከብ አይርሱ
ከላይ ያለውን ኮከብ አይርሱ
ከላይ ያለውን ኮከብ አይርሱ
ከላይ ያለውን ኮከብ አይርሱ
ከላይ ያለውን ኮከብ አይርሱ
ከላይ ያለውን ኮከብ አይርሱ
ከላይ ያለውን ኮከብ አይርሱ
ከላይ ያለውን ኮከብ አይርሱ

ለኮከቡ የተወሰነ ትኩረት ለማግኘት የ 10 ዋ ቺፕስ ጥንድ እጠቀም ነበር። እንደ ሙቀት ማሞቂያ ወደ መዳብ ወረቀት ሸጥኳቸው። ትንሽ ስለቀረ እኔ ተጨማሪ ሰቅ መጠቀም እችል ነበር።

ደረጃ 4: እሱን መሞከር

Image
Image

የመጀመሪያው ሙከራ የፍጥነት መንገድ በጣም ፈጣን ነበር….

አንዴ ካረጋጋሁት በኋላ በጣም ጥሩ ይመስላል።

የሚመከር: