ዝርዝር ሁኔታ:

የአርዱዲኖ LED ሙድ ኩብን ማሻሻል (ቀላል) (ቪዲዮ ተካትቷል) - 4 ደረጃዎች
የአርዱዲኖ LED ሙድ ኩብን ማሻሻል (ቀላል) (ቪዲዮ ተካትቷል) - 4 ደረጃዎች

ቪዲዮ: የአርዱዲኖ LED ሙድ ኩብን ማሻሻል (ቀላል) (ቪዲዮ ተካትቷል) - 4 ደረጃዎች

ቪዲዮ: የአርዱዲኖ LED ሙድ ኩብን ማሻሻል (ቀላል) (ቪዲዮ ተካትቷል) - 4 ደረጃዎች
ቪዲዮ: On/OFF LED using Arduino Programming Full Video Basic To Advanced Languages #onoffledusingarduino 2024, ሀምሌ
Anonim
የአርዱዲኖ LED ሙድ ኩብን ማሻሻል (ቀላል) (ቪዲዮ ተካትቷል)
የአርዱዲኖ LED ሙድ ኩብን ማሻሻል (ቀላል) (ቪዲዮ ተካትቷል)

በ ‹ጆሮ› የተፈጠረውን የ LED አነስተኛ የስሜት ኩብ ፕሮጀክት ከተመለከትኩ በኋላ የተሻሻለ የ LED ሙድ ኩብ ስሪት ለማድረግ ወሰንኩ። የእኔ ስሪት ከመጀመሪያው የበለጠ የተወሳሰበ ይሆናል ፣ ምክንያቱም ከመጀመሪያው ትንሽ በመጠኑ ይበልጣል ፣ ከዋናው ኪዩብ ጋር ሲወዳደሩ ሁለት ተጨማሪ ቀለሞች ይኖሩታል (ቢጫ እና ነጭ ተጨምሯል) ፣ ማለቂያ የሌለው የቀለም ሽክርክሪት መጠን ፣ ወዘተ. የ LED መብራቶችን ከሽቦዎች ጋር በማገናኘት ጽንሰ -ሀሳቡን ለተረዱ ሰዎች የ LED መብራቶችን ተጨማሪ አጠቃቀም ላይ ለመለማመድ ጥሩ ፕሮጀክት መሆን አለበት።

ደረጃ 1: ቁሳቁሶች

ቁሳቁሶች
ቁሳቁሶች
ቁሳቁሶች
ቁሳቁሶች

ይህንን ሙድ ኩብ ለመሥራት የሚያስፈልጉዎት አንዳንድ ቁሳቁሶች እዚህ አሉ

  • የዳቦ ሰሌዳ
  • አርዱዲኖ - (እዚህ ሊዮናርዶ አለኝ)
  • የአርዱዲኖ የኃይል አቅርቦት / የዩኤስቢ ገመድ
  • የዳቦ ሰሌዳ
  • ዝላይ ሽቦዎች (ብዙ ፣ 29 ሽቦዎችን እጠቀም ነበር)
  • ቀይ LED x 2
  • ሰማያዊ LED x 2
  • አረንጓዴ LED x 2
  • ቢጫ LED x 2
  • ነጭ LED x 1
  • 9 ተከላካዮች
  • የዳቦ ሰሌዳውን ለመገጣጠም ትልቅ ሳጥን (የጫማ ሣጥን እጠቀም ነበር)
  • የመገልገያ ቢላዋ
  • ወረቀት

ደረጃ 2 ኮድ

እዚህ ለተሰጠው ኮድ አንዳንድ ማብራሪያ-

የፕሮጀክቱ አርታኢ እነዚህን ኮዶች እንደፈጠረው የኮዶች ክሬዲት ወደ የእኔ ፕሮጀክት የመጀመሪያ ምንጭ ይሄዳል። አንዳንዶቹን የበለጠ ውስብስብ በማድረግ ብቻ አሻሽያቸዋለሁ። በአንዳንድ ኮዶች መጨረሻ ላይ // 改 ሊያዩ ይችላሉ። ይህ ማለት ይህ ኮድ በእኔ አርትዖት የተደረገ ነው ፣ ስለሆነም ከመጀመሪያው ምንጭዬ የተለየ ነው።

እኔ ደግሞ በአርዱዲኖ ፈጣሪ ላይ የኮዱ ስሪት አለኝ።

/* ለ 3 LEDs ፣ ቀይ ፣ አረንጓዴ እና ሰማያዊ (አርጂቢ) ተሻጋሪ እየጠፋ የሚሄድ ኮድ (ፋሽን) ፣ ሁለት ነገሮችን ማድረግ ያስፈልግዎታል-1. እንዲታዩ የሚፈልጓቸውን ቀለሞች ይግለጹ 2. እንዲደበዝዙ የሚፈልጉትን ቅደም ተከተል ይዘርዝሩ።

ቀለም መግለፅ -

አንድ ቀለም ቀይ ፣ አረንጓዴ እና ሰማያዊ LED ን የሚቆጣጠር የሶስት መቶኛ ፣ 0-100 ድርድር ብቻ ነው

ቀይ ቀይ ፣ ሙሉ በሙሉ ሰማያዊ እና አረንጓዴ ጠፍቷል

int red = {100, 0, 0} ዲም ነጭ ሶስቱም ኤልኢዲዎች በ 30% int dimWhite = {30, 30, 30} ወዘተ.

አንዳንድ የተለመዱ ቀለሞች ከዚህ በታች ቀርበዋል ፣ ወይም እራስዎ ያድርጉት

ትዕዛዙን መዘርዘር ፦

በፕሮግራሙ ዋና ክፍል ውስጥ ቀለሞች እንዲታዩ የሚፈልጉትን ቅደም ተከተል መዘርዘር ያስፈልግዎታል ፣ ለምሳሌ። CrossFade (ቀይ); CrossFade (አረንጓዴ); crossFade (ሰማያዊ);

እነዚያ ቀለሞች እየደመሰሱ በዚያ ቅደም ተከተል ይታያሉ

አንድ ቀለም እና ወደ ቀጣዩ

በተጨማሪም ፣ ሊያስተካክሏቸው የሚችሏቸው 5 አማራጭ ቅንብሮች አሉ-

1. የመጀመሪያው ቀለም ወደ ጥቁር ተቀናብሯል (ስለዚህ የመጀመሪያው ቀለም ይደበዝዛል) ፣ ግን የመጀመሪያውን ቀለም ማንኛውንም ሌላ ቀለም እንዲሆን ማቀናበር ይችላሉ። 2. የውስጥ ሽክርክሪት ለ 1020 ድግግሞሽ ይሠራል። የ ‹ተጠባቂ› ተለዋዋጭ የአንድን መስቀለኛ መንገድ ግምታዊ ቆይታ ያዘጋጃል። በንድፈ ሀሳብ ፣ የ 10 ሚሴ ‹መጠበቅ› የ ‹10 ሰከንዶች ›መስቀልን ማጥፋት አለበት። በተግባር ፣ ሌሎች ተግባራት ኮዱ በዝግታ እያከናወነ ያለው በቦርዱ ላይ እስከ 11 ሰከንዶች ድረስ ነው። YMMV። 3. ‹መድገም› ወደ 0 ከተዋቀረ ፕሮግራሙ ላልተወሰነ ጊዜ ይሽከረከራል። ወደ ቁጥር ከተዋቀረ ያን ቁጥር ያንሸራትታል ፣ ከዚያ በቅደም ተከተል በመጨረሻው ቀለም ላይ ያቁሙ። ('ተመለስ' ን ወደ 1 ያዋቅሩ ፣ እና በመጨረሻው እንዲጠፋ ከፈለጉ የመጨረሻውን ቀለም ጥቁር ያድርጉት።) 4. አንድ አማራጭ 'ያዝ' ተለዋዋጭ አለ ፣ ይህም አንድ ቀለም በሚሆንበት ጊዜ 'ለያዙ' ሚሊሰከንዶች ፕሮግራሙን የሚያስተላልፍ ተጠናቋል ፣ ግን የሚቀጥለው ቀለም ከመጀመሩ በፊት። 5. የማረም ውጤት ወደ ተከታታይ ሞኒተር እንዲላክ ከፈለጉ የ DEBUG ባንዲራውን ወደ 1 ያዘጋጁ።

የፕሮግራሙ ውስጣዊ አካላት ውስብስብ አይደሉም ፣ ግን እነሱ

ትንሽ ተበሳጭተዋል - የውስጥ አሠራሩ ከዋናው ዑደት በታች ተብራርቷል።

ኤፕሪል 2007 ፣ ሸክላ ሽርኪ

*

/ ውፅዓት

int ylwPin = 5; // ቢጫ LED ፣ ከዲጂታል ፒን 5 // 改 int redPin = 6 ጋር ተገናኝቷል። // ቀይ LED ፣ ከዲጂታል ፒን 6 // 改 int grnPin = 7 ጋር ተገናኝቷል። // አረንጓዴ LED ፣ ከዲጂታል ፒን 7 // 改 int bluPin = 8 ጋር ተገናኝቷል። // ሰማያዊ LED ፣ ከዲጂታል ፒን 8 // 改 int whiPin = 9 ጋር ተገናኝቷል። // ነጭ LED ፣ ከዲጂታል ፒን 9 // 改 int ylwPin2 = 10 ጋር ተገናኝቷል። // ቢጫ LED ፣ ከዲጂታል ፒን 10 // 改 int redPin2 = 11 ጋር ተገናኝቷል። // ቀይ LED ፣ ከዲጂታል ፒን 11 // 改 int grnPin2 = 12 ጋር ተገናኝቷል። // አረንጓዴ LED ፣ ከዲጂታል ፒን 12 // 改 int bluPin2 = 13 ጋር ተገናኝቷል። // ሰማያዊ LED ፣ ከዲጂታል ፒን 13 // connected ጋር ተገናኝቷል

// የቀለም ድርድሮች

int black [9] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; // 改 int white [9] = {100, 100, 100, 100, 100, 100, 100, 100, 100, 100}; // 改 int red [9] = {0, 0, 100, 0, 0, 0, 100, 0, 0}; // 改 int green [9] = {0, 100, 0, 0, 0, 0, 0, 100, 0}; // 改 int ሰማያዊ [9] = {0, 0, 0, 100, 0, 0, 0, 0, 100} ፤ // 改 int yellow [9] = {100, 0, 0, 0, 0, 100, 0, 0, 0}; // 改 int purple [9] = {0, 50, 0, 50, 0, 0, 50, 0, 50}; // 改 int orange [9] = {50, 50, 0, 0, 0, 50, 50, 0, 0}; // 改 int pink [9] = {0, 50, 0, 0, 50, 0, 0, 50, 0,}; // 改 // ወዘተ

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

int redVal = ጥቁር [0]; int grnVal = ጥቁር [1]; int bluVal = ጥቁር [2]; int ylwVal = ጥቁር [3]; // 改 int whiVal = ጥቁር [4]; // 改

int wait = 15; // 10ms ውስጣዊ የመስቀል መዘግየት; ለዝግታ ጠቋሚዎች ጭማሪ // 改

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

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

int prevR = redVal; int prevG = grnVal; int prevB = bluVal; int prevY = ylwVal; int prevW = whiVal; // 改

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

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

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

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

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

ባዶነት loop () {crossFade (ቀይ); CrossFade (አረንጓዴ); crossFade (ሰማያዊ); CrossFade (ቢጫ); crossFade (ነጭ); CrossFade (ሮዝ); CrossFade (ሐምራዊ); crossFade (ብርቱካናማ);

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

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

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

ፕሮግራሙ እንደዚህ ይሠራል

ቀይ LED ን ከ 0-10 ፣ አረንጓዴውን ከ 0-5 ፣ እና ሰማያዊውን ከ 10 እስከ 7 ፣ በአሥር ደረጃዎች የሚያንቀሳቅስ የመስቀለኛ መንገድን ያስቡ። 10 ደረጃዎችን መቁጠር እና የቀለም እሴቶችን በእኩል ደረጃ በደረጃ መጨመር ወይም መቀነስ እንፈልጋለን። አስቡት አንድ + ዋጋን በ 1 ማሳደግን ያመለክታል ፣ እና ሀ - ዝቅ ከማድረግ ጋር እኩል ነው። የእኛ የ 10 እርምጃ መውደቅ እንደዚህ ይመስላል

1 2 3 4 5 6 7 8 9 10

አር + + + + + + + + + + ጂ + + + + + ቢ - - -

ቀይው በአስር ደረጃዎች ከ 0 ወደ 10 ፣ አረንጓዴው ከ

0-5 በ 5 ደረጃዎች ፣ እና ሰማያዊው በሶስት ደረጃዎች ከ 10 ወደ 7 ይወድቃል።

በእውነተኛው ፕሮግራም ውስጥ የቀለም መቶኛዎች ወደ ይለወጣሉ

0-255 እሴቶች ፣ እና 1020 ደረጃዎች (255*4) አሉ።

በአንድ ወይም ከዚያ በላይ መካከል አንድ እርምጃ ምን ያህል ትልቅ መሆን እንዳለበት ለማወቅ

በአንደኛው የ LED እሴቶች ላይ ወደ ታች ምልክት ማድረጊያ ፣ እኛ በጅማሬ እና በመጨረሻ እሴቶች መካከል ያለውን ፍጹም ክፍተት ያሰላል እና ስሌት ስቴፕ () ብለን እንጠራዋለን ፣ ከዚያም በእሴቱ ውስጥ ባሉ ማስተካከያዎች መካከል የእርምጃውን መጠን ለመወሰን ያንን ክፍተት በ 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 ቀለም ) {// 改

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

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

int stepG = ስሌት ደረጃ (prevG ፣ G); int stepB = ስሌት ደረጃን (prevB ፣ B); int stepY = ስሌት ደረጃን (ቀዳሚ ፣ ያ); // 改 int stepW = ስሌት ደረጃን (prevW ፣ W); // 改

ለ (int i = 0; i <= 1020; i ++) {redVal = calculaVal (stepR ፣ redVal ፣ i); grnVal = ቫል ያሰሉ (stepG ፣ grnVal ፣ i); bluVal = calculaVal (stepB, bluVal, i); ylwVal = ማስላት ቫል (stepY, ylwVal, i); // 改 whiVal =Val ን ያሰላል (stepW ፣ whiVal ፣ i); // 改

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

አናሎግ ፃፍ (grnPin ፣ grnVal); analogWrite (bluPin ፣ bluVal); አናሎግ ፃፍ (ylwPin ፣ ylwVal); // 改 አናሎግ ፃፍ (whiPin ፣ whiVal); // 改 አናሎግ ፃፍ (grnPin2 ፣ grnVal); // 改 አናሎግ ፃፍ (bluPin2 ፣ bluVal); // 改 አናሎግ ፃፍ (ylwPin2 ፣ ylwVal); // 改 አናሎግ ፃፍ (redPin2 ፣ redVal); // 改

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

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

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

ደረጃ 3: ያዋቅሩ

አዘገጃጀት
አዘገጃጀት
አዘገጃጀት
አዘገጃጀት
አዘገጃጀት
አዘገጃጀት
  1. የዳቦ ሰሌዳውን ያግኙ።
  2. የ LED መብራት እንዲያበራ ሽቦዎችን የማገናኘት ማሳያ

    1. ኤልዲውን በዳቦ ሰሌዳው ላይ ያድርጉት። ረዥሙን ጫፍ በግራ በኩል እና አጠር ያለውን ጫፍ በቀኝ በኩል ያስቀምጡ።
    2. ከዝርዝሩ ረዘም ያለ የ LED ጫፍ ጋር በተመሳሳይ ረድፍ ላይ ባለ ቦታ ላይ የጁምፐር ሽቦ አንድ ጫፍ ያስቀምጡ። ሌላውን ጫፍ በዲጂታል PWM ክፍል ላይ ያድርጉት። ኮዱ ቢጫ LED ዎች ከ 10 እና 5 ጋር ፣ ቀይ ወደ 6 እና 11 ፣ ሰማያዊ ወደ 8 እና 13 ፣ አረንጓዴ ወደ 7 እና 12 ፣ እና በመጨረሻም ነጭ LED ወደ 9 እንዲገናኙ ይገልጻል።
    3. ከኤዲዲው አጭር ጫፍ ጋር በተመሳሳይ ረድፍ ላይ የተቃዋሚውን አንድ ጫፍ ያስቀምጡ። ሌላውን ጫፍ በአቅራቢያ ባለ ቦታ ላይ ያድርጉት።
    4. ከኤዲዲው አጭር ጫፍ ጋር በአንድ ረድፍ ላይ ከሌለው ከተቃዋሚው መጨረሻ ጋር ተመሳሳይ ረድፍ ያለው የሌላ ዝላይ ሽቦ መጨረሻ ያስቀምጡ። ሌላውን የሽቦውን ጫፍ በአሉታዊ የክፍያ ረድፍ ላይ ያድርጉት።
    5. በአሉታዊ የክፍያ ረድፍ ላይ ሌላ ሌላ የመዝጊያ ሽቦን ጫፍ ያስቀምጡ እና ሌላውን ጫፍ በ GND ላይ ያድርጉት።
  3. 9 LED ዎች እንዲያበሩ ስለሚፈልጉ ደረጃ 2 ን ለ 8 ጊዜ ይድገሙት
  4. የዳቦ ሰሌዳውን በሳጥኑ ውስጥ ያስቀምጡ። ጥቂት አስታዋሾች እዚህ አሉ

    1. የኃይል አቅርቦትን እጠቀም ነበር። በሳጥኑ ውስጥ ለማለፍ እና ከዳቦ ሰሌዳ ጋር ለመገናኘት የመገልገያ ቢላዋ በመጠቀም ለሽቦዎችዎ ትንሽ ቀዳዳ ይፍጠሩ።
    2. ሳጥኑ እንደተከፈተ አንድ ጎን መሆኑን ያረጋግጡ። የጫማ ሣጥን ቀድሞውኑ ክፍት የሆነ አንድ ጎን አለው። ሳጥኑ ሙሉ በሙሉ ከተዘጋ ክፍት ቦታ ለመሥራት ከሳጥኑ አንድ ጎን ይቁረጡ።
    3. በወረቀት ምንም በሌለበት ጎኑን ይሸፍኑ። ይህ የ LED መብራቶች በወረቀት እንዲያበሩ ነው።

የሚመከር: