ዝርዝር ሁኔታ:
ቪዲዮ: ሮቦ-ቤልፕፕ እንዴት እንደሚሠራ -3 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:34
ተጨማሪ በ ደራሲው ይከተሉ
ስለ: ነገሮችን መለየት እና እንዴት እንደሚሠሩ መገመት እወዳለሁ። ከዚያ በኋላ በአጠቃላይ ወለድ እፈታለሁ። ስለ ጄፍሪፍ ተጨማሪ »
ይህ አስተማሪ ተንቀሳቃሽ ደወልን ለመሥራት iRobot ፍጠርን እንዴት እንደሚጠቀም ያሳያል። ይህ ከካሮል ዳንሰርስ መመሪያ ፈቃድ ሙሉ በሙሉ ተነስቷል ፣ እና እኛ እንደ ውድድሩ ናሙና መግቢያ አድርጌዋለሁ። ሮቦ-ቤልሆፕ ቦርሳዎችዎን ፣ ሸቀጣ ሸቀጣ ሸቀጣ ሸቀጦችን ፣ የልብስ ማጠቢያዎችን ፣ ወዘተ ለመሸከም የራስዎ የግል ረዳት ሊሆን ይችላል ፣ ስለዚህ እርስዎ እንዳይኖሩዎት ወደ. መሠረታዊው ፍጠር ከላዩ ላይ አንድ መያዣ አለው እና የባለቤቱን IR ማስተላለፊያ ለመከተል ሁለት በቦርዱ ላይ የ IR መመርመሪያዎችን ይጠቀማል። በጣም መሠረታዊ በሆነ የ C ሶፍትዌር ኮድ ተጠቃሚው ከባድ ሸቀጣ ሸቀጦችን ፣ ትልቅ የልብስ ማጠቢያ ጭነት ወይም የሌሊት ቦርሳዎን በሮቦ -ቤልሆፕ ላይ መጠበቅ እና ሮቦቱ በመንገድ ላይ ፣ በገበያ አዳራሹ ፣ በአዳራሹ ወይም በአየር ማረፊያው በኩል እንዲከተልዎት ማድረግ ይችላል - - ተጠቃሚው በሄደበት ሁሉ መሰረታዊ አሠራር 1) የትእዛዝ ሞዱሉን ለማብራት እና ዳሳሾችን እየተሳተፉ 1 ሀ) የዳግም አስጀምር ቁልፍን ይምቱ) እርስዎ እንዲከተሉ የ IR አስተላላፊውን ሲያይ የ Play LED መብራት አለበት 1 ለ) የቅድሚያ LED ሲበራ ሮቦቱ በጣም ቅርብ በሆነ ክልል ውስጥ ነው 2) ሮቦ-ቤልሆፕ ልማድን ለማሄድ ጥቁር ለስላሳ ቁልፍን ይምቱ 3) የ IR አስተላላፊውን ከቁርጭምጭሚቱ ጋር ያያይዙ እና መብራቱን ያረጋግጡ። ከዚያ ቅርጫቱን ይጫኑ እና ይሂዱ! ክልል (በጣም ሩቅ ወይም በጣም ጥግ በሆነ አንግል) ፣ ሮቦቱ ምልክቱ እንደገና ከተነሳ በቀስታ ፍጥነት በአጭር ርቀት ይጓዛል 4c) የ IR ምልክቱ ካልተገኘ ሮቦቱ በግራ እና በቀኝ ምልክቱን እንደገና ለማግኘት ይሞክሩ 4 ዲ) የ IR ምልክቱ ከተገኘ ግን ሮቦቱ እንቅፋት ቢገጥመው ፣ ሮቦቱ እንቅፋቱን ዙሪያ ለመንዳት ይሞክራል። የባለቤቱ ቁርጭምጭሚቶች ሃርድዌር 1 አይሮቦት ምናባዊ የግድግዳ አሃድ - $ 301 አይአር ፈላጊ ከሬዲዮሻክ - $ 31 DB -9 ወንድ አያያዥ ከሬዲዮ ሻክ - $ 44 6-32 ብሎኖች ከ Home Depot - $ 2.502 3V ባትሪዎች ፣ ከዒላማው D1 የልብስ ማጠቢያ ቅርጫት ተጠቀምኩ - $ 51 ተጨማሪ ጎማ ወደ ከሮቦት ኤሌክትሪክ ኤሌክትሪክ ቴፕ ፣ ሽቦ እና መሸጫ ጀርባ
ደረጃ 1: የ IR ዳሳሹን መሸፈን
በሮቦት ፍጠር ፊት ለፊት ካለው የ IR ዳሳሽ ትንሽ ስንጥቅ በስተቀር ሁሉንም ለመሸፈን የኤሌክትሪክ ቴፕ ያያይዙ። ምናባዊውን የግድግዳ ክፍል ያላቅቁ እና በአከባቢው ፊት ለፊት ያለውን ትንሽ የወረዳ ሰሌዳ ያውጡ። ብዙ የተደበቁ ብሎኖች እና የፕላስቲክ ተራሮች ስላሉ ይህ ትንሽ አስቸጋሪ ነው። የ IR አስተላላፊው በወረዳ ሰሌዳ ላይ ነው። የ IR ን ነፀብራቅ ለማስወገድ የ IR አስተላላፊውን በጨርቅ ወረቀት ይሸፍኑ። የወረዳ ሰሌዳውን በቁርጭምጭሚትዎ ላይ መጠቅለል ከሚችል ገመድ ወይም ተጣጣፊ ባንድ ጋር ያያይዙት። ባትሪዎቹን ምቹ በሆነ ቦታ እንዲይዙዎት ባትሪዎቹን ወደ ወረዳው ቦርድ ያያይዙት (ባትሪዎቹን በኪሴ ውስጥ ማስቀመጥ እችል ነበር)።
2 ኛውን IR ፈታሽ ወደ DB-9 አያያዥ ያገናኙ እና በጭነት ቤይ ePort ፒን 3 (ምልክት) እና ፒን 5 (መሬት) ውስጥ ያስገቡ። 2 ኛ IR ፈላጊው ሮቦቱ እንዲቆም እንዲፈልጉት በሚፈልጉት ርቀት ላይ 2 ኛ IR ፈላጊውን አሁን ካለው የ IR ዳሳሽ አናት ላይ ያያይዙት እና በሁለት የቲሹ ወረቀት ንብርብሮች ይሸፍኑት። እርስዎን ከመምታት። ዳግም ማስጀመሪያ ቁልፍን ከመታቱ እና በማቆሚያው ርቀት ላይ ሲሆኑ ለመቀጠል የቅድሚያ LED ን ከተመለከቱ በኋላ ይህንን መሞከር ይችላሉ።
ደረጃ 2 ቅርጫቱን ያያይዙ
6-32 ዊንጮችን በመጠቀም ቅርጫቱን ያያይዙ። እኔ ብቻ ፍጠር ሮቦት አናት ላይ ቅርጫቱን ሰቀልኩ። በሮቦት ፍጠር ጀርባ ላይ ክብደት እንዲያስቀምጡም በጀርባው ጎማ ውስጥ ይንሸራተቱ።
ማስታወሻዎች: - ሮቦቱ በጣም ትንሽ ጭነት ፣ ቢያንስ 30 ፓውንድ ሊሸከም ይችላል። - ትንሹ መጠን ማንኛውንም ሻንጣ እንዲይዝ ማድረጉ በጣም ከባድ ይመስላል - አይአር በጣም ጠበኛ ነው። ምናልባት ምስልን መጠቀም የተሻለ ነው ግን በጣም ውድ ነው
ደረጃ 3: የምንጭ ኮዱን ያውርዱ።
የምንጭ ኮዱ ይከተላል ፣ እና በጽሑፍ ፋይል ውስጥ ተያይ isል-
/************************************************* ************* የ IR ዳሳሽ ** ፍጠር ምናባዊ ግድግዳ (ወይም ማንኛውም የ ** ኃይል-መስክ ምልክትን የሚልክ) ይከተላል እና በሂደቱ ውስጥ እንቅፋቶችን ያስወግዳል ብለን ተስፋ እናደርጋለን ***************** *************************************************** **/#interrupt.h>#include io.h>#ያካትቱ#ያካትታሉ "oi.h"#መግለፅ TRUE 1#ፍቺን 0#ይግለጹ FullSpeed 0x7FFF#ይግለጹ SlowSpeed 0x0100#የፍለጋ ፍጥነት 0x0100#ይግለጹ ExtraAngle 10#ይግለጹ SearchLeftAngle 125#SearchRightAngle (SearchLeftAngle - 1000) #define CoastDistance 150#TraceDistance 250#TraceAngle 30#ን ይገልፃል BackDistance 25#IRR ተገኝቷል (~ ፒንቢ እና 0x01) // ግዛቶች#ዝግጁነትን ይግለጹ 1#መግለፅ 1 #ፍተሻ ግራ 3#ፍተሻ ቀኝ 4 ን ይግለጹ TracingLeft 5#TracingRight 6 ን ይግለጹ#BackingTraceLeft 7#ፍቺ BackingTraceRight 8 // Global variablesv ተለዋዋጭ uint16_t timer_cnt = 0; ተለዋዋጭ uint8_t timer_on = 0; ተለዋዋጭ uint8_t sensors_flag = 0; ተለዋዋጭ uint8_t sensors_index = 0; ተለዋዋጭ uint8_t sensors_in ውስጥ [Sen6Size]; ተለዋዋጭ uint8_t inRange = 0; // ተግባሮች byteTx (uint8_t እሴት) ያስወግዱ ፣ ባዶ መዘግየቶች ኤምኤምኤስ (uint16_t time_ms) ፣ ባዶ መዘግየትAndCheckIR (uint16_t time_ms) ፤ ባዶ መዘግየት AndUpdateSensors (ያልተፈረመ int time_ms) ፤ ባዶነት (ባዶ) ባዶ (ባዶ) ባዶ (ባዶ) ባውድ (uint8_t baud_code); ባዶ ድራይቭ (int16_t ፍጥነት ፣ int16_t ራዲየስ) ፤ 0; // ፍጠር እና ሞጁልን (()) ያዘጋጁ () ፤ LEDBothOff ፤ powerOnRobot () ፤ byteTx (CmdStart) ፤ baud (Baud28800) ፤ byteTx (CmdControl) ~ 0x01; // ግቤት እንዲሆን የካርጎ ቤይ ePort ፒን 3 ን ያዘጋጁ PORTB | = 0x01; // የጭነት ePort pin3 pullup ነቅቷል // የፕሮግራም አዙሪት (እውነት) {// ልክ እንደ ቅድመ ጥንቃቄ (0 ፣ RadStraight) ፤ // አዘጋጅ LEDsbyteTx (CmdLeds); byteTx (((ዳሳሾች [SenVWall])? LEDPlay: 0x00) ((inRange? LEDAdvance: 0x00)) ፤ ባይትቴክስ (ዳሳሾች [SenCharge1]) ፤ ባይትቴክስ (64) ፣ IRDetected? LED2On: LED2Off; inRange? (10) ፤ ከሆነ (UserButtonPressed) {delayAndUpdateSensors (1000) ፤ // active loopwhile (! (UserButtonPressed) && (! Sensors [SenCliffL]) && (! Sensors [SenCliffFL]) && (! Sensors [SenCliffFR]) && (! ዳሳሾች [SenCliffR])) {byteTx (CmdLeds); byteTx (((sensors [SenVWall]))? LEDPlay: 0x00) | (inRange? LEDAdvance: 0x00)); byteTx (sensors [SenCharge1]); byteTx (255); IRDetected ? ቀጥ ያለ ድራይቭ (SlowSpeed ፣ RadStraight) ፤ ሁኔታ = መከተል ፤}} ሌላ {// ምሰሶውን = 0 ፤ ርቀትን = 0 ፤ ተጠባባቂ_ኮተርን ይፈልጉ = 0; ተገኝቷል = ሐሰት; መንዳት (SearchSpeed ፣ RadCCW) ፤ state = SearchingLeft;} break; case following: if (sensors [SenBumpDrop] & BumpRight) {distance = 0; angle = 0; drive (-SlowSpeed, RadStraight); state = BackingTraceLeft;} ሌላ ከሆነ (ዳሳሾች [SenBumpDrop] & BumpLeft) {distance = 0; angle = 0; drive (-SlowSpeed, RadStraight); state = BackingTraceRight;} ሌላ ከሆነ (ዳሳሾች [SenVWall]) {// ይፈትሹ ከመሪፍ (inRange) {drive (0, RadStraight) ፤ state = ዝግጁ ፤} ሌላ {// drive straightdrive (FullSpeed ፣ RadStraight) ፤ state = following;}} ሌላ {// ዝም ብሎ ምልክቱን አጣ ፣ ቀስ በቀስ አንድ ይቀጥሉ ሳይክሊስትስታንስ = 0; ድራይቭ (SlowSpeed ፣ RadStraight) ፤ ግዛት = WasFollowing;} እረፍት ፤ ጉዳይ WasFollowing: ከሆነ (ዳሳሾች [SenBumpDrop] & BumpRight) {ርቀት = 0 ፤ አንግል = 0 ፤ መንዳት (-SlowSpeed ፣ RadStraight) ፤ ግዛት = BackingTraceLeft;} ሌላ ከሆነ (ዳሳሾች [SenBumpDrop] & BumpLeft) {distance = 0; angle = 0; drive (-SlowSpeed, RadStraight); state = BackingTraceRight;} ሌላ ከሆነ (ዳሳሾች [SenVWall]) {// ወደ leaderif ቅርበት ያረጋግጡ (inRange) {drive (0 ፣ RadStraight) ፤ state = R ፈጣን;;} ዕረፍት ፣ የጉዳይ ፍለጋ ፍለጋ - ከተገኘ (ከተገኘ) {ከሆነ (አንግል> = ExtraAngle) {ድራይቭ (SlowSpeed ፣ RadStraight) ፤ state = መከተል ፤} ሌላ {drive (SearchSpeed ፣ RadCCW) ፤}} ሌላ ከሆነ (ዳሳሾች [SenVWall]) {found = TRUE; angle = 0; ከሆነ (inRange) {drive (0, RadStraight) ፤ state = ዝግጁ ፤} ሌላ {drive (SearchSpeed ፣ RadCCW) ፤}} ሌላ ከሆነ (አንግል> = SearchLeftAngle) {drive (SearchSpeed ፣ RadCW); wait_counter = 0; state = SearchingRight;} ሌላ {drive (SearchSpeed, RadCCW);} break; case SearchingRight: if (found) {if (-angle> = ExtraAngle) {drive (SlowSpeed, RadStraight); state = እየተከተለ ፤} ሌላ {drive (SearchSpeed ፣ RadCW) ፤}} ሌላ ከሆነ (ዳሳሾች [SenVWall]) {found = TRUE; angle = 0; if (inRange) {drive (0, RadStraight) ፤ state = Ready;} ሌላ {drive (SearchSpeed ፣ RadCCW) ፤}} ሌላ ከሆነ (wait_counter> 0) {wait_counter -= 20; drive (0 ፣ RadStraight) ፤} ሌላ ከሆነ (አንግል = ፍለጋ RightAngle) {drive (0, RadStraight); wait_counter = 5000; angle = 0;} ሌላ {drive (SearchSpeed, RadCW);} break; case TracingLeft: if (sensors [SenBumpDrop] & BumpRight) {distance = 0; angle = 0; ድራይቭ (-SlowSpeed ፣ RadStraight) ፤ state = BackingTraceLeft;} ሌላ ከሆነ (ዳሳሾች [SenBumpDrop] & BumpLeft) {drive (0 ፣ RadStraight) ፤ state = ዝግጁ;} ሌላ ከሆነ (ዳሳሾች [SenVWall]) {// ይፈትሹ ከመሪ (ቅርበት) ({inRange) {drive (0, RadStraight) ፤ state = ዝግጁ ፤} ሌላ {// drive straightdrive (SlowSpeed ፣ RadStraight) ፤ state = following;}} ሌላ ከሆነ (! (ርቀት> = TraceDistance)) { ድራይቭ (SlowSpeed ፣ RadStraight) ፤} ሌላ ከሆነ (! (-angle> = TraceAngle)) {drive (SearchSpeed ፣ RadCW) ፤} ሌላ {ርቀት = 0 ፤ አንግል = 0 ፤ ድራይቭ (SlowSpeed ፣ RadStraight) ፤ ሁኔታ = ዝግጁ; } ዕረፍት ፣ ጉዳይ TracingRight: ከሆነ (ዳሳሾች [SenBumpDrop] & BumpRight) {drive (0, RadStraight) ፤ state = ዝግጁ;} ሌላ ከሆነ (ዳሳሾች [SenBumpDrop] & BumpLeft) {ርቀት = 0 ፤ አንግል = 0 ፤ መንዳት (- SlowSpeed, RadStraight); state = BackingTraceRight;} ሌላ ከሆነ (ዳሳሾች [SenVWall]) {// ወደ መሪ (ኢራን) ቅርበት ያረጋግጡ ሠ) {drive (0 ፣ RadStraight) ፤ state = ዝግጁ ፤} ሌላ {// drive straightdrive (SlowSpeed ፣ RadStraight) ፤ state = following;}} ሌላ ከሆነ (! (ርቀት> = TraceDistance)) {drive (SlowSpeed ፣ RadStraight);} ሌላ ከሆነ (! (angle> = TraceAngle)) {drive (SearchSpeed, RadCCW);} ሌላ {distance = 0; angle = 0; drive (SlowSpeed, RadStraight); state = Ready;} break; case BackingTraceLeft: ከሆነ (ዳሳሾች [SenVWall] && inRange) {drive (0, RadStraight) ፤ state = Ready;} ሌላ ከሆነ (አንግል> = TraceAngle) {distance = 0; angle = 0; drive (SlowSpeed, RadStraight); state = TracingLeft; } ሌላ ከሆነ (-distance> = BackDistance) {drive (SearchSpeed, RadCCW) ፤} ሌላ {drive (-SlowSpeed ፣ RadStraight) ፤} መቋረጥ ፤ ጉዳይ BackingTraceRight: ከሆነ (ዳሳሾች [SenVWall] && inRange) {drive (0, RadStraight); ሁኔታ = ዝግጁ;} ሌላ ከሆነ (-angle> = TraceAngle) {distance = 0; angle = 0; drive (SlowSpeed, RadStraight); state = TracingRight; ፣ RadCW) ፤} ሌላ {ድራይቭ (-SlowSpeed ፣ RadStraight) ፤} እረፍት ፤ ነባሪ // stopdrive (0 ፣ RadStraight) ፤ state = Re አድይ ፣ ዕረፍት ፣ // ተከታታይ ዳሳሽ እሴቶችን ለማከማቸት መቋረጥ ሲግናል (SIG_USART_RECV) {uint8_t temp; temp = UDR0 ፣ ከሆነ (sensors_flag) {sensors_in [sensors_index ++] = temp; ከሆነ (sensors_index> = Sen6Size) sensors_flag = 0;}} // ሰዓት ቆጣሪ 1 መቋረጥ በ msSIGNAL (SIG_OUTPUT_COMPARE1A) ውስጥ ወደ ጊዜ መዘግየቶች {ከሆነ (timer_cnt) timer_cnt-; elsetimer_on = 0;} // ባይት ያስተላልፉ byteTx (uint8_t እሴት) {ሳለ (! (UCSR0A & _BV (UDRE0))); UDR0 = እሴት;} // የአነፍናፊ እሴቶችን ሳያዘምኑ በተጠቀሰው ጊዜ ውስጥ በ ms ውስጥ መዘግየት ኤምኤም (uint16_t time_ms) {timer_on = 1; timer_cnt = time_ms; while (timer_on);} // ms ውስጥ ለተጠቀሰው ጊዜ መዘግየት እና ሁለተኛውን ይመልከቱ የ IR ፈላጊ መዘግየትን ያስወግዱ እና ‹CeckIR (uint16_t time_ms) {uint8_t timer_val = 0; inRange = 0; timer_on = 1; timer_cnt = time_ms; ሳለ (timer_on) {if (! (Timer_val == timer_cnt)) {inRange + = IRDetected; timer_val = timer_cnt;}} inRange = (inRange> = (time_ms >> 1));} // በ ms ውስጥ ለተጠቀሰው ጊዜ መዘግየት እና አነፍናፊ እሴቶችን መዘግየትን ያስወግዱ እና መዘግየትን ያስወግዱ (uint16_t time_ms) {uint8_t temp; timer_on = 1; timer_cnt = time_ms; ሳለ (timer_on) {ከሆነ (! sensors_flag) {ለ (temp = 0; temp Sen6Size; temp ++) ዳሳሾች [temp] = sensors_in [temp]; // የሩጫ እና angledistance ድምር ድምርን ያዘምኑ += (int) ((ዳሳሾች [SenDist1] 8) | ዳሳሾች [SenDist0]) ፤ አንግል += (int) ((ዳሳሾች)] // እኔ/ኦ ፒን ዲ ዲ አርቢ = 0x10 ፤ PORTB = 0xCF ፤ DDRC = 0x00 ፤ PORTC = 0xFF ፤ DDRD = 0xE6 ፤ PORTD = 0x7D ፤ // በየ 1 msTCCR1A = 0x00 ፤ TCCR1B = (_BV) መቋረጥ ለማመንጨት ሰዓት ቆጣሪ 1 ያዘጋጁ። (WGM12) | _BV (CS12)) ፤ OCR1A = 71 ፤ TIMSK1 = _BV (OCIE1A) ፤ // ተከታታይ ወደቡን በ rx interruptUBRR0 = 19 ያቋርጡ UCR0B = (_BV (RXCIE0) | _BV (TXEN0) | _BV (RXEN0))); ! RobotIsOn) {RobotPwrToggleLow; delayMs (500); // በዚህ ሁኔታ ውስጥ መዘግየትRobotPwrToggleHigh; // የኃይል መቀነሻ (100) ለመቀየር ከዝቅተኛ ወደ ከፍተኛ ሽግግር; // በዚህ ሁኔታ ውስጥ መዘግየትRobotPwrToggleLow;} delayMs (3500); // ለጅምር መዘግየት}} // በሁለቱም ላይ የባውድ ተመን ይለውጡ እና ሞዱል ባውድ (uint8_t baud_code) {if (baud_code = 11) {byteTx (CmdBaud) ፤ UCSR0A | = _BV (TXC0) ፤ byteTx (baud_code) ፤/ / ማስተላለፉ እስኪጠናቀቅ ድረስ ይጠብቁ (! (UCSR0A & _BV (TXC0))) ፤ cli () ፤ // የባውድ መመዝገቢያ መመዝገቢያ (baud_code == Baud115200) UBRR0 = Ubrr115200 ይቀየር ፤ ሌላ ከሆነ (baud_code == Baud57600) UBRR0 = Ubrr77600; ሌላ ከሆነ (baud_code == Baud38400) UBRR0 = Ubrr38400; ሌላ ከሆነ (baud_code == Baud28800) UBRR0 = Ubrr28800; ሌላ ከሆነ (baud_code == Baud19200) UBRR0 = Ubrr19200; ከሆነ (baud_code == Baud9600) UBRR0 = Ubrr9600; ሌላ ከሆነ (baud_code == Baud4800) UBRR0 = Ubrr4800; ሌላ ከሆነ (baud_code == Baud2400) UBRR0 = Ubrr2400; ሌላ ከሆነ (baud_code == Baud1200) ሌላ baud_code == Baud600) UBRR0 = Ubrr600; ሌላ ከሆነ (baud_code == Baud300) UBRR0 = Ubrr300; sei (); delayMs (100);}} // የፍጥነት እና ራዲየስ አንፃፊ (int16_t velocity ፣ int16_t) አንፃር የመንጃ ትዕዛዞችን ይፍጠሩ። ራዲየስ) {byteTx (CmdDrive); byteTx ((uint) & 0x00FF));}
የሚመከር:
ዊንዶውስ 10 በ Raspberry Pi ላይ እንዴት እንደሚሠራ 3 ደረጃዎች
ዊንዶውስ 10ን በ Raspberry Pi ላይ እንዴት እንደሚሠራ -መስኮቶችን 10 በ Rasberryberry ፓ ላይ እንዲሠራ ማድረግ ትንሽ ተስፋ አስቆራጭ ሊሆን ይችላል ግን ይህ መመሪያ ሁሉንም Raspberry Pi Windows 10 ተዛማጅ ችግሮችዎን ይፈታል።
የ LED ኦዲዮ ስፔክትረም ተንታኝ እንዴት እንደሚሠራ -7 ደረጃዎች (ከስዕሎች ጋር)
የ LED ኦዲዮ ስፔክትረም ተንታኝ እንዴት እንደሚሠራ - የ LED ኦዲዮ ስፔክትረም ተንታኝ በሙዚቃው ጥንካሬ መሠረት ውብ የመብራት ዘይቤን ይፈጥራል። በገበያው ውስጥ ብዙ DIY LED Music Spectrum ስብስቦች አሉ ፣ ግን እዚህ እኛ የ LED ኦዲዮ ስፔክትረም እናደርጋለን። NeoPixe ን በመጠቀም ተንታኝ
የአሩዲኖ ጊታር መቃኛ እንዴት እንደሚሠራ -4 ደረጃዎች
የአርዱዲኖ ጊታር መቃኛ እንዴት እንደሚሠራ - እነዚህ ከአርዱዲኖ እና ከሌሎች በርካታ አካላት የጊታር ማስተካከያ ለማድረግ መመሪያዎች ናቸው። በኤሌክትሮኒክስ እና በኮድ ኮድ መሠረታዊ እውቀት ይህንን የጊታር ማስተካከያ ማድረግ ይችላሉ። በመጀመሪያ ነገሮች በመጀመሪያ ምን እንደሆኑ ማወቅ አለብዎት ማ
DIY እንዴት አሪፍ የሚመስል ሰዓት እንዴት እንደሚሠራ - StickC - ለመሥራት ቀላል: 8 ደረጃዎች
DIY እንዴት አሪፍ የሚመስል እይታን እንደሚሰራ - StickC - ለመስራት ቀላል ነው - በዚህ መማሪያ ውስጥ ESD32 M5Stack StickC ን ከአርዱዲኖ አይዲኢ እና ቪሱኖ ጋር እንዴት በኤልሲዲ ላይ ጊዜ ለማሳየት እና እንዲሁም የ StickC አዝራሮችን በመጠቀም ጊዜውን እንደሚያዘጋጁ እንማራለን።
ሮታሪ ኢንኮደር -እንዴት እንደሚሠራ እና ከአርዱዲኖ ጋር እንዴት እንደሚጠቀሙበት -7 ደረጃዎች
ሮታሪ ኢንኮደር - እንዴት እንደሚሠራ እና ከአርዱዲኖ ጋር እንዴት እንደሚጠቀም - ይህንን እና ሌሎች አስደናቂ ትምህርቶችን በኤሌክትሮክ ፒክ ኦፊሴላዊ ድር ጣቢያ ላይ ማንበብ ይችላሉ አጠቃላይ እይታ በዚህ መማሪያ ውስጥ ፣ የ rotary encoder ን እንዴት እንደሚጠቀሙ ያውቃሉ። በመጀመሪያ ፣ ስለ ተዘዋዋሪ መቀየሪያ አንዳንድ መረጃዎችን ያያሉ ፣ ከዚያ እንዴት እንደሚማሩ ይማራሉ