ዝርዝር ሁኔታ:

የገና ሙዚቃ የደስታ ብርሃን 4 ደረጃዎች
የገና ሙዚቃ የደስታ ብርሃን 4 ደረጃዎች

ቪዲዮ: የገና ሙዚቃ የደስታ ብርሃን 4 ደረጃዎች

ቪዲዮ: የገና ሙዚቃ የደስታ ብርሃን 4 ደረጃዎች
ቪዲዮ: ይህንን አዲስ ዘማሪ በርታ በሉት፡፡ የሚገርም መዝሙር ነው፡፡ /ዲ አቢይ አማን/ Bante Letamene 2024, ህዳር
Anonim
የገና ሙዚቃ የደስታ ብርሃን
የገና ሙዚቃ የደስታ ብርሃን

መልካም ገና! ከእርስዎ ጋር መስተጋብር ሊፈጥር የሚችል የገና ዛፍ እንዲኖርዎት ይፈልጋሉ?

ደረጃ 1 በዚህ ፕሮጀክት ውስጥ ያገለገሉ ነገሮች

የሃርድዌር ክፍሎች

  • Seeeduino V4.2
  • ቤዝ ጋሻ V2
  • ግሮቭ - ሊስተካከል የሚችል የፒአር እንቅስቃሴ ዳሳሽ
  • ግሮቭ - የጩኸት ዳሳሽ
  • ግሮቭ - WS2813 RGB LED Strip Waterproof - 60 LED/m - 1m

የሶፍትዌር መተግበሪያዎች እና የመስመር ላይ አገልግሎቶች

አርዱዲኖ አይዲኢ

ደረጃ 2 የሃርድዌር ግንኙነት

የሃርድዌር ግንኙነት
የሃርድዌር ግንኙነት

የፒአር ዳሳሽ ፣ የጩኸት ዳሳሽ እና የ LED ን ወደ ቤዝ ጋልድ ወደብ D2 ፣ A0 እና D6 ያገናኙ። ቤዝ ጋሻውን ወደ ሴዱዲኖ ይሰኩት ፣ ሁሉም ተከናውኗል።

ደረጃ 3 የሶፍትዌር ፕሮግራም

ከዚህ በታች ያሉት ቤተ -ፍርግሞች ከፕሮግራሙ በፊት መጫን አለባቸው ፣ እባክዎን በእጅዎ ወደ አርዱዲኖ አይዲኢ ያውርዷቸው እና ያስመጡዋቸው ፦

  • መሪ_ስትሪፕ
  • MsTimer2
  • አርዱዲኖ_ቪክተር

ኮዱን የበለጠ አጭር ለማድረግ ፣ እኛ ጠቅልለነዋል። CheerLight ክፍል የዚህ ፕሮጀክት የትግበራ ክፍል ነው።

የክፍል ትግበራ:: CheerLight

: ይፋዊ ትግበራ:: በይነገጽ:: IApplication {public: void setup (ባዶ); ባዶ ባዶ (ባዶ); ባዶነት setPIRSensorPin (uint8_t pin); ባዶ setLoudnessSensorPin (uint8_t pin); ባዶ ልኬት ዳሳሾች (ባዶ); ባዶ ለውጥ አኒሜሽን (ባዶ * አርግ); ባዶ ለውጥ ፍጥነት (ባዶ * አርግ); ባዶ ለውጥ ቀለም (ባዶ * አርግ); የማይንቀሳቀስ መተግበሪያ:: CheerLight * getInstance (ባዶ); የተጠበቀ: ሾፌር:: LEDStrip _ledStrip; ሾፌር:: PIRSensor _pirSensor; ሾፌር:: LoudnessSensor _loudnessSensor; uint8_t _animation; middleware:: ውክልና _ ተገኝቷል ዲሌጌት; middleware:: ውክልና _absoluteLoudnessDelegate; መካከለኛ ዕቃዎች:: ውክልና _ ዘመድ ሎድነት ወኪል; CheerLight (ባዶ); የማይንቀሳቀስ መተግበሪያ:: CheerLight _instance; };

የ CheerLight ክፍል በ Singleton Patterns የተነደፈ ፣ ይህ ማለት ለእሱ አንድ ምሳሌ ብቻ አለ ፣ ለዚያ ምሳሌ CheerLight:: getInstance () ን መደወል ይችላሉ። የእርስዎ ዳሳሾች ግንኙነት ወደ ሃርድዌር ግንኙነት ልዩነት ከሆነ ፣ በ setPIRSensorPin () እና በ setLoudnessSensorPin () ዘዴዎች በመደወል መለወጥ ይችላሉ።

ምስል
ምስል

አነፍናፊዎችን በወቅቱ እንዲለካ ለማድረግ የመለኪያ ሴንሰሮችን () ዘዴን እንዲያቋርጡ እንመክራለን ፣ ነገር ግን ለውጥ አኒሜሽን () ፣ ለውጥ ፍጥነት () ወይም የለውጥ ቀለም () ዘዴዎችን በእጅ መጥራት አስፈላጊ አይደለም። ዳሳሾች በሚለኩበት ጊዜ በልዑካን በኩል ይጠራሉ።

ልዑክ ምንድን ነው?

ሁላችንም እንደምናውቀው የተግባር ጠቋሚ ማወጅ እና በ C ውስጥ ያለውን ተግባር እንዲያመላክት ማድረግ እንችላለን-

ባዶ func1 (ባዶ);

ባዶ (*pFunc) (ባዶ) = func1;

እና እሱ የጠቆመውን ተግባር ለመጥራት ይጠቀሙበት

pFunc ();

ግን በ C ++ ውስጥ ልዩነቶች አሉ ፣ ከዚህ በታች ያለውን ኮድ ለማጠናቀር ከሞከሩ

ክፍል ሀ {

የህዝብ: ባዶ func1 (ባዶ); }; ባዶ (*pFunc) (ባዶ) = & ሀ:: func1;

አጠናቃሪው አንድ ዓይነት የመቀየሪያ ስህተት ሪፖርት ያደርጋል ፣ ትክክለኛው ምሳሌ እዚህ አለ

ባዶ (ሀ::*pFunc) (ባዶ) = & ሀ:: func1;

ያንን ዘዴ ለመጥራት ልንጠቀምበት ስንሞክር እንደገና ስህተት። ለዚያ ስህተት ምክንያቱ አንድ ነገር-ዘዴ በአንድ ነገር መጠራት አለበት። ስለዚህ እሱን ለመጥራት አንድ ነገር እንፈጥራለን-

ሀ ሀ;

ሀ.*pFunc ();

በዚህ ጊዜ ምንም ችግር የለም። ስለዚህ በ Delegate.h ውስጥ የውክልና ክፍል አለ።

አብነት

class middleware:: ውክልና: የህዝብ መካከለኛ ዕቃዎች:: በይነገጽ:: ተወካይ {public: Delegate (T *object, ባዶ (ቲ:: *ዘዴ) (ባዶ *)); ባዶ ጥሪ (ባዶ * አርግ); የተጠበቀ - T * _object; ባዶ (ቲ:: *_ ዘዴ) (ባዶ *); }; አብነት የውስጥ መስመር middleware:: ውክልና:: ውክልና (ቲ *ነገር ፣ ባዶ (ቲ:: ባዶ * አርግ) {(_object-> * _ method) (args); }

የውክልና ክፍል የአብነት ክፍል ስለሆነ ፣ ይህ ማለት ውክልና የውክልና ልዩነት ነው ፣ እንዴት በጠቋሚው እንዲጠቆሙ ማድረግ አንድ ዓይነት አላቸው? መልሱ በይነገጽ ነው ፣ ስለዚህ በ IDelegate.h ውስጥ የ IDelegate በይነገጽ አለ።

class middleware:: interface:: IDelegate {

ይፋዊ - ምናባዊ ባዶ ጥሪ (ባዶ * አርግ) = 0; };

በፒአር ዳሳሽ እና የጩኸት ዳሳሽ ክፍል ውስጥ የልዑካን ጠቋሚን ለማከማቸት ያገለገሉ ተላላኪዎች (_delegates) የሚባል ተለዋዋጭ አለ ፣ እና ሁሉንም ልዑካን በ _ ተወካዮች ውስጥ ለመጥራት ያገለገለ (invokeAllDelegates) የሚባል ዘዴ አለ ፣ በመለኪያ () ዘዴ ይባላል።

ማሳሰቢያ-እንደ ለውጥAnimation () ፣ changeSpeed () እና changeColor () ያሉ የውክልና ዘዴዎች በሰዓት ቆጣሪ 2 ውስጥ ይጠራሉ ፣ ስለዚህ መዘግየትን () ወይም ሌላ በማቋረጥ ላይ የተመሠረተ ተግባር አይጠቀሙ።

የሚመከር: