ዝርዝር ሁኔታ:
- ደረጃ 1: ከመጀመራችን በፊት
- ደረጃ 2 - ክፍሎች ያስፈልጋሉ
- ደረጃ 3 የግንኙነት እና የሃርድዌር ግንባታ
- ደረጃ 4 - 50 የብርሃን ሞጁሎችን በመጠቀም ይፍጠሩ
- ደረጃ 5: አርዱዲኖ ኮድ መስጫ እና ሽቦ
- ደረጃ 6 ውጤት እና ፊልም መስራት
ቪዲዮ: ብርሃንን ይጎትቱ - ኒዮፒክስልን በመጠቀም የብርሃን ሞዱል እና የመቀያየር መቀያየርን: 6 ደረጃዎች (ከስዕሎች ጋር)
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:31
የብርሃን ሞዱል ባህሪዎች
- አርዱዲኖ ኡኖ
- ከበይነመረብ የተገዛ ሃርድዌር እና ማቀፊያ
- ኒኦፒክሰል እና የኃይል አቅርቦት ከኢንፎርማቲክስ እና የምርት ዲዛይን ትምህርት ቤት ተበድሯል
- በኃይል አቅርቦት ቁጥጥር የሚደረግበት የብርሃን ሞዱል
- ሁሉም ተግባራት በተጠቃሚዎች መስተጋብር ቁጥጥር ስር ናቸው
- የኒዮፒክስል ስትሪፕ የእነማ ዓይነቶች - የዝናብ ዓይነት ፣ የሻወር ዓይነት ፣ ብልጭታ መብረቅ ዓይነት ፣ የፖፕ ዓይነት ፣ መደበኛ ያልሆነ ዓይነት
- የመጎተት መቀየሪያው ከኔኦፒክስል ሰቅ ጋር የተገናኘ ሲሆን ኒዮፒክስል ስትሪ ሲጎተት እነማ ይለወጣል
ደረጃ 1: ከመጀመራችን በፊት
ሰላም አስተማሪዎች እና ሰሪዎች።
በብርሃን አኒሜሽን አማካኝነት የዝናብ ስሜት ከተሰማን ምን እንደሚሆን አንፃር የጀመርነው እና በይነተገናኝ የንድፍ ፕሮጀክት። ብርሃንን በቀጥታ በሚጎትተው በይነገጽ በኩል የተጠቃሚው ስሜታዊነት የሚበዛ ይመስለኛል።
ወደ ሥራ እንዳንገባ
ደረጃ 2 - ክፍሎች ያስፈልጋሉ
በአንድ ቀላል ሞዱል ላይ የተመሠረተ
*** ኒዮፒክስሎች እና የኃይል አቅርቦት በእኛ ክፍል ድጋፍ ጥቅም ላይ ውለዋል። ***
ኤሌክትሮኒክስ
- አርዱዲኖ ኡኖ
- ባለ 3 ቀለም ሽቦ (ጥቁር ፣ ቀይ ፣ ማንኛውም ቀለም)
- 3 ፒን አያያዥ (ለመግዛት አገናኝ)
- ማብሪያ / ማጥፊያ 1 ን ይጎትቱ (ለመግዛት አገናኝ)
- እየጠበበ የሚሄድ ቱቦ
- WS2812b በ 74 LED (Neopixel strip)*2 ጋር ሊጨመረው የሚችል የ LED ንጣፍ
- የኃይል አቅርቦት (5V 350A) 1
*** ለ Arduino ፣ ለ Pull Switch እና NeoPixels 50 ስብስቦች ያስፈልጋሉ።
ሃርድዌር
- አክሬሊክስ አሞሌ 2 ቲ (10 ሚሜ*1000 ሚሜ) 1
- አሲሪሊክ ቦርድ 5 ቲ (60 ሚሜ*60 ሚሜ) 1
- Foemax 10t (1200 ሚሜ*1800 ሚሜ) 1
- ጥቁር መርጨት
- የገመድ ማሰሪያ
- ሕብረቁምፊ
- ሃርድቦርድ
- ፍርግርግ ቦርድ
ደረጃ 3 የግንኙነት እና የሃርድዌር ግንባታ
በመጀመሪያ ፣ አንድ የመብራት ሞዱል ለመሥራት Acrylic Cutting ያስፈልገናል።
- የብርሃን አኒሜሽንን ለመለማመድ እንደ መንገድ ፣ 74 LEDs ን በኒውዮፒክስል መልክ በ 2 ሚሜ ውፍረት ባለው የ acrylic አሞሌ ላይ ከ 1 ሜ አካባቢ ጋር በማያያዝ የሚስተካከል የመብራት ሞዱሉን ይቅረጹ። እኛ ሁለት ዓይነት የመብራት ሞጁሎችን አዘጋጅተናል -የተለመደው መስመራዊ እና ጠመዝማዛ።
- ለመስመራዊ ዓይነቶች ፣ ነባሮቹ የኒዮፒክስል ሰቆች ሊያዙ እና ሊጠበቁ ይችላሉ ፣ ግን ጠመዝማዛ ዓይነቶች በእጅ ሥራን ይፈልጋሉ። እያንዳንዱ 74 ኤል.ዲ. ወደ ቁርጥራጮች ተከፍሎ ፣ ከሽብል አክሬሊክስ ጋር ተጣብቆ ከእርሳስ ጋር ተጣብቋል።
የኒውዮፒክስል ስትሪኩን ወደ አክሬሊክስ ያያይዙ እና በሙቀት እንዳይሰራጭ እያንዳንዱን ጭረት ይጠብቁ ፣ ወይም በቀጭን የዓሣ ማጥመጃ መስመር ያያይዙ። በመስመራዊ ዓይነት ሁኔታ ፣ ሞጁሉ መጨረሻ ላይ መጎተት የነበረበት የውበት መልክን ለመንደፍ ተጭኗል እና የፒንግ ፓን ኳስ በጥቁር ስፕሬይ ጨረስን። ከዚያ በፒንግ ፓን ኳስ ውስጥ ትንሽ ቀዳዳ ቆፍረው በገመድ አገናኙት። ቀጣዩ በጣም አስፈላጊው ክፍል ፣ ማብሪያ / ማጥፊያው እና ኒዮፒክስሉ እንደሚታየው ተገናኝቷል። ከዚያ ማብሪያው ወደ ጣሪያው መደርደሪያ የተጠበቀ ነው።
ጠመዝማዛ ዓይነትን በተመለከተ ፣ ጠመዝማዛ ሞጁሉን በቀጥታ መሳብ በግፊቱ ውስጥ አክሬሊክስን ሊሰብር የሚችል አደጋ አለ ፣ ስለሆነም የመጎተቱ ክፍል (ግቤት) እና ሞጁሉ (ውፅዓት) ተለያዩ። የመውደቁን ብርሃን ከፍ ለማድረግ ሞጁሎች በጣሪያው ላይ በአቀባዊ ተጭነዋል ፣ መስመራዊ ሞጁሎች በአየር ላይ ተስተካክለዋል ፣ ጠመዝማዛዎቹ በቀጥታ ወደ ጣሪያው ተስተካክለዋል። እና እንዲሠራ የፒንግ ፓን ኳስ እና መቀየሪያውን ወደ የዓሣ ማጥመጃ መስመር አገናኘነው።
ከላይ በስዕሉ ላይ እንደሚታየው አክሬሊክስ መቆራረጡ መቀየሪያውን ወደ መደርደሪያው ለመጠበቅ ያስፈልጋል። የ 6 ሴ.ሜ ካሬ ቅርፅ ያለው ማብሪያ / ማጥፊያ / ማጥፊያውን በጥብቅ ለመጠበቅ በሁለቱም በኩል ባሉ ቀዳዳዎች በኩል የገባውን ማብሪያ ማእከል እና የኬብል ማሰሪያ በግምት 5 ሚሜ ውፍረት አለው። በማዕከሉ ታችኛው ክፍል ላይ ያለው ክብ ቀዳዳ የመቀየሪያውን መጎተትን ያጋልጣል ፣ ከዚህ በታች ሶስት የሽቦ ገመድ አውጥቶ ከሞጁሉ የኬብል ተርሚናል ጋር ይገናኛል። እና በተመሳሳይ ፣ በአራቱ ማዕዘኖች ውስጥ ባለው ቀዳዳ በኩል መደርደሪያው እና አክሬሊክስ በኬብል ትስስር ተጠብቀዋል። ከላይ እንደተገለፀው ፣ መስመራዊ ሞጁሉ በቀጥታ ከመጎተቱ ጋር ተገናኝቷል ፣ ግን ጠመዝማዛ ሞዱል ፒኑን እና መቀየሪያውን በተናጠል ያገናኛል።
ደረጃ 4 - 50 የብርሃን ሞጁሎችን በመጠቀም ይፍጠሩ
በአጠቃላይ 50 ሞጁሎችን በማሰማራት ለሀብታም ብርሃን የተጠቃሚ ተሞክሮ አዘጋጅተናል።
እኛ 1 ፣ 800 ሚሜ ስፋት እና 1 ፣ 200 ሚሜ ርዝመት ያለው መደርደሪያ ነበረን ፣ እና እኛ መጀመሪያ ያቀድነውን የዝናብ እና የዝናብ አከባቢ እንዲለማመዱ እያንዳንዱን ማብሪያ እና ሞዱል አገናኝተን ሁለገብ ሥራን ለማንቃት እያንዳንዱ ሞዱል ለብቻው እንዲቆም አደረግን።.
በዲዛይን ሥዕሉ ላይ በመመስረት መጫኑን ለመደበቅ እና የ LED ሞዱል የተገናኘው ቦታ የማይታይ መሆኑን ለማረጋገጥ ክብ ቀዳዳ በፎሚማ ውስጥ ተቆፍሯል። ማብሪያ / ማጥፊያ / ማያያዣው ከተያያዘበት ከኤሪክሪክ ቦርድ እስከ የ LED ሞዱል ግንኙነት ያለው ርቀት 1 ሴ.ሜ ያህል በመሆኑ 1 ሴ.ሜ ውፍረት ያለው ፎኢማክስ ጥቅም ላይ ውሏል።
የብረት ካሬው ፍሬም አጠቃላይ ክብደትን እና ሚዛንን በሚጠብቅበት ጊዜ መጫኑን ከዊንች እና ከኬብል ግንኙነቶች ጋር ለማያያዝ ያገለግል ነበር። የተጋለጡ ግንኙነቶች ርዝመት ሠሪው በሚሞክርበት ጊዜ ከዚያ በላይ ከሆነ ፣ ወፍራም ሰሌዳ ውጤታማ አይደለም እና ሌሎች መዋቅሮች ይመከራሉ።
በአይን ደረጃ የተጠቃሚውን ተሞክሮ ለማመቻቸት የተጠናቀቀው ጭነት በግምት 2 ሜትር ከፍታ ባለው ድጋፍ ላይ ይቀመጣል ፣ ነገር ግን ጥንቃቄው የተከተተውን የ LED ሞዱሉን ከመቀየሪያው ጋር መጫን በጣም ከባድ ስለሆነ ሁሉም ግንኙነቶች መወገድ አለባቸው። እኛ ወደ መሰላሉ ወጥተን ሞጁሉን ከድጋፍው ላይ ከተጫነው ጭነት ጋር አገናኘነው።
የዚህ አጠቃላይ ሂደት በጣም አስፈላጊው ክፍል በአስተማማኝ ሁኔታ ውስጥ ልምዱ እንዲቻል ሥራው በአስተማማኝ እና ሙሉ በሙሉ መከናወኑን ማረጋገጥ ነው።
በጠቅላላው 10 አርዱዲኖ እና 50 የ LED ሞጁሎች ጥቅም ላይ የዋሉ እና የበለጠ ውጤታማ እና እንከን የለሽ ባለብዙ ተግባር በአንድ arduino አምስት የ LED ሞዱሎች ተገናኝተዋል። ለዝርዝሮች የተያያዘውን ንድፍ ይመልከቱ። በዲዛይን ዲያግራም መሠረት ሙሉ ማብሪያውን በመጠቀም የኒዮፒክስል ባለብዙ ተግባር ኮድ በሚቀጥለው ደረጃ በዝርዝር ይብራራል።
ደረጃ 5: አርዱዲኖ ኮድ መስጫ እና ሽቦ
ሽቦ
- በደረጃ 4 አቀማመጥ መሠረት 50 ሞጁሎች ተገናኝተዋል።
- ባለብዙ ተግባርን ለማንቃት እና ግልጽ ግንኙነትን ለማቅረብ እያንዳንዱ ሞጁል በ 10 ስብስቦች በ 50 ሞጁሎች ተከፍሏል።
- ከላይ በተቀመጠው 1 ምስል ላይ እንደሚታየው አምስት ሞጁሎች ከአንድ አርዱዲኖ ጋር ተገናኝተዋል ፣ እና የ 5 ኒ ፒክስል ፒኖኖች የኃይል አቅርቦቱን ለማገናኘት በአንድ ላይ ተጣብቀዋል።
- የኒዮፒክስሎች እና መቀያየሪያዎቹ GND እንዲሁ ተጣምረው ነበር እና ለግንዛቤ ቀላልነት መቀያየሪያዎቹ በፒን 2 ፣ 3 ፣ 4 ፣ 5 ፣ 6 ውስጥ ተሰክተው ኒዮፒክስሎች ወደ ፒን 9 ፣ 10 ፣ 11 ፣ 12 ፣ 13 ተሰክተዋል።.
- መቀያየሪያዎቹ እና ኒዮፒክስሎች በቅደም ተከተል በ2-9 ፣ 3-10 ፣ 4-11 ፣ 5-12 ፣ 6-13 መንገዶች ተገናኝተዋል።
- የመስመሮቹ ትስስሮች ውስብስብ ስለሆኑ እና በአጭር ወረዳዎች ምክንያት የእሳት አደጋ ስለሚኖር ደካማ ክፍሎቹ እንዳይሰበሩ የመቀነስ ቧንቧው እንዲሞቅ ተደርጓል።
የኒዮፒክስል ባለብዙ ተግባር ኮድ ማድረጊያ ከመቀያየር መቀየሪያ ጋር
5 የብርሃን እነማ (የዝናብ ዓይነት ፣ የሻወር ዓይነት ፣ ብልጭታ መብረቅ ዓይነት ፣ የፖፕ ዓይነት ፣ መደበኛ ያልሆነ ዓይነት)
#ያካትቱ
/*사용 하고자 하는 패턴 을 추가 추가/*/
enum ጥለት {NONE ፣ RAINBOW_CYCLE ፣ THEATER_CHASE ፣ COLOR_WIPE ፣ SCANNER ፣ FADE ፣ TWINKLE ፣ STAR ፣ RAINBOWSPARKLE ፣ METEOR ፣ LIGHT ፣ BLOSSOM}; /*네오 픽셀 을 방향 을 설정 함*/ enum አቅጣጫ {FORWARD, REVERSE};
/**패턴 의 클래스 를 입력 함/*/
class NeoPatterns: public Adafruit_NeoPixel { /* 패턴 을 추가 하고 하기 위한 함수 함수* / public: pattern ActivePattern; /*클레스 함수 에 패턴 의 방향 을 입력*/ አቅጣጫ አቅጣጫ;
/*변수 የጊዜ ክፍተት 을 추가*/ ያልተፈረመ ረጅም ክፍተት; /*변수 lastUpdate 를 추가*/ ያልተፈረመ ረጅም lastUpdate; /*변수 Color1 ፣ Color2 를 추가*/ uint32_t Color1 ፣ Color2; /*변수 TotalSteps 를 추가*/ uint16_t TotalSteps; /*변수 ማውጫ 를 추가*/ uint16_t ማውጫ;
/*패턴 을 완료 했을 시 다시 불러오는/*/ ባዶ (*OnComplete) (); * OnComplete = መልሶ መደወያ; }
/*패턴 을 업데이트 하기 위한 케이스 케이스/*/
ባዶነት አዘምን () { /*패턴 의 시간 설정. If 태스킹 을 구현 하는 구문/*/ if ((millis () - lastUpdate)> Interval) {lastUpdate = millis (); /*ActivePattern 의 스위치 구문*/ ማብሪያ (ActivePattern) {/*case RAINBOW_CYCLE 에서는 RainbowCycleUpdate 를 실행 하라*/ case RAINBOW_CYCLE: RainbowCycleUpdate (); /*መያዣ RAINBOW_CYCLE 에서 나와라*/ እረፍት;
/*ጉዳይ THEATER_CHASE 에서는 TheaterChaseUpdate 를 실행 하라*/
ጉዳይ THEATER_CHASE: TheaterChaseUpdate (); /*ጉዳይ THEATER_CHASE 에서 나와라*/ እረፍት;
/*መያዣ COLOR_WIPE 에서는 ColorWipeUpdate 를 실행 하라*/
መያዣ COLOR_WIPE: ColorWipeUpdate (); /*መያዣ COLOR_WIPE 에서 나와라*/ እረፍት; /*case SCANNER 에서는 ScannerUpdate 를 실행 하라*/ case SCANNER: ScannerUpdate (); /*case SCANNER 에서 나와라*/ break;
/*ጉዳይ FADE 에서는 FadeUpdate 를 실행 하라*/
የጉዳይ FADE: FadeUpdate (); /*ጉዳይ FADE 에서 나와라*/ እረፍት;
/*ጉዳይ TWINKLE 에서는 TwinkleUpdate 를 실행 하라*/
ጉዳይ TWINKLE: TwinkleUpdate (); /*ጉዳይ TWINKLE 에서 나와라*/ እረፍት;
/*ጉዳይ STAR 에서는 StarUpdate 를 실행 하라*/
የጉዳይ STAR: StarUpdate (); /*ጉዳይ STAR 에서 나와라*/ እረፍት;
/*መያዣ RAINBOWSPARKLE 에서는 ቀስተ ደመና ብልጭታ አዘምን 를 실행 하라*/
መያዣ RAINBOWSPARKLE: RainbowsparkleUpdate (); /*መያዣ RAINBOWSPARKLE 에서 나와라*/ እረፍት; /*case METEOR 에서는 MeteorUpdate 를 실행 하라*/ case METEOR: MeteorUpdate (); /*ጉዳይ METEOR 에서 나와라*/ እረፍት;
/*ጉዳይ LIGHT 에서는 LightUpdate 를 실행 하라*/
የጉዳይ ብርሃን: LightUpdate (); /*ጉዳይ LIGHT 에서 나와라*/ እረፍት;
/*ጉዳይ BLOSSOM 에서는 BlossomUpdate 를 실행 하라*/
ጉዳይ BLOSSOM: BlossomUpdate (); /*ጉዳይ BLOSSOM 에서 나와라*/ break; }}}
/*패턴 의 방향 을 설정 하는 하는/*/
/*ማውጫ 를 증가 시키고 초기화 하는 함수/*/
ባዶነት መጨመር () { /*만약 정방향 이면 인덱스 를 증가 시켜라* / if (አቅጣጫ == ወደፊት) {ማውጫ ++; /*만약 인덱스 가 전체 네오 픽셀 구동 갯수 와 같 거나 많다 면 으로 으로//*/ if (ማውጫ> = ጠቅላላ ደረጃዎች) {ማውጫ = 0; /*패턴 을 완료 시키는 함수*/ if (OnComplete! = NULL) {OnComplete (); }}}
/*만약 정방향 이 아니면 인덱스 를 감소/*/ ሌላ {--Index; /*만약 인덱스 가 전체 네오 픽셀 구동 갯수 와 같 거나 적 다면 전체 구동 갯수 에서 을 을 을/*/ ከሆነ (ማውጫ <= 0) {ማውጫ = ጠቅላላ ደረጃዎች - 1; /*패턴 을 완료 시키는 함수*/ if (OnComplete! = NULL) {OnComplete (); }}}}
/**반대 방향 으로 움직이게 하는 함수/*/
ባዶ ባዶ () { /*애니메이션 함수 에 Reverse 를 썼을 시, 만약 방향 이 정방향 이면* / if (አቅጣጫ == ወደፊት) { /*방향 은 그 와 반대 이며 전체 구동 구동 갯수 일 일 /; ማውጫ = ጠቅላላ ደረጃዎች - 1; } /*그 외의 방향 이 정방향 이면 인덱스 으로 0 으로 설정 해라* / ሌላ {አቅጣጫ = ወደፊት; ማውጫ = 0; }}
/*애니메이션 을 설정 하는 함수 함수 들*
*ቀስተ ደመና ሳይክል/ 시간 과 방향 을 입력/*/
ባዶ RainbowCycle (uint8_t ክፍተት ፣ አቅጣጫ dir = FORWARD) { /*실행 되는 패턴 은 RainbowCycle 임* / ActivePattern = RAINBOW_CYCLE; /*시간 은 ባዶ RainbowCycle () 안에 입력 되는 ክፍተት 과 같음*/ Interval = interval; /*총 구동 갯수 는 255 임*/ TotalSteps = 255; /*인덱스 는 0 으로 설정 함*/ ማውጫ = 0; /*방향 은 ባዶ RainbowCycle () 안에 입력 되는 dir = FORWARD/ 같음*/ አቅጣጫ = dir; }
/*ቀስተ ደመና ሳይክል/업데이트 했을 경우*/
ባዶ RainbowCycleUpdate () { /*변수 i 가 네오 픽셀 개수 보다 작 으면 i 를 증가 시켜라* / /ለ (int i = 0; i <numPixels (); i ++) { /*변수 i 가 증가 함 과 동시에 GB GB GB GB GB GB GB 로 변화 하면서 작동 해라 / * / setPixelColor (i, Wheel (((i * 256 / numPixels ()) + ማውጫ) & 255)); } / *애니메이션 을 보여주는 함수 * / አሳይ (); መጨመር (); }
/*TheaterChase 컬러 컬러 와 시간 방향 을 을/*/
ባዶነት TheaterChase (uint32_t color1 ፣ uint32_t color2 ፣ uint8_t ክፍተት ፣ አቅጣጫ dir = FORWARD) { /*실행 되는 패턴 TH RTHEATER_CHASE* / ActivePattern = THEATER_CHASE; /*시간 은 ባዶነት TheaterChase () 안에 입력 되는 interval 과 같음*/ Interval = interval; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); /*컬러 1 ፣ 2 를 설정*/ Color1 = color1; ቀለም 2 = ቀለም 2; /*인덱스 는 0 으로 설정 함*/ ማውጫ = 0; /*방향 은 ባዶነት TheaterChase () 안에 입력 되는 dir = FORWARD 과 같음*/ አቅጣጫ = dir; }
/*TheaterChase 업데이트 업데이트 했을 경우*/
ባዶነት TheaterChaseUpdate () { /*변수 i 가 네오 픽셀 개수 보다 작 으면 i 를 증가 시켜라* / /ለ (int i = 0; i <numPixels (); i ++) { /*만약 변수 에 에 를 더해서 으로 으로 것이 0 과 같다 면 i 를 ቀለም 로 변환 시켜라*/ if ((i + Index) % 3 == 0) {setPixelColor (i, Color1); } /*그렇지 않다면 i 를 ቀለም 를 변환 시켜라* / ሌላ {setPixelColor (i ፣ Color2); }} / *애니메이션 을 보여주는 함수 * / አሳይ (); መጨመር (); }
/*ColorWipe/컬러 와 시간 방향 을 을/*/
ባዶነት ColorWipe (uint32_t ቀለም ፣ uint8_t ክፍተት ፣ አቅጣጫ dir = FORWARD) { /*실행 되는 패턴 은 COLOR_WIPE* / ActivePattern = COLOR_WIPE; /*시간 은 ባዶ ColorWipe () 안에 입력 되는 ክፍተት 과 같음*/ Interval = interval; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); /*컬러 1 을 설정*/ Color1 = ቀለም; /*인덱스 는 0 으로 설정 함*/ ማውጫ = 0; /*방향 은 ባዶ ColorWipe () 안에 입력 되는 dir = FORWARD 과 같음*/ አቅጣጫ = dir; }
/*ColorWipeUpdate 업데이트 업데이트 했을 경우*/
ባዶነት ColorWipeUpdate () { /*መረጃ ጠቋሚ 를 컬러 1 로 변환 시켜라* / setPixelColor (ማውጫ ፣ ቀለም 1); / *애니메이션 을 보여주는 함수 */ አሳይ (); መጨመር (); }
/*ቃan 의 컬러 와 시간 을 입력*/
ባዶ ስካነር (uint32_t color1 ፣ uint8_t ክፍተት) { /*실행 되는 패턴 ANN SCANNER* / ActivePattern = SCANNER; /*시간 은 ባዶ ስካነር () 안에 입력 되는 ክፍተት 과 같음*/ Interval = interval; /*구동 갯수 는 총 갯수 에서 1 을 빼고 2 를 곱 해라*/ TotalSteps = (numPixels () - 1)*2; /*컬러 1 을 설정*/ Color1 = color1; /*인덱스 는 0 으로 설정 함*/ ማውጫ = 0; }
/*ቃan ዝማኔ 를 업데이트 했을 경우*/
ባዶ ScannerUpdate () { /*변수 i 는 영 이고 총 갯수 보다 작을 경우 i 를 증가 시켜라* / /ለ (int i = 0; i <numPixels (); i ++) { /*만약 변수 가 가 가 와 와 를 color1 로 변환 시켜라*/ if (i == ማውጫ) {setPixelColor (i, Color1); } / *그렇지 않다면 변수 i 를 전체 구동 갯수 인덱스 를 를 뺀값 과 같다 * / ሌላ ከሆነ (i == TotalSteps - Index) {setPixelColor (i, Color1); } / *그 밖에는 i 를 디밍 시켜라 i 의 값 만큼 * / ሌላ {setPixelColor (i ፣ DimColor (getPixelColor (i)))); }} / *애니메이션 을 보여주는 함수 * / አሳይ (); መጨመር (); }
/*ቃan 컬러 컬러 1 ፣ 2 와 스텝 ፣ 시간 ፣ 시간 방향 입력/*/
ባዶ ባዶ (uint32_t color1 ፣ uint32_t color2 ፣ uint16_t ደረጃዎች ፣ uint8_t ክፍተት ፣ አቅጣጫ dir = FORWARD) { /*실행 되는 패턴 AD FADE* / ActivePattern = FADE; /*시간 은 ባዶነት ጠፍቷል () 안에 입력 되는 ክፍተት 과 같음*/ Interval = interval; /*구동 갯수 는 스텝 값임*/ TotalSteps = ደረጃዎች; /*컬러 1 ፣ 2 를 설정*/ Color1 = color1; ቀለም 2 = ቀለም 2; /*인덱스 는 0 으로 설정 함*/ ማውጫ = 0; /*방향 은 ባዶ ባዶ () 안에 입력 되는 dir = FORWARD 과 같음*/ አቅጣጫ = dir; }*)) / ጠቅላላ ደረጃዎች; / * 변수 አረንጓዴ 값 은 다음 과 같음 * / uint8_t አረንጓዴ = ((አረንጓዴ (Color1) * (TotalSteps - Index)) + (Green (Color2) * Index)) / TotalSteps; / * 변수 ሰማያዊ 값 은 다음 과 같음 * / uint8_t blue = ((ሰማያዊ (Color1) * (ጠቅላላ ደረጃዎች - መረጃ ጠቋሚ)) + (ሰማያዊ (ቀለም 2) * መረጃ ጠቋሚ)) / TotalSteps; /*위 의 ቀይ ፣ አረንጓዴ ፣ ሰማያዊ 값 으로 컬러 를 셋팅 함*/ ColorSet (ቀለም (ቀይ ፣ አረንጓዴ ፣ ሰማያዊ)); / *애니메이션 을 보여주는 함수 */ አሳይ (); መጨመር (); }
/*모든 네오 픽셀 을 끄는 끄는/*/
ባዶ ባዶ () { /*총 네오 픽셀 갯수 는 74 개 이며* / int NPIXEL = 74; /*변수 i 가 증가 하며 모든 네오 픽셀 컬러 값 을 으로 으로 으로//*/ ለ (int i = 0; i <NPIXEL; i ++) {setPixelColor (i, 0, 0, 0); }}
/*ብልጭ ድርግም 의 컬러 1 시간 시간 을 입력*/
ባዶ Twinkle (uint32_t color1 ፣ uint8_t ክፍተት) { /*실행 되는 패턴 W TWINKLE* / ActivePattern = TWINKLE; /*시간 은 ባዶ Twinkle () 안에 입력 되는 ክፍተት 과 같음*/ Interval = interval; /*컬러 1 를 설정*/ Color1 = color1; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); ማውጫ = 0; }
/*TwinkleUpdate 업데이트 업데이트 했을 경우*/
ባዶ TwinkleUpdate () { /*모든 네오 픽셀 의 컬러 를 0 으로 셋팅* / setAll (0, 0, 0); /*변수 Pixel 은 የዘፈቀደ 74*/ int Pixel = የዘፈቀደ (74); /*የዘፈቀደ 74 에서 에서 2 눈 눈 수 를 랜덤 하게/*/setPixelColor (ፒክስል/2 ፣ 50 ፣ 100 ፣ 255) ፤ setPixelColor (ፒክስል ፣ 250 ፣ 255 ፣ 250); setPixelColor (Pixel/2, 200, 250, 255); setPixelColor (ፒክስል ፣ 255 ፣ 255 ፣ 255); setPixelColor (ፒክስል ፣ 250 ፣ 230 ፣ 250); setPixelColor (ፒክስል/2 ፣ 150 ፣ 200 ፣ 255); / *애니메이션 을 보여주는 함수 */ አሳይ (); / *랜덤 하게 끄는 함수 */ setPixelColor (ፒክስል ፣ 0 ፣ 0 ፣ 0); / *애니메이션 을 보여주는 함수 */ አሳይ (); መጨመር (); }
/*ኮከብ 의 값 1 을 을 입력*/
ባዶ ኮከብ (uint32_t color1) { /*실행 되는 패턴 은 STAR* / ActivePattern = STAR; /*시간 은 ባዶ ኮከብ () 안에 입력 되는 ክፍተት 과 같음*/ Interval = Interval; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); /*컬러 1 을 설정*/ Color1 = color1; ማውጫ = 0; }
/*StarUpdate 를 업데이트 했을 경우*/
ባዶ StarUpdate () { /*인덱스 와 컬러 를 셋팅* / setPixelColor (ማውጫ ፣ ቀለም 1); አሳይ (); /*변수 i 가 0 이고 구동 갯수 보다 작 으면 를 를 를 를 감소 시킴//*/ ለ (int i = 0; i <numPixels (); i--) {setPixelColor (i, Color (0, 0 ፣ 0)); } / *애니메이션 을 보여주는 함수 * / ጭማሪ (); }
/*ቀስተ ደመና ብልጭታ 의 시간 과 방향 을 을/*/
ባዶ Rainbowsparkle (uint8_t ክፍተት ፣ አቅጣጫ dir = FORWARD) { /*실행 되는 패턴 IN RAINBOWSPARKLE* / ActivePattern = RAINBOWSPARKLE; /*시간 은 ባዶ Rainbowsparkle () 안에 입력 되는 interval 과 같음*/ Interval = interval; /*총 구동 갯수 는 numPixels 갯수 임*/ TotalSteps = numPixels (); ማውጫ = 0; /*방향 은 ባዶ Rainbowsparkle () 안에 입력 되는 አቅጣጫ 과 같음*/ አቅጣጫ = dir; }
/*ቀስተ ደመና ብልጭታ አዘምን 를 업데이트 했을 경우*/
ባዶ RainbowsparkleUpdate () { /*변수 i 가 0 이고 구동 갯수 보다 작 으면 i 값 을 증가 하는데 하는데* /ለ (int i = 0; i <numPixels (); i ++) { /*변수 i 가 0 이고 구동 갯수 보다 보다 If 으면 i 값 을 증가 하는데*/ if ((i + Index) % 2 == 0) {uint32_t c = የዘፈቀደ (255); setPixelColor (i, c); } ሌላ {setPixelColor (i ፣ የዘፈቀደ (255)) ፤ }} / *애니메이션 을 보여주는 함수 * / አሳይ (); መጨመር (); } /*ሜቴር 의 시간 과 방향 을 입력* / ባዶ ሜቴር (uint32_t color1) { /*실행 되는 패턴 은 METEOR* / ActivePattern = METEOR; /*시간 설정*/ ክፍተት = ክፍተት; / *총 구동 갯수 는 numPixels 갯수 에서 1 일뺀 후 ፣ *2 를 한 것과 같음 */ TotalSteps = (numPixels ()-1) *2; /*컬러 1 을 설정*/ Color1 = color1; ማውጫ = 0; }
/*MeteorUpdate 업데이트 업데이트 했을 경우*/
ባዶ MeteorUpdate () {ለ (int i = 0; i <numPixels () ፤ i ++) {ከሆነ (i == ማውጫ) {setPixelColor (i ፣ 100 ፣ በዘፈቀደ (255) ፣ 255) ፤ } ሌላ {setPixelColor (i, DimColor (getPixelColor (i)))); }} / *애니메이션 을 보여주는 함수 * / አሳይ (); መጨመር (); }
/*ብርሃን 시간 시간 과 방향 을 을/*/
ባዶ ብርሃን (uint32_t color1) { /*실행 되는 패턴 IGH LIGHT* / ActivePattern = LIGHT; /*시간 설정*/ ክፍተት = ክፍተት; / *총 구동 갯수 는 numPixels 갯수 에서 1 일뺀 후 ፣ *2 를 한 것과 같음 */ TotalSteps = (numPixels ()-1) *2; /*컬러 1 을 설정*/ Color1 = color1; ማውጫ = 0; }
/*LightUpdate 업데이트 업데이트 했을 경우*/
ባዶ LightUpdate () {ለ (int i = 0; i <numPixels () ፤ i ++) {if (i == TotalSteps - Index) {setPixelColor (i ፣ 150 ፣ የዘፈቀደ (200) ፣ 40) ፤ } ሌላ {setPixelColor (i ፣ DimColor (getPixelColor (i)))); }} / *애니메이션 을 보여주는 함수 * / አሳይ (); መጨመር (); }
/*አብቦ 의 시간 과 방향 을 입력
ባዶ አበባ (uint32_t color1) { /*실행 되는 패턴 은 BLOSSOM* / ActivePattern = BLOSSOM; /*시간 설정*/ ክፍተት = ክፍተት; / *총 구동 갯수 는 numPixels 갯수 에서 1 일뺀 후 ፣ *2 를 한 것과 같음 */ TotalSteps = (numPixels ()-1) *2; /*컬러 1 을 설정*/ Color1 = color1; ማውጫ = 0; }
/*BlossomUpdate 업데이트 업데이트 했을 경우*/
ባዶነት BlossomUpdate () {ለ (int i = 0; i <numPixels () ፤ i ++) {if (i == TotalSteps - Index) {setPixelColor (i ፣ 255 ፣ የዘፈቀደ (255) ፣ 100) ፤ } ሌላ {setPixelColor (i, DimColor (getPixelColor (i)))); }} / *애니메이션 을 보여주는 함수 * / አሳይ (); መጨመር (); }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
* ፣ አረንጓዴ ፣ ሰማያዊ); } አሳይ (); }
/*네오 픽셀 의 디밍 ፣ 즉 밝기 를 조절 하는 하는 함수*/
uint32_t DimColor (uint32_t ቀለም) {// Shift R ፣ G እና B ክፍሎች አንድ ትንሽ ወደ ቀኝ uint32_t dimColor = ቀለም (ቀይ (ቀለም) >> 1 ፣ አረንጓዴ (ቀለም) >> 1 ፣ ሰማያዊ (ቀለም) >> 1); ተመለስ dimColor; }
/*모든 네오 픽셀 의 칼라 를 를/*/
ባዶነት ColorSet (uint32_t ቀለም) {ለ (int i = 0; i <numPixels (); i ++) {setPixelColor (i, color); } አሳይ (); }
/*레드 값 을 불러 옴/*/
uint8_t ቀይ (uint32_t ቀለም) {መመለስ (ቀለም >> 16) & 0xFF; } /*그린 값 을 불러 옴* / uint8_t አረንጓዴ (uint32_t ቀለም) {መመለስ (ቀለም >> 8) & 0xFF; } /*블루 값 을 불러 옴* / uint8_t ሰማያዊ (uint32_t ቀለም) {የመመለሻ ቀለም & 0xFF; }
/*ቀስተ ደመና 컬러 를 불러 옴*/
uint32_t Wheel (byte WheelPos) {WheelPos = 255 - WheelPos; ከሆነ (WheelPos <85) {የመመለሻ ቀለም (255 - WheelPos * 3, 0 ፣ WheelPos * 3); } ሌላ ከሆነ (WheelPos <170) {WheelPos -= 85; የመመለሻ ቀለም (0 ፣ WheelPos * 3 ፣ 255 - WheelPos * 3); } ሌላ {WheelPos -= 170; የመመለሻ ቀለም (WheelPos * 3, 255 - WheelPos * 3, 0); }}};
/*ስትሪፕ 불러 불러 오기 위한 위한 함수 /*사용 하는 스트립 스트립 별로 모두 지정 지정 해주어야 /* /
ባዶ ባዶ 1 ሙሉ (); ባዶ ባዶ strip2Complete (); ባዶ ባዶ3 ሙሉ (); ባዶ ባዶ strip4Complete (); ባዶ ባዶ 5 ሙሉ ();
/*네오 픽셀 의 갯수 설정/*/
#መግለፅ NUMPIXELS 74 /*사용 하는 버튼 의 갯수 설정* / #define B_NUM 5 /*strip strip1 ~ 5 까지, 갯수 는 74 개 연결 핀 핀 은 은 strip 1 은 8 ~ strip5 까지 12* / NeoPatterns strip1 (74, 8, NEO_GRB + NEO_KHZ800 ፣ እና strip1Complete); NeoPatterns strip2 (74 ፣ 9 ፣ NEO_GRB + NEO_KHZ800 ፣ እና strip2Complete); NeoPatterns strip3 (74 ፣ 10 ፣ NEO_GRB + NEO_KHZ800 ፣ & strip3Complete); NeoPatterns strip4 (74 ፣ 11 ፣ NEO_GRB + NEO_KHZ800 ፣ እና strip4Complete); NeoPatterns strip5 (74 ፣ 12 ፣ NEO_GRB + NEO_KHZ800 ፣ & strip5Complete); /*배열 을 사용한 연결 버튼 핀 설정*/ const int buttonPin [B_NUM] = {2, 3, 4, 5, 6}; /*배열 을 사용 하여 버튼 상태 를 지정/*/ int አዝራር ግዛት [B_NUM]; /*2 번핀 부터 6 번핀 까지 상태 는 순서 대로 LOW 임*/ int lastButtonState [B_NUM] = {LOW ፣ LOW ፣ LOW ፣ LOW ፣ LOW}; /*2 번핀 부터 6 번핀 까지 버튼 카운터 를 초기화 시킴*/ int buttonCounter [B_NUM] = {0, 0, 0, 0, 0}; /*2 번핀 부터 6 까지 까지 최대 카운터 카운터 는 5 임*/ int buttonCounterMax = 5; /*모든 버튼 핀 을 읽 일수 있도록 변수/*/ int reading [B_NUM]; ያልተፈረመ ረጅም lastDebounceTime [B_NUM] = {0, 0, 0, 0, 0}; /*모든 버튼 핀 을 읽는 시간 간격 은 መዘግየት 50 과 같음*/ ያልተፈረመ ረጅም debounceDlay = 50;
ባዶነት ማዋቀር () {
/*복잡 하게 저항 연결 이 필요 없도록 풀업 풀업 방식 의 의 버튼 설정: GND - 5V (ከፒን ቁጥር ጋር ይገናኙ)*/ ለ (int i = 0; i <B_NUM; i ++) {pinMode (buttonPin , INPUT_PULLUP); } Serial.begin (9600); /*스트립 1 ~ 5 를 셋팅*/ strip1.begin (); strip2.begin (); strip3.begin (); strip4.begin (); strip5.begin ();
//strip1. ቲያትርChase (ስትሪፕ1 ኮሎር (255 ፣ 0 ፣ 255) ፣ ስትሪፕ 1. ቀለም (255 ፣ 50 ፣ 0) ፣ 20 ፣ ወደፊት);
}
/*버튼 카운터 변수 값 은 임 5 임*/
int counter = 5; ባዶነት loop () { /*버튼 수 보다 i 가 작 으면 i 를 증가 시키고* / / ለ (int i = 0; i debounceDelay) {ከሆነ (ማንበብ ! = buttonState ) {buttonState = ንባብ ; buttonCounter ++; /*버튼 카운팅 이 위에서 설정 한 Max 값 5 넘으면 으로 0 으로 초기화 시켜라.*/ If (buttonCounter > buttonCounterMax) buttonCounter = 0; }} lastButtonState = ማንበብ ; } /*모든 스트립 을 업데이트 함.* / Strip1. አዘምን (); 2. አዘምን (); 3. አዘምን (); 4. አዘምን (); 5. አዘምን ();
///// መቀየር/////////////////////////// /////////////////////////////// /////////////////////////////////
/*버튼 배열 의 0 번째 즉. 2 번핀 에 연결된 버튼 을 활용 하여 애니메이션 이 구동 되도록 하는 스위치 케이스 구문/*/ መቀየሪያ (የአዝራር ቁልፍ [0]) {
/*첫번째 버튼 을 활동 시키면 구동 되는 되는/*/
መያዣ 0: strip1. ActivePattern = BLOSSOM; /*해당 애니메이션 의 시간 을 설정*/ strip1. ኢንተርቫል = 20; /*구동 되는 네오 픽셀 의 갯수 를 설정*/ strip1. TotalSteps = strip1.numPixels (); ሰበር; /*두번째 버튼 을 활동 시키면 구동 되는 애니메이션*/ መያዣ 1: strip1. ActivePattern = RAINBOWSPARKLE; 1. ኢንተርቫል = 50; strip1. TotalSteps = strip1.numPixels (); ሰበር; /*세번째 버튼 을 활동 시키면 구동 되는 애니메이션*/ ጉዳይ 2: strip1. ActivePattern = SCANNER; 1. ኢንተርቫል = 10; strip1. TotalSteps = (strip1.numPixels () - 1) * 2; ሰበር; /*네번째 버튼 을 활동 시키면 구동 되는 애니메이션*/ መያዣ 3: strip1. ActivePattern = TWINKLE; 1. ኢንተርቫል = 1; strip1. TotalSteps = strip1.numPixels (); ሰበር; /*다섯 번째 버튼 을 활동 시키면 구동 되는/*/ ጉዳይ 4: strip1. ActivePattern = METEOR; 1. ኢንተርቫል = 10; strip1. TotalSteps = strip1.numPixels (); ሰበር; } Serial.print (buttonCounter [0]); Serial.print (","); Serial.println (buttonCounter [1]);
///// ቀይር_3 //////////////////// /////////////////////////////// /////////////////////////////////
መቀየሪያ (buttonCounter [1]) {case 0: strip2. ActivePattern = STAR; 2. ኢንተርቫል = 50; strip2. TotalSteps = strip2.numPixels (); ሰበር; መያዣ 1: strip2. ActivePattern = RAINBOWSPARKLE; 2. ኢንተርቫል = 100; strip2. TotalSteps = strip2.numPixels (); ሰበር; መያዣ 2: strip2. ActivePattern = SCANNER; 2. ኢንተርቫል = 20; strip2. TotalSteps = (strip2.numPixels () - 1) * 2; ሰበር; መያዣ 3: strip2. ActivePattern = TWINKLE; 2. ኢንተርቫል = 5; strip2. TotalSteps = strip2.numPixels (); ሰበር; መያዣ 4: strip2. ActivePattern = METEOR; 2. ኢንተርቫል = 40; strip2. TotalSteps = strip2.numPixels (); ሰበር; } Serial.print (buttonCounter [0]); Serial.print (","); Serial.println (buttonCounter [1]);
///// ቀይር_4 //////////////////// //////////////////////////////// /////////////////////////////////
ማብሪያ (buttonCounter [2]) {case 0: strip3. ActivePattern = STAR; 3. ኢንተርቫል = 50; strip3. TotalSteps = strip3.numPixels (); ሰበር; መያዣ 1: strip3. ActivePattern = RAINBOWSPARKLE; strip3. ኢንተርቫል = 100; strip3. TotalSteps = strip3.numPixels (); ሰበር; መያዣ 2: strip3. ActivePattern = SCANNER; 3. ኢንተርቫል = 20; strip3. TotalSteps = (strip3.numPixels () - 1) * 2; ሰበር; መያዣ 3: strip3. ActivePattern = TWINKLE; 3. ኢንተርቫል = 5; strip3. TotalSteps = strip3.numPixels (); ሰበር; መያዣ 4: strip3. ActivePattern = METEOR; 3. ኢንተርቫል = 25; strip3. TotalSteps = strip3.numPixels (); ሰበር; } Serial.print (buttonCounter [0]); Serial.print (","); Serial.println (buttonCounter [1]);
///// ቀይር_5 //////////////////// //////////////////////////////// /////////////////////////////////
መቀየሪያ (buttonCounter [3]) {case 0: strip4. ActivePattern = STAR; 4. ኢንተርቫል = 50; strip4. TotalSteps = strip4.numPixels (); ሰበር; መያዣ 1: strip4. ActivePattern = RAINBOWSPARKLE; 4. ኢንተርቫል = 100; strip4. TotalSteps = strip4.numPixels (); ሰበር; መያዣ 2: strip4. ActivePattern = SCANNER; 4. ኢንተርቫል = 20; strip4. TotalSteps = (strip4.numPixels () - 1) * 2; ሰበር; መያዣ 3: strip4. ActivePattern = TWINKLE; 4. ኢንተርቫል = 5; strip4. TotalSteps = strip4.numPixels (); ሰበር; መያዣ 4: strip4. ActivePattern = METEOR; 4. ኢንተርቫል = 25; strip4. TotalSteps = strip4.numPixels (); ሰበር; } Serial.print (buttonCounter [0]); Serial.print (","); Serial.println (buttonCounter [1]);
///// ቀይር_6 //////////////////// /////////////////////////////// /////////////////////////////////
መቀየሪያ (buttonCounter [4]) {case 0: strip5. ActivePattern = STAR; 5. ኢንተርቫል = 50; strip5. TotalSteps = strip5.numPixels (); ሰበር; መያዣ 1: strip5. ActivePattern = RAINBOWSPARKLE; 5. ኢንተርቫል = 100; strip5. TotalSteps = strip5.numPixels (); ሰበር; መያዣ 2: strip5. ActivePattern = SCANNER; 5. ኢንተርቫል = 20; strip5. TotalSteps = (strip5.numPixels () - 1) * 2; ሰበር; መያዣ 3: strip5. ActivePattern = TWINKLE; 5. ኢንተርቫል = 5; strip5. TotalSteps = strip5.numPixels (); ሰበር; መያዣ 4: strip5. ActivePattern = METEOR; 5. ኢንተርቫል = 25; strip5. TotalSteps = strip5.numPixels (); ሰበር; } Serial.print (buttonCounter [0]); Serial.print (","); Serial.println (buttonCounter [1]); }
// strip1 የማጠናቀቂያ ጥሪ መመለስ
ባዶ ባዶ 1 ሙሉ () {strip1. Color1 = strip1. Hel (የዘፈቀደ (255)); strip1. Color2 = strip1. ተረከዝ (በዘፈቀደ (255)); 1. ማውጫ = 0; }
// strip2 ማጠናቀቂያ ጥሪ መመለስ
ባዶ ባዶ strip2Complete () {strip2. Color1 = strip2. Wel (የዘፈቀደ (255)); strip2. Color2 = strip2. ተረከዝ (በዘፈቀደ (255)); strip2. ማውጫ = 0; }
// strip3 የማጠናቀቂያ ጥሪ መመለስ
ባዶ ባዶ strip3Complete () {strip3. Color1 = strip3. Wel (የዘፈቀደ (255)); strip3. Color2 = strip3. ተረከዝ (በዘፈቀደ (255)); ጭረት 3. ማውጫ = 0; }
// strip4 የማጠናቀቂያ ጥሪ መመለስ
ባዶነት strip4Complete () {strip4. Color1 = strip4. Wel (የዘፈቀደ (255)); strip4. Color2 = strip4. ተረከዝ (በዘፈቀደ (255)); strip4. ማውጫ = 0; }
// strip5 የማጠናቀቂያ ጥሪ
ባዶ ባዶ 5 ኮምፕሌት () {strip5. Color1 = strip5. ዊል (የዘፈቀደ (255)); strip5. Color2 = strip5. ተረከዝ (በዘፈቀደ (255)); 5. ማውጫ = 0; }
ደረጃ 6 ውጤት እና ፊልም መስራት
በቂ ባይሆንም በፕሮጀክታችን ላይ ላሳዩት ፍላጎት እናመሰግናለን።
የሚመከር:
የመቀያየር-ተስማሚ መጫወቻዎች-የዎልቮል የእሳት አደጋ መኪና ተደራሽ እንዲሆን ተደርጓል !: 7 ደረጃዎች
የመቀየሪያ-ተጣጣፊ መጫወቻዎች-የዎልቮል የእሳት አደጋ መኪና ተደራሽ እንዲሆን ተደረገ !: የመጫወቻ መላመድ ውስን የሞተር ችሎታዎች ወይም የእድገት እክል ያለባቸው ልጆች በተናጠል ከአሻንጉሊቶች ጋር እንዲገናኙ አዲስ መንገዶችን እና ብጁ መፍትሄዎችን ይከፍታል። በብዙ አጋጣሚዎች ፣ የተጣጣሙ መጫወቻዎችን የሚጠይቁ ልጆች ወደ ውስጥ መግባት አይችሉም
LM2576 [Buck Converter, CC-CV] በመጠቀም ተለዋዋጭ የመቀያየር የኃይል አቅርቦት 5 ደረጃዎች
LM2576 [Buck Converter, CC-CV] ን በመጠቀም ተለዋዋጭ የመቀያየር ኃይል አቅርቦት-የኃይል አቅርቦቶችን መቀያየር በከፍተኛ ብቃት ይታወቃል። የሚስተካከል ቮልቴጅ/የአሁኑ አቅርቦት እንደ ሊቲየም-አዮን/ሊድ-አሲድ/ኒሲዲ-ኒኤምኤች ባትሪ መሙያ ወይም ራሱን የቻለ የኃይል አቅርቦት ባሉ በብዙ መተግበሪያዎች ውስጥ ሊያገለግል የሚችል አስደሳች መሣሪያ ነው። ውስጥ
ብጁ የብርሃን ፓነል ፒሲቢዎችን በመጠቀም በጣም ብሩህ የብስክሌት መብራት 8 ደረጃዎች (ከስዕሎች ጋር)
ብጁ የብርሃን ፓነል ፒሲቢዎችን በመጠቀም በጣም ብሩህ የብስክሌት መብራት - ብስክሌት ከያዙ ታዲያ ጎማዎችዎ እና ሰውነትዎ ላይ ምን ያህል ደስ የማይል ጉድጓዶች ሊሆኑ እንደሚችሉ ያውቃሉ። ጎማዎቼን ማፍሰስ በቂ ስለነበረኝ እንደ ብስክሌት መብራት ለመጠቀም በማሰብ የራሴን መሪ ፓነል ለመንደፍ ወሰንኩ። ኢ መሆን ላይ የሚያተኩር
ባለቀለም ብርሃንን (RGB LED) በመጠቀም የድምፅ ሞገዶችን ይመልከቱ 10 ደረጃዎች (ከስዕሎች ጋር)
ባለቀለም ብርሃንን (RGB LED) በመጠቀም የድምፅ ሞገዶችን ይመልከቱ -በመካከላቸው ያለው ክፍተት የተለያዩ ስለሆነ የድምፅ ሞገዶችን ማየት እና በሁለት ወይም ከዚያ በላይ አስተላላፊዎች የተሰሩትን ጣልቃ ገብነት ንድፎችን ማየት ይችላሉ። (በስተግራ ፣ የሁለት ማይክሮፎኖች ጣልቃ ገብነት ንድፍ በ 40,000 ዑደቶች በሰከንድ ፣ ከላይ በስተቀኝ ፣ አንድ ማይክሮፎን
የእሽቅድምድም ምላሽ ጊዜ ይጎትቱ - 5 ደረጃዎች (ከስዕሎች ጋር)
የውድድር ምላሽ ጊዜ ይጎትቱ - በዚህ አስተማሪ ውስጥ ፣ የመጎተት ውድድር ምላሽ ጊዜ አሰልጣኝ እንዴት እንደሚፈጥሩ አሳያችኋለሁ። ሁሉም ነገር ከተጠናቀቀ ፣ በሁሉም መብራቶች ውስጥ ለማሽከርከር እና የምላሽ ጊዜን ለማግኘት አንድ ቁልፍን መጠቀም ይችላሉ። ከፍተኛዎቹ ሁለት ቢጫ ሊዶች ቲን ይወክላሉ