ዝርዝር ሁኔታ:
- አቅርቦቶች
- ደረጃ 1 - ዲጂታል ሰዓት እንዴት እንደሚሰራ
- ደረጃ 2 - የስቴቱ ማሽን
- ደረጃ 3: LCD የቁልፍ ሰሌዳ መከለያ
- ደረጃ 4 - የስቴቱ ማሽንን ማገናኘት
- ደረጃ 5 - ነገሮችን በአንድ ላይ ማገናኘት
- ደረጃ 6: ምሳሌውን ያግኙ
ቪዲዮ: አንድ የመጨረሻ ግዛት ማሽን በመጠቀም በአርዱዲኖ ላይ ዲጂታል ሰዓት -6 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:31
ሄይ ፣ እኔ እንዴት የዲጂታል ሰዓት በ YAKINDU Statechart Tools እንደሚፈጠር እና ኤልዲዲ የቁልፍ ሰሌዳ ጋሻን በሚጠቀም አርዱinoኖ ላይ እንደሚሠራ አሳያችኋለሁ።
የዲጂታል ሰዓቱ የመጀመሪያው ሞዴል ከዳዊት ሃረል ተወስዷል። ስለ አንድ ወረቀት አውጥቷል
“[…] የመንግሥት ማሽኖች እና የግዛት ሥዕላዊ መግለጫዎች መደበኛ ፎርማሊዝም ሰፊ ማራዘሚያ።
በዚህ ጽሑፍ ውስጥ ለምርምርው የዲጂታል ሰዓቱን ምሳሌ ተጠቅሟል። እኔ እንደ መነሳሻ ተጠቀምኩትና ሰዓቱን በያኪንዱኡ ስቴት ቻርት መሣሪያዎች (የስቴቱ ማሽኖች ግራፊክ ሞዴሎችን ለመፍጠር እና ከእሱ ጋር ሲ/ሲ ++ ኮድ ለማመንጨት የሚያስችል መሣሪያ) እንደገና ገንብቼ በአርዱዲኖ ላይ ወደ ሕይወት አመጣሁት።
አቅርቦቶች
ሃርድዌር
- አርዱዲኖ ኡኖ ወይም ሜጋ
- ኤልሲዲ የቁልፍ ሰሌዳ መከለያ
ሶፍትዌር
- የያኪንዱ ግዛት ገበታ መሣሪያዎች
- ግርዶሽ ሲ ++ አይዲኢ ለአርዱዲኖ
ደረጃ 1 - ዲጂታል ሰዓት እንዴት እንደሚሰራ
ዲጂታል ሰዓቱ እንዴት መሥራት እንዳለበት በመግለጽ እንጀምር። እነዚህን ታስታውሳለህ… በ 90 ዎቹ ውስጥ ሁሉም ሰው የነበረበትን “እጅግ በጣም አሪፍ” ዲጂታል ሰዓቶች እንበል? የተቀናጀ የሩጫ ሰዓት ፣ የተለያዩ ማንቂያዎች እና የሚያበሳጭ ቢፕ በየሙሉ ሰዓት። ካልሆነ ፣ ይመልከቱ - የ 90 ዎቹ ዲጂታል ሰዓት።
ስለዚህ በመሠረቱ ከተለያዩ ሁነታዎች ጋር ሊዋቀር የሚችል ሰዓት ነው። በዋናነት ፣ የአሁኑ ጊዜ ይታያል ፣ ግን አንዳንድ ሌሎች ባህሪዎች አሉ። እንደ ግብዓት ፣ ማብሪያ/ማጥፊያ ፣ ሞድ እና ስብስብ አዝራር አለዎት። በተጨማሪም ፣ መብራቱን ማብራት እና ማጥፋት ይችላሉ። በሞድ አዝራሩ ሁነታዎች መካከል መለየት እና የሰዓት ባህሪያትን ማንቃት/ማሰናከል ይችላሉ-
- ሰዓቱን አሳይ (ሰዓት)
- ቀኑን (ቀን) ያሳዩ
- ማንቂያውን ያዘጋጁ (ማንቂያ 1 ፣ ማንቂያ 2)
- ቺም አንቃ/አሰናክል (ቺም አዘጋጅ)
- የሩጫ ሰዓቱን ይጠቀሙ (አቁም ይመልከቱ)
በምናሌዎች ውስጥ ሁነታን ለማዋቀር የማብሪያ/ማጥፊያ ቁልፍን መጠቀም ይችላሉ። የተቀመጠው አዝራር ጊዜውን እንዲያዘጋጁ ያስችልዎታል - ለምሳሌ። ለሰዓቱ ወይም ለማንቂያ ደወሎች። የማብራት እና የማብራት ቁልፍን በመጠቀም የሩጫ ሰዓቱ መቆጣጠር - መጀመር እና ማቆም ይችላል። እንዲሁም የተቀናጀ የጭን ቆጣሪን መጠቀም ይችላሉ
በተጨማሪም ፣ በየሙሉ ሰዓት ደወሎች የሚጮህ ፣ እና ሊቆጣጠረው የሚችል የጀርባ ብርሃን የተዋሃደ አንድ ቺም አለ። በመጀመሪያ ደረጃ ለአርዱዲኖ ሽቦ አልሰጠኋቸውም።
ደረጃ 2 - የስቴቱ ማሽን
ለዚህ ምሳሌ ማብራሪያ ብዙ በዝርዝር መሄድ አልፈልግም። በጣም የተወሳሰበ ስለሆነ አይደለም ፣ ትንሽ ትንሽ በጣም ትልቅ ነው። እንዴት እንደሚሰራ መሰረታዊ ሀሳቡን ለማብራራት እሞክራለሁ። አፈፃፀሙ ሞዴሉን በማየት ወይም በማውረድ እና በማስመሰል እራሱን የሚያብራራ መሆን አለበት። አንዳንድ የስቴቱ ማሽን ክፍሎች እንደ ተቀመጠው የጊዜ ክልል በክፍለ ክልሎች ተደምረዋል። በዚህ የስቴቱ ማሽን ተነባቢነት መረጋገጥ አለበት።
ሞዴሉ በሁለት ክፍሎች ተከፍሏል - ግራፊክ እና ጽሑፋዊ። በጽሑፋዊ ክፍል ውስጥ ክስተቶች ፣ ተለዋዋጮች ፣ ወዘተ ይገለፃሉ። በስዕላዊው ክፍል - የስቴቱ ዲያግራም - የአምሳያው አመክንዮአዊ አፈፃፀም ተዘርዝሯል። የተገለጸውን ባህሪ የሚያሟላ የስቴት ማሽን ለመፍጠር ፣ አንዳንድ የግብዓት ክስተቶች ያስፈልጋሉ ፣ ይህም በአምሳያው ውስጥ ጥቅም ላይ ሊውል ይችላል - ኦኖፍ ፣ ስብስብ ፣ ሞድ ፣ ብርሃን እና ብርሃን_ አር። በትርጓሜ ክፍሉ ውስጥ እያንዳንዱ ክስተት በ 100 ሚሴ የጊዜ እሴትን የሚጨምር ውስጣዊ ክስተት ጥቅም ላይ ይውላል።
በየ 100 ሚሴ / ጊዜ += 1
በ 100 ms ደረጃዎች ላይ በመመርኮዝ የአሁኑ ጊዜ በ HH: MM: SS ቅርጸት ይሰላል
display.first = (ጊዜ / 36000) % 24;
display.second = (ጊዜ / 600) % 60; display.third = (ጊዜ / 10) % 60;
የስቴቱ ማሽን በተጠራ ቁጥር የክዋኔውን ማዘመኛ (ኤልሲዲ) በመጠቀም እሴቶቹ ወደ ኤልሲዲ ማሳያ ይያዛሉ።
ማሳያ.
የስቴቱ ማሽን መሰረታዊ አፈፃፀም ቀድሞውኑ በክፍል ውስጥ ዲጂታል ሰዓት እንዴት እንደሚሰራ ተገል isል። በመሣሪያው ውስጥ እንደ ‹CompositeState› ፣ ታሪክ ፣ ንዑስ ሥዕላዊ መግለጫዎች ፣ መውጫ ኖዶች ፣ ወዘተ ያሉ አንዳንድ“ልዩ”ሞዴሊንግ አባሎችን ተጠቅሜያለሁ። ዝርዝር መግለጫ በተጠቃሚው መመሪያ ውስጥ ሊገኝ ይችላል።
ደረጃ 3: LCD የቁልፍ ሰሌዳ መከለያ
ኤልሲዲ የቁልፍ ሰሌዳ መከለያ ለዕይታ እይታ ማያ ገጽ እና አንዳንድ አዝራሮችን እንደ ግብዓት ለሚፈልጉ ቀላል ፕሮጄክቶች በጣም አሪፍ ነው - የተለመደ ፣ ቀላል ኤችኤምአይ (የሰው ማሽን በይነገጽ)። የኤልሲዲ ቁልፍ ሰሌዳ መከለያ አምስት የተጠቃሚ አዝራሮችን እና እንደገና ለማቀናበር ሌላ ይይዛል። አምስቱ አዝራሮች አንድ ላይ ሆነው ከአርዱዲኖ A0 ፒን ጋር ተገናኝተዋል። እያንዳንዳቸው ከ voltage ልቴጅ መከፋፈያ ጋር የተገናኙ ናቸው ፣ ይህም በአዝራሮቹ መካከል ለመለየት ያስችላል።
የተወሰኑ እሴቶችን ለማግኘት አናሎግ አንብብ (0) ን መጠቀም ይችላሉ ፣ በእርግጥ ፣ በአምራቹ ሊለያይ ይችላል። ይህ ቀላል ፕሮጀክት የአሁኑን እሴት በ LCD ላይ ያሳያል
#"Arduino.h" ን ያካትቱ
#"LiquidCrystal.h" LiquidCrystal lcd (8, 9, 4, 5, 6, 7) ያካትቱ; ባዶነት ማዋቀር () {lcd.begin (16, 2); lcd.setCursor (0, 0); lcd.write ("የሚለካ እሴት"); } ባዶነት loop () {lcd.setCursor (0, 1); lcd.print (""); lcd.setCursor (0, 1); lcd.print (analogRead (0)); መዘግየት (200); }
እነዚህ የመለኪያ ውጤቶቼ ናቸው -
- የለም - 1023
- ይምረጡ: 640
- ግራ - 411
- ታች - 257
- ወደ ላይ: 100
- ትክክል: 0
በእነዚህ ገደቦች አዝራሮቹን ማንበብ ይቻላል-
#መግለፅ የለም 0 #ይምረጡ 1 #መግለፅ 1 #ገላጭ 2 #ወደታች ይግለጹ 3 #ወደላይ 4 #መግለፅ RIGHT 5 static int readButton () {int result = 0; ውጤት = analogRead (0); (ውጤት <50) ከሆነ {RIGHT ይመለሱ ፤ } ከሆነ (ውጤት <150) {ተመለስ; } ከሆነ (ውጤት <300) {ወደታች ይመለሱ ፤ } ከሆነ (ውጤት <550) {ተመላሽ LEFT; } ከሆነ (ውጤት <850) {ይምረጡ ይመረጡ; } ምንም የለም መመለስ ፤ }
ደረጃ 4 - የስቴቱ ማሽንን ማገናኘት
የስቴቱ ማሽን የመነጨው የ C ++ ኮድ በይነገጽን ይሰጣል ፣ ይህም የስቴቱን ማሽን ለመቆጣጠር መተግበር አለበት። የመጀመሪያው እርምጃ ክስተቶችን በቁልፍ ሰሌዳ መከለያ ቁልፎች ማገናኘት ነው። ቁልፎቹን እንዴት እንደሚነበቡ አስቀድሜ አሳይቻለሁ ፣ ግን ወደ መንግስታዊ ማሽኑ ለመገጣጠም ፣ ቁልፎቹን ማቃለል ያስፈልጋል - ያለበለዚያ ክስተቶቹ ብዙ ጊዜ ይነሳሉ ፣ ይህም ያልተጠበቀ ባህሪን ያስከትላል። የሶፍትዌር መሻር ጽንሰ -ሀሳብ አዲስ አይደለም። የ Arduino ሰነዶችን መመልከት ይችላሉ።
በትግበራዬ ውስጥ ፣ የወደቀውን ጠርዝ አገኘዋለሁ (አዝራሩን መልቀቅ)። የአዝራሩን ዋጋ አነበብኩ ፣ 80 ሚሴ ይጠብቁ (ከ 50 ይልቅ በ 80 የተሻሉ ውጤቶችን አግኝተዋል) ፣ ውጤቱን ያስቀምጡ እና አዲሱን እሴት ያንብቡ። የድሮው ውጤት ምንም (ያልተጫነ) ካልሆነ እና አዲሱ ውጤት የለም ከሆነ ፣ አዝራሩ ከዚህ በፊት ተጭኖ አሁን እንደተለቀቀ አውቃለሁ። ከዚያ ፣ የግዛቱን ማሽን መሠረት የግቤት ክስተት አነሳለሁ።
int oldState = NONE ፤ የማይንቀሳቀስ ባዶ ክፍተቶች () {int buttonPressed = readButton (); መዘግየት (80); oldState = buttonPressed; ከሆነ (አሮጌው ግዛት! ሰበር; } ጉዳይ LEFT ፦ {stateMachine-> getSCI_Button ()-> rise_set (); ሰበር; } መያዣ DOWN: {stateMachine-> getSCI_Button ()-> rise_light (); ሰበር; } case UP: {stateMachine-> getSCI_Button ()-> rise_light_r (); ሰበር; } ጉዳይ RIGHT ፦ {stateMachine-> getSCI_Button ()-> rise_onoff (); ሰበር; } ነባሪ ፦ {break; }}}}
ደረጃ 5 - ነገሮችን በአንድ ላይ ማገናኘት
ዋናው መርሃ ግብር ሶስት ክፍሎችን ይጠቀማል-
- ግዛት ማሽን
- ሰዓት ቆጣሪ
- የማሳያ ተቆጣጣሪ (የተለመደው lcd.print (…))
DigitalWatch* stateMachine = new DigitalWatch (); CPPTimerInterface* timer_sct = new CPPTimerInterface (); DisplayHandler* displayHandler = አዲስ DisplayHandler ();
የስቴቱ ማሽን የማሳያ መቆጣጠሪያን ይጠቀማል እና ሰዓት ቆጣሪን አግኝቷል ፣ ይህም የጊዜ ክስተቶችን ለመቆጣጠር ይዘምናል። ከዚያ በኋላ የስቴቱ ማሽን ተጀምሮ ወደ ውስጥ ይገባል።
ባዶነት ማዋቀር () {stateMachine-> setSCI_Display_OCB (displayHandler); stateMachine-> setTimer (timer_sct); stateMachine-> init (); stateMachine-> አስገባ (); }ቀለበቱ ሦስት ነገሮችን ያደርጋል
- የግብዓት ክስተቶችን ከፍ ያድርጉ
- ያለፈውን ጊዜ ያሰሉ እና ሰዓት ቆጣሪውን ያዘምኑ
- ለስቴቱ ማሽን ይደውሉ
ረጅም current_time = 0; ረጅም last_cycle_time = 0; ባዶነት loop () {riseEvents (); last_cycle_time = current_time; የአሁኑ_ ጊዜ = ሚሊስ (); timer_sct-> updateActiveTimer (stateMachine, current_time - last_cycle_time); stateMachine-> runCycle (); }
ደረጃ 6: ምሳሌውን ያግኙ
ይሀው ነው. ምናልባት የአፈፃፀሙን እያንዳንዱን ዝርዝር አልጠቅስም ፣ ግን ምሳሌውን ማየት ወይም አስተያየት መስጠት ይችላሉ።
በሚከተለው IDE ላይ ምሳሌውን ያክሉ -ፋይል -> አዲስ -> ምሳሌ -> የያኪንዱ ግዛት ምሳሌዎች -> ቀጣይ -> አርዱinoኖ -ዲጂታል ሰዓት (ሲ ++)
> IDE ን እዚህ ማውረድ ይችላሉ <<
በ 30 ቀናት ሙከራ መጀመር ይችላሉ። ከዚያ በኋላ ፣ ለንግድ ላልሆነ አገልግሎት ነፃ የሆነ ፈቃድ ማግኘት አለብዎት!
የሚመከር:
አርዱዲኖን በመጠቀም የአናሎግ ሰዓት እና ዲጂታል ሰዓት እንዴት እንደሚሠራ 3 ደረጃዎች
አርዱዲኖን በመጠቀም በአናሎግ ሰዓት እና በዲጂታል ሰዓት እንዴት እንደሚሠራ -ዛሬ እኛ አናሎግ ሰዓት እንሰራለን & ዲጂታል ሰዓት በሊድ ስትሪፕ እና በ MAX7219 ነጥብ ሞዱል ከአርዱዲኖ ጋር።አከባቢውን ከሰዓት ሰቅ ጋር ያስተካክላል። የአናሎግ ሰዓቱ ረዘም ያለ የ LED ንጣፍን መጠቀም ይችላል ፣ ስለሆነም የስነጥበብ ሥራ ለመሆን ግድግዳው ላይ ሊሰቀል ይችላል
ESP8266: 4 ደረጃዎች (ከስዕሎች ጋር) በመጠቀም የአውታረ መረብ ሰዓት ዲጂታል ሰዓት
የአውታረ መረብ ጊዜ ዲጂታል ሰዓት ESP8266 ን በመጠቀም - ከኤንቲፒ አገልጋዮች ጋር የሚገናኝ እና የአውታረ መረብ ወይም የበይነመረብ ጊዜን የሚያሳዩ ቆንጆ ትንሽ ዲጂታል ሰዓት እንዴት እንደሚገነቡ እንማራለን። ከ WiFi አውታረ መረብ ጋር ለመገናኘት ፣ የ NTP ጊዜን ለማግኘት እና በ OLED ሞዱል ላይ ለማሳየት WeMos D1 mini ን እንጠቀማለን። ከላይ ያለው ቪዲዮ ከ
በ MSP430: 6 ደረጃዎች ላይ የፊንቴስ ግዛት ማሽን
በ MSP430 ላይ Finite State Machine: YAKINDU Statechart Tools ን በቀጥታ በቴክሳስ መሣሪያዎች ኮድ አቀናባሪ ስቱዲዮ በመጠቀም የ MSP430G2 Launchpad ን ከ Finite State Machines (FSM) ጋር እንዴት እንደሚያዘጋጁት አሳያችኋለሁ። ይህ መማሪያ ስድስት ደረጃዎችን ይ containsል -የ YAKINDU Statechart Tools ን እንደ
አርዱዲኖ አይዲኢን በመጠቀም ከ M5stick C ጋር ሰዓት መስራት - የ RTC እውነተኛ ሰዓት ሰዓት በ M5stack M5stick-C: 4 ደረጃዎች
አርዱዲኖ አይዲኢን በመጠቀም ከ M5stick C ጋር ሰዓት መስራት | የ RTC እውነተኛ ሰዓት ሰዓት ከ M5stack M5stick-C ጋር: በዚህ አስተማሪዎች ውስጥ ሠላም እኛ አርዱዲኖ IDE.So m5stick ቀንን ፣ ጊዜን & በማሳያው ላይ የወሩ ሳምንት
አርዱዲኖን በመጠቀም የ 12 ሰዓት ዲጂታል ሰዓት 3 ደረጃዎች
አርዱዲኖን በመጠቀም የ 12 ሰዓት ዲጂታል ሰዓት-ይህ ተጨማሪ መለዋወጫዎች ሳያስፈልጋቸው የ 12 ሰዓት ዲጂታል ሰዓት ለመሥራት Atmel Atmega 2560 (Arduino Mega) እና 16x2 LCD ማያ ገጽን የሚጠቀም የዳቦ ሰሌዳ ላይ የተመሠረተ ፕሮጀክት ነው። እንዲሁም በሁለት የግፋ አዝራሮች እገዛ ጊዜውን ማቀናበር እና ማሻሻል እንችላለን። ጠቅላላው