ዝርዝር ሁኔታ:

አንድ የመጨረሻ ግዛት ማሽን በመጠቀም በአርዱዲኖ ላይ ዲጂታል ሰዓት -6 ደረጃዎች
አንድ የመጨረሻ ግዛት ማሽን በመጠቀም በአርዱዲኖ ላይ ዲጂታል ሰዓት -6 ደረጃዎች

ቪዲዮ: አንድ የመጨረሻ ግዛት ማሽን በመጠቀም በአርዱዲኖ ላይ ዲጂታል ሰዓት -6 ደረጃዎች

ቪዲዮ: አንድ የመጨረሻ ግዛት ማሽን በመጠቀም በአርዱዲኖ ላይ ዲጂታል ሰዓት -6 ደረጃዎች
ቪዲዮ: አንድ ሴት በትክክል የምታረግዘው ፔሬድ በሄደ ስንተኛው ቀን ነው? | #drhabeshainfo | Microbes and the human body 2024, ህዳር
Anonim
አንድ የመጨረሻ ግዛት ማሽን በመጠቀም በአርዱዲኖ ላይ ዲጂታል ሰዓት
አንድ የመጨረሻ ግዛት ማሽን በመጠቀም በአርዱዲኖ ላይ ዲጂታል ሰዓት

ሄይ ፣ እኔ እንዴት የዲጂታል ሰዓት በ YAKINDU Statechart Tools እንደሚፈጠር እና ኤልዲዲ የቁልፍ ሰሌዳ ጋሻን በሚጠቀም አርዱinoኖ ላይ እንደሚሠራ አሳያችኋለሁ።

የዲጂታል ሰዓቱ የመጀመሪያው ሞዴል ከዳዊት ሃረል ተወስዷል። ስለ አንድ ወረቀት አውጥቷል

“[…] የመንግሥት ማሽኖች እና የግዛት ሥዕላዊ መግለጫዎች መደበኛ ፎርማሊዝም ሰፊ ማራዘሚያ።

በዚህ ጽሑፍ ውስጥ ለምርምርው የዲጂታል ሰዓቱን ምሳሌ ተጠቅሟል። እኔ እንደ መነሳሻ ተጠቀምኩትና ሰዓቱን በያኪንዱኡ ስቴት ቻርት መሣሪያዎች (የስቴቱ ማሽኖች ግራፊክ ሞዴሎችን ለመፍጠር እና ከእሱ ጋር ሲ/ሲ ++ ኮድ ለማመንጨት የሚያስችል መሣሪያ) እንደገና ገንብቼ በአርዱዲኖ ላይ ወደ ሕይወት አመጣሁት።

አቅርቦቶች

ሃርድዌር

  • አርዱዲኖ ኡኖ ወይም ሜጋ
  • ኤልሲዲ የቁልፍ ሰሌዳ መከለያ

ሶፍትዌር

  • የያኪንዱ ግዛት ገበታ መሣሪያዎች
  • ግርዶሽ ሲ ++ አይዲኢ ለአርዱዲኖ

ደረጃ 1 - ዲጂታል ሰዓት እንዴት እንደሚሰራ

Image
Image

ዲጂታል ሰዓቱ እንዴት መሥራት እንዳለበት በመግለጽ እንጀምር። እነዚህን ታስታውሳለህ… በ 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 ቀናት ሙከራ መጀመር ይችላሉ። ከዚያ በኋላ ፣ ለንግድ ላልሆነ አገልግሎት ነፃ የሆነ ፈቃድ ማግኘት አለብዎት!

የሚመከር: