ዝርዝር ሁኔታ:

የአርዱዲኖ የንክኪ ማያ ገጽ ማስያ: 7 ደረጃዎች
የአርዱዲኖ የንክኪ ማያ ገጽ ማስያ: 7 ደረጃዎች

ቪዲዮ: የአርዱዲኖ የንክኪ ማያ ገጽ ማስያ: 7 ደረጃዎች

ቪዲዮ: የአርዱዲኖ የንክኪ ማያ ገጽ ማስያ: 7 ደረጃዎች
ቪዲዮ: Arduino በከፊል ሲብራራ https://t.me/arduinoshopping 2024, ሀምሌ
Anonim
Arduino Touchscreen ካልኩሌተር
Arduino Touchscreen ካልኩሌተር

ሰላም! ይህ አርዱዲኖ ኡኖ እና የ TFT LCD መከለያ በመጠቀም የንኪ ማያ ገጽ ማስያ ለመሥራት የሚያስችል ፕሮጀክት ነው። እኔ ለቤቴ ትምህርት ቤት መርሃ ግብር ክፍል ጽንሰ -ሀሳብ አመጣሁ ፣ እና ይህንን ፕሮጀክት የመገንባት ተሞክሮ በጣም አስደሳች ነበር። ይህ ካልኩሌተር አራቱን ቀላል የሂሳብ አሠራሮች (መደመር ፣ መቀነስ ፣ ማባዛት እና መከፋፈል) ማድረግ ይችላል። እንዲሁም ላላቸው የክፍል መልሶች እስከ ሁለት የአስርዮሽ ነጥቦችን ያሳያል። ወደ ውስጥ እንውጣ! የዚህ ፕሮጀክት አቅርቦቶች ከዚህ በታች ተዘርዝረዋል።

አቅርቦቶች

- አርዱዲኖ ኡኖ

-2.4 TFT LCD Shield (እዚህ የገዛሁት እዚህ ነው

- ዩኤስቢ ሀ ለ ቢ ገመድ (አርዱዲኖን ከኮምፒዩተር ጋር ለማገናኘት ገመድ)

- Arduino IDE ያለው ኮምፒተር ተጭኗል

- እንዲሁም ሁለት ቤተ -ፍርግሞችን ማውረድ ያስፈልግዎታል -MCUFRIEND_kbv እና Touchscreen። በ github ላይ ሊያገኙት የሚችሉት የመጀመሪያው (አገናኝ https://github.com/prenticedavid/MCUFRIEND_kbv) ወይም ከዚህ በታች ያካተትኩትን የላይብረሪውን ዚፕ ፋይል መጠቀም ይችላሉ። ሁለተኛው ለመጫን በአርዱዲኖ ቤተመጽሐፍት ሥራ አስኪያጅ ውስጥ ነው።

ደረጃ 1 የሃርድዌር ግንኙነቶች

የሃርድዌር ግንኙነቶች
የሃርድዌር ግንኙነቶች
የሃርድዌር ግንኙነቶች
የሃርድዌር ግንኙነቶች
የሃርድዌር ግንኙነቶች
የሃርድዌር ግንኙነቶች

የንኪ ማያ ገጽ መከለያ ከአርዱዲኖ ኡኖ ጋር ያለው ግንኙነት ቀላል እና ፈጣን ነው። እርስዎ ማድረግ የሚጠበቅብዎት በአርዱዲኖ ላይ ካሉ ዝቅተኛ ፒኖች ጋር በጋሻው ላይ በጣም ዝቅተኛውን ፒን መደርደር እና መከለያውን ወደ ፒኖቹ ውስጥ መግፋት ነው። ከላይኛው 5V ፒን እና በሃይል ጎን ላይ ያልተሰየመው ፒን በውስጣቸው ከጋሻው ውስጥ ፒኖች ሊኖራቸው አይገባም ፣ በተመሳሳይ መመዘኛዎች በቦርዱ በሌላ በኩል SCL እና SDA ተብለው ለተሰጡት ፒኖች ይተገበራሉ። አሁን እኛ ኮድ ለመስጠት ዝግጁ ነን!

ደረጃ 2 - ኮዱ - ዓለም አቀፍ ትርጓሜዎች እና ማዋቀር

#ያካትቱ

MCUFRIEND_kbv tft; // ለማንኛውም ለ UNO ጋሻዎች በጠንካራ ገመድ።

#ያካትቱ

#YP A3 ን ይግለጹ

#ኤክስኤም ኤ 2 ን ይግለጹ

#ይግለጹ YM 9

#XP 8 ን ይግለጹ

TouchScreen ts = TouchScreen (XP ፣ YP ፣ XM ፣ YM ፣ 300) ፤

#MINPRESSURE 10 ን ይግለጹ

ቤተ -መጽሐፍትን (MCUFRIEND_kbv & Touchscreen) ያካተትን ፣ የ X እና Y ፒኖችን የምንገልጽበት ፣ የንኪ ማያ ገጽ ልኬቶችን ያቀናበርን እና አርዱዲኖ ለተጠቃሚ ፕሬስ ለመመዝገብ የሚያስፈልገውን ዝቅተኛ ግፊት የሚገልጽበት የኮዱ መጀመሪያ ነው።

int መታወቂያ;

int user_selection;

ተንሳፋፊ የተቀመጠ_ቁጥር = 0;

ተንሳፋፊ ቃል 1;

int op_num;

ተንሳፋፊ ውጤት;

int cursorLocX = 5;

int cursorLocY = 20;

ከማዋቀሩ በፊት ፣ አንዳንድ ዓለም አቀፍ ተለዋዋጮችን ማዘጋጀት አለብን። የመዳሰሻ ማያ ገጹን ከፍ ለማድረግ እና ለማሄድ መታወቂያ ያግዛል። user_selection ንካ ማያ ገጹን ሲጫኑ ተጠቃሚው ከመረጠው ቁልፍ ጋር የሚዛመድ ቁጥር ይይዛል። save_number ከተጠቃሚ መግቢያ በኋላ ወደ ማያ ገጹ የምናተምነው ተለዋዋጭ ነው (በዚህ ላይ ተጨማሪ በሉፕ)። ተንሳፋፊ ነው ስለዚህ የአስርዮሽ ቁጥሮችን እንዲሁም ኢንቲጀሮችን መያዝ ይችላል። term1 አንድ ኦፕሬተር ከተመረጠ በኋላ የመጀመሪያው የሒሳብ ቁጥር የሚቀመጥበት ተለዋዋጭ ነው። op_num ኦፔራውን እንደ ቁጥር (1 ለመደመር ፣ 2 ለመቁረጥ ፣ 3 ለማባዛት ፣ እና 4 ለመከፋፈል) ያስቀምጣል። ውጤቱ ተጠቃሚው የእኩልታ ምልክቱን ከጫነ በኋላ በማያ ገጹ ላይ የታተመ ተለዋዋጭ ነው። ተንሳፋፊም ነው። cursorLocX እና cursorLocY ጠቋሚው ወደ ብዙ ጊዜ በተዋቀረበት ንክኪ ማያ ገጹ ላይ የካርታ ነጥቦች ናቸው (ከላይ ባለው ግራጫ አሞሌ ውስጥ ይገኛል ፣ አለበለዚያ የውጤት መስክ ተብሎ ይጠራል)።

ባዶነት ማዋቀር () {

tft.reset ();

መታወቂያ = tft.readID ();

tft.begin (መታወቂያ);

tft.setRotation (0);

tft.fillScreen (TFT_DARKGREY);

ካሬዎች ();

ቁጥሮች ();

tft.setTextSize (3);

tft.setTextColor (TFT_BLUE ፣ TFT_DARKGREY);

}

የእኛ የማዋቀር ተግባር በመጀመሪያ ለንክኪ ማያ ጋሻ (መስመሮች 1-3) የመነሻውን ይ containsል። የጋሻው አቅጣጫ የተቀመጠው የ tft.setRotation () ትዕዛዙን በመጠቀም ፣ 0 ቀጥ ብሎ ነው። መላው ማያ ገጽ ከ (ከውጤት መስክ በስተቀር) ከላይ ከምንጽፈው ከ tft.fillScreen () ትዕዛዝ ጋር ጥቁር ግራጫ ቀለም አለው። የካሬዎች () እና የቁጥሮች () ተግባራት የካልኩሌተርን ካሬዎች ይሳሉ ፣ ካሬዎቹን በጥቁር እና በነጭ በቼክቦርድ ንድፍ ይሳሉ እና በሰማያዊዎቹ አደባባዮች ላይ ቁጥሮችን/ኦፔራኖችን ይፃፉ። በሚቀጥለው ደረጃ ወደሚገኙት እንሄዳለን። የ tft.setTextSize () ትዕዛዙ የውጤት መስኩን የጽሑፍ መጠን ወደ 3 ያዘጋጃል ፣ እሱም መካከለኛ ቅርጸ -ቁምፊ ነው። የ tft.

ደረጃ 3 - ኮዱ - ሉፕ

ባዶነት loop () {numberSelect ();

መዘግየት (100);

ከሆነ (user_selection == 16) {

;

} ሌላ {

ከሆነ (የተጠቃሚ_ምርጫ <10) {

የተቀመጠ_ቁጥር = የተቀመጠ_ቁጥር * 10 + የተጠቃሚ_ምርጫ;

tft.setCursor (cursorLocX ፣ cursorLocY);

tft.print (የተቀመጠ_ቁጥር);

} ሌላ ከሆነ (የተጠቃሚ_ምርጫ> 10) {

ማብሪያ (የተጠቃሚ_ምርጫ) {

ጉዳይ 11 ፦

op_num = 1;

tft.setCursor (cursorLocX ፣ cursorLocY);

tft.print ("+");

term1 = የተቀመጠ_ቁጥር;

የተቀመጠ_ቁጥር = 0;

ሰበር;

ጉዳይ 12

op_num = 2;

tft.setCursor (cursorLocX ፣ cursorLocY);

tft.print ("-");

term1 = የተቀመጠ_ቁጥር;

የተቀመጠ_ቁጥር = 0;

ሰበር;

ጉዳይ 13 ፦

op_num = 3;

tft.setCursor (cursorLocX ፣ cursorLocY);

tft.print ("X");

term1 = የተቀመጠ_ቁጥር;

የተቀመጠ_ቁጥር = 0;

ሰበር;

ጉዳይ 14

op_num = 4;

tft.setCursor (cursorLocX ፣ cursorLocY);

tft.print ("/");

term1 = የተቀመጠ_ቁጥር;

የተቀመጠ_ቁጥር = 0;

ሰበር;

ጉዳይ 15 ፦

የተቀመጠ_ቁጥር = 0;

ቃል 1 = 0;

op_num = 0;

tft.setCursor (cursorLocX ፣ cursorLocY);

tft.print ("");

ሰበር;

}

tft.setCursor (cursorLocX ፣ cursorLocY);

ይህ ለማኘክ ብዙ ነው ፣ ስለዚህ ከላይ ያለውን እገልጻለሁ። በንኪ ማያ ገጹ ላይ ለእያንዳንዱ ካሬ አንድ ቁጥር የሚመድብበትን የቁጥር ምርጫ () ተግባር በመደወል እንጀምራለን። አንድ ተጠቃሚ ከእነዚያ ካሬዎች አንዱን ሲጫን ተግባሩ የተጠቃሚ_ሴሌሽን ተለዋጭ ወደ ካሬው ቁጥር ያዘጋጃል። ትክክለኛው የተጠቃሚ ምርጫ ከተደረገ መግለጫው በሉፕ ውስጥ ማለፍ ብቻ ከሆነ የመጀመሪያው። ከሆነ ፣ ቀጣዩ መግለጫ የተጠቃሚ_ምርጫ ከ 10 በታች የተቀመጠ ቁጥር (ቁጥሮቹ 0-9) ያለው ከሆነ የሚጠይቅ ከሆነ። ከሆነ ፣ የተቀመጠ_ቁጥር በ 10 ተባዝቶ በተጠቃሚ_ምርጫ ውስጥ ያለው ቁጥር በመዳሰሻ ማያ ገጹ ላይ በውጤት መስክ ውስጥ በሚታተመው በተቀመጠው_ቁጥር ላይ ይታከላል። ካልሆነ ፣ ቀጣዩ መግለጫ የተጠቃሚ_ምርጫ ከ 10 የሚበልጥ ቁጥር በውስጡ የተቀመጠ መሆኑን የሚጠይቅ ከሆነ (የአሠራር ቁጥሮች 11 ለ +፣ 12 ለ -፣ 13 ለ X ፣ 14 ለ /፣ እና 15 ለጠራ ማያ ካሬ). የመቀየሪያ ተግባር እያንዳንዱን ጉዳይ ይንከባከባል (በተጠቃሚ_ምርጫ ይወሰናል)። ተለዋዋጭ op_num ከተመረጠው (1 ለ +፣ 2 ለ -፣ 3 ለ X እና 4 ለ /) ከሚለው ኦፕሬተር ጋር የሚዛመድ ቁጥር ይሰጠዋል። የተቀመጠው_ቁጥር ተለዋዋጭ ለሒሳብ ሁለተኛ አጋማሽ ጥቅም ላይ እንዲውል በ save_number ውስጥ ያለው እሴት ወደ ተለዋዋጭ ቃል 1 ይቀመጣል። በውጤቱ መስክ ውስጥ ማንኛውንም ቁጥሮች ከማፅዳት ጋር የኦፔራ ምልክት በማያ ገጹ ላይ ታትሟል። ብቸኛው ለየት ያለ የስሌቱ ተለዋዋጮችን ዳግም የሚያስጀምር እና በላዩ ላይ ያለውን ማንኛውንም ነገር የውጤት መስክ የሚያጸዳው ግልፅ ማያ ገጽ ካሬ ነው።

} ሌላ {

መቀየሪያ (op_num) {

ጉዳይ 1 ፦

ውጤት = term1 + የተቀመጠ_ቁጥር;

tft.setCursor (cursorLocX ፣ cursorLocY);

tft.print (ድርብ (ውጤት));

ሰበር;

ጉዳይ 2

ውጤት = term1 - የተቀመጠ_ቁጥር;

tft.setCursor (cursorLocX ፣ cursorLocY);

tft.print (ድርብ (ውጤት));

ሰበር;

ጉዳይ 3

ውጤት = term1 * የተቀመጠ_ቁጥር;

tft.setCursor (cursorLocX ፣ cursorLocY);

tft.print (ድርብ (ውጤት));

ሰበር;

ጉዳይ 4:

ውጤት = ተንሳፋፊ (ቃል 1) / ተንሳፋፊ (የተቀመጠ_ቁጥር);

tft.setCursor (cursorLocX ፣ cursorLocY);

tft.print (ውጤት);

ሰበር;

}

tft.setCursor (cursorLocX ፣ cursorLocY);

የተቀመጠ_ቁጥር = ውጤት;

ቃል 1 = 0;

op_num = 0;

መዘግየት (1000);

}

}

}

የሉፕው የመጨረሻው ክፍል ተጠቃሚው የእኩልነት ምልክትን (የተጠቃሚ_ምርጫ == 10) የመረጠውን ክስተት ይመለከታል። ሌላ የመቀየሪያ ተግባር በአራቱ የሂሳብ ተግባራት (በ op_num ተወስኗል) ይሠራል። የመደመር መያዣ (ጉዳይ 1) ቃል 1 እና የተቀመጠ_ቁጥርን በአንድ ላይ ያክላል እና ቁጥሩን ወደ የውጤት ተለዋዋጭ ያስቀምጣል። ውጤቱ በእጥፍ ወደ የውጤት መስክ ታትሟል። የመቀነስ መያዣ (ጉዳይ 2) የተቀመጠውን_ቁጥር ከቃሉ 1 ይቀንሳል እና ቁጥሩን ወደ የውጤት ተለዋዋጭ ያስቀምጣል። ውጤቱም በእጥፍ ወደ ውጤት መስክ ታትሟል። የማባዛት መያዣ (ጉዳይ 3) ቃል 1 ን በተቀመጠ_ቁጥር ያባዛል እና ቁጥሩን ወደ የውጤት ተለዋዋጭ ያስቀምጣል። ውጤቱ በእጥፍ ወደ የውጤት መስክ ታትሟል ።የክፍል ጉዳይ (ጉዳይ 4) ቃል 1 ን በተቀመጠ_ቁጥር አንድ ላይ ይከፋፍላል እና ቁጥሩን ወደ የውጤት ተለዋዋጭ ያስቀምጣል። ውጤቱ እንደ ተንሳፋፊ ወደ የውጤት መስክ ታትሟል (ምክንያቱም የመከፋፈል መልሶች የአስርዮሽ ቁጥሮች ሊሆኑ ይችላሉ)። አንድ ቁጥር ፣ ኦፕሬተር ወይም ውጤት በማያ ገጹ ላይ ከታተመ በኋላ ጠቋሚው ዳግም ይጀመራል ፣ የተቀመጠ_ቁጥር ወደ ቀዳሚው ውጤት ተቀናብሯል ፣ እና term1 & op_num ዳግም ይጀመራል።

ጥቂት ማስታወሻዎች -በአስርዮሽ ነጥብ ካሬ እጥረት ምክንያት ተጠቃሚው የአስርዮሽ ቁጥሮችን ወደ ካልኩሌተር ውስጥ ማስገባት አይችልም። እንዲሁም ተጠቃሚው በአንድ ጊዜ አንድ ቀመር ብቻ ማድረግ ይችላል። ውጤቱን ማስላት እና ከዚያ ያንን ውጤት ማከል/መቀነስ/ማባዛት/መከፋፈል አይችሉም። በቁጥር ምርጫ () ተግባር ውስጥ አንድ ተጠቃሚ ሌላ ካሬ ከጫነ ውጤቱ ከታተመ በኋላ ማያ ገጹን የሚያጸዳ ተግባር አለ።

ደረጃ 4 - ኮዱ - የካሬዎች ተግባር

ባዶ አደባባዮች () {

// ጥቁር እና ነጭ ካሬዎች በእያንዳንዱ ረድፍ ላይ ይለዋወጣሉ እና የመጀመሪያው እና ሦስተኛው ረድፎች ከሁለተኛው እና ከአራተኛው ረድፎች ተቃራኒ ንድፍ አላቸው

tft.fillRect (0 ፣ 60 ፣ 60 ፣ 65 ፣ TFT_BLACK); // የመጀመሪያው ረድፍ ካሬዎች ይጀምራል ፣ ከጥቁር ወደ ነጭ tft.fillRect (60 ፣ 60 ፣ 60 ፣ 65 ፣ TFT_WHITE) ፤

tft.fillRect (120 ፣ 60 ፣ 60 ፣ 65 ፣ TFT_BLACK);

tft.fillRect (180 ፣ 60 ፣ 60 ፣ 65 ፣ TFT_WHITE); // የመጀመሪያው ረድፍ ካሬዎች ያበቃል

tft.fillRect (0 ፣ 125 ፣ 60 ፣ 65 ፣ TFT_WHITE); // የሁለተኛው ረድፍ ካሬዎች ይጀምራል ፣ ከነጭ ወደ ጥቁር tft.fillRect (60 ፣ 125 ፣ 60 ፣ 65 ፣ TFT_BLACK) ፤

tft.fillRect (120 ፣ 125 ፣ 60 ፣ 65 ፣ TFT_WHITE);

tft.fillRect (180 ፣ 125 ፣ 60 ፣ 65 ፣ TFT_BLACK); // የሁለተኛው ረድፍ ካሬዎች ያበቃል

tft.fillRect (0 ፣ 190 ፣ 60 ፣ 65 ፣ TFT_BLACK); // ሦስተኛው ረድፍ ካሬዎች ይጀምራል ፣ ከጥቁር ወደ ነጭ tft.fillRect (60 ፣ 190 ፣ 60 ፣ 65 ፣ TFT_WHITE) ፤

tft.fillRect (120 ፣ 190 ፣ 60 ፣ 65 ፣ TFT_BLACK);

tft.fillRect (180 ፣ 190 ፣ 60 ፣ 65 ፣ TFT_WHITE); // ሦስተኛው ረድፍ ካሬዎች ያበቃል

tft.fillRect (0 ፣ 255 ፣ 60 ፣ 65 ፣ TFT_WHITE); // አራተኛው ረድፍ ካሬዎች ይጀምራል ፣ ከነጭ ወደ ጥቁር tft.fillRect (60 ፣ 255 ፣ 60 ፣ 65 ፣ TFT_BLACK) ፤

tft.fillRect (120 ፣ 255 ፣ 60 ፣ 65 ፣ TFT_WHITE);

tft.fillRect (180 ፣ 255 ፣ 60 ፣ 65 ፣ TFT_BLACK); // አራተኛው ረድፍ ካሬዎች ያበቃል

}

የካሬዎች () ተግባር በጣም ቀጥተኛ ነው። የ tft.fillRect (X1 ፣ Y1 ፣ X2 ፣ Y2 ፣ TFT_COLOR) ትዕዛዙ በተላለፉት ልኬቶች መሠረት አራት ማዕዘንን ይስባል ፣ እነሱም x እና y የመጀመሪያ ቦታዎች ፣ x እና y ሁለተኛ ቦታዎች ፣ እና አራት ማዕዘኑ የተሞላው ቀለም. ይህ ተግባር አራቱን ረድፎች ካሬዎች (በቴክኒካዊ አራት ማእዘኖች) ይሳባል እና እያንዳንዱን ካሬዎች በተላለፈው ቀለም ይሞላል።

ደረጃ 5 - ኮድ - የቁጥሮች ተግባር

ባዶ ቁጥሮች () {

tft.setTextColor (TFT_BLUE); // ቁጥር/የቁምፊ ቀለም ወደ ሰማያዊ ያዘጋጃል

tft.setTextSize (5); // ቁጥር/የቁምፊ መጠንን ወደ 5 ያዘጋጃል

tft.setCursor (18, 75); // የቁጥሮች/ቁምፊዎች የመጀመሪያ መስመር ጠቋሚ ያዘጋጃል

tft.print ("7 8 9 /"); // የቁጥሮችን/ቁምፊዎችን የመጀመሪያ መስመር ያትማል

tft.setCursor (18, 140); // ለቁጥሮች/ቁምፊዎች ሁለተኛ መስመር ጠቋሚውን ያዘጋጃል

tft.print ("4 5 6 X"); // የቁጥሮችን/ቁምፊዎችን ሁለተኛ መስመር ያትማል

tft.setCursor (18, 205); // ለሶስተኛ የቁጥሮች/ቁምፊዎች መስመር ጠቋሚ ያዘጋጃል

tft.print ("1 2 3 -"); // የቁጥሮችን/ቁምፊዎችን ሦስተኛ መስመር ያትማል

tft.setCursor (18, 270); // ለአራተኛው የቁጥሮች/ቁምፊዎች መስመር ጠቋሚ ያዘጋጃል

tft.print ("C 0 = +"); // የቁጥሮችን/ቁምፊዎችን አራተኛ መስመር ያትማል

}

የቁጥሮች () ተግባር እንዲሁ ቀጥተኛ ነው። የመጀመሪያዎቹ ሁለት መስመሮች የጽሑፉን መጠን ትልቅ እና ቀለሙን ወደ ሰማያዊ ያዘጋጃሉ። የ tft. ከዚያ የ tft.print () ትዕዛዙ ቁጥሮችን/ቁምፊዎችን በካሬዎች ላይ ያትማል።

ደረጃ 6: ኮዱ: ቁጥር ይምረጡ ተግባር

ባዶነት ቁጥር ይምረጡ () {

TSPoint p = ts.getPoint ();

pinMode (ኤክስኤም ፣ ውፅዓት);

pinMode (YP ፣ ውፅዓት);

ከሆነ (p.z> MINPRESSURE) {

p.x = ካርታ (ገጽ ፣ 250 ፣ 845 ፣ 0 ፣ 239);

p.y = ካርታ (ገጽ ፣ 245 ፣ 860 ፣ 0 ፣ 319);

ከሆነ (ውጤት! = 0) {

ውጤት = 0;

የተቀመጠ_ቁጥር = 0;

tft.print ("ግልጽ እሴቶች");

መዘግየት (500);

tft.setCursor (cursorLocX ፣ cursorLocY);

tft.print ("");

tft.setCursor (cursorLocX ፣ cursorLocY);

}

የቁጥሩን ይምረጡ () ተግባርን ለመጀመር ፣ በ ts.getPoint () ትዕዛዝ ከተንክ ማያ ገጹ የተጠቃሚ ግቤትን እንጠይቃለን። ያ ውሂብ ከተሰበሰበ በኋላ ዝቅተኛው ግፊት አል hasል (ወይም በሌላ አነጋገር ተጠቃሚው በመዳሰሻ ገጹ ላይ የሆነ ቦታ ላይ ተጭኖ እንደሆነ) እንፈትሻለን። ከሆነ ፣ የ x እና y መጋጠሚያዎች ከካርቴሺያን መጋጠሚያዎች እስከ ንክኪ-ተኮር መጋጠሚያዎች ድረስ ካርታ አላቸው። (0, 0) የ x ዘንግ ተሻግሮ እና y ዘንግ ወደ ታች በመሄድ ፣ በመዳሰሻ ገጹ የላይኛው ግራ እጅ ጥግ ነው። የሚቀጥለው ክፍል በውጤቱ የተቀመጠ ቁጥር መኖሩን ለማየት ይፈትሻል። ካለ ፣ የውጤት እና የተቀመጠ_ቁጥር ወደ 0. ዳግም ተስተካክሏል። “ግልጽ እሴቶች” የሚለው መልእክት በውጤት መስክ ላይ ታትሟል ፣ እና ማያ ገጹ በጠቋሚው ወደ መጀመሪያው ቦታው ተመልሷል።

ከሆነ (ገጽ 60) {// የመጀመሪያው ረድፍ ካሬዎች

ከሆነ (p.x <60)

የተጠቃሚ_ምርጫ = 7;

ሌላ ከሆነ (p.x <120)

የተጠቃሚ_ምርጫ = 8;

ሌላ ከሆነ (p.x <180)

የተጠቃሚ_ምርጫ = 9;

ሌላ የተጠቃሚ_ምርጫ = 14;

} ሌላ ከሆነ (ገጽ 125) {// ሁለተኛ ረድፍ ካሬዎች

ከሆነ (p.x <60)

የተጠቃሚ_ምርጫ = 4;

ሌላ ከሆነ (p.x <120)

የተጠቃሚ_ምርጫ = 5;

ሌላ ከሆነ (p.x <180)

የተጠቃሚ_ምርጫ = 6;

ሌላ የተጠቃሚ_ምርጫ = 13;

} ሌላ ከሆነ (ገጽ 190) {// ሦስተኛው ረድፍ ካሬዎች

ከሆነ (p.x <60)

የተጠቃሚ_ምርጫ = 1;

ሌላ ከሆነ (p.x <120)

የተጠቃሚ_ምርጫ = 2;

ሌላ ከሆነ (p.x <180)

የተጠቃሚ_ምርጫ = 3;

ሌላ የተጠቃሚ_ምርጫ = 12;

} ሌላ (p.y> 255) {// አራተኛ ረድፍ ካሬዎች

ከሆነ (p.x <60)

የተጠቃሚ_ምርጫ = 15;

ሌላ ከሆነ (p.x <120)

የተጠቃሚ_ምርጫ = 0;

ሌላ ከሆነ (p.x <180)

የተጠቃሚ_ምርጫ = 10;

ሌላ የተጠቃሚ_ምርጫ = 11;

}

} ሌላ {

የተጠቃሚ_ምርጫ = 16; // የተጠቃሚ_ምርጫ ወደ 16 ተቀናብሯል (ምንም ተለዋዋጭ የለም)

}

}

የትኛው አዝራር እንደተመረጠ የሚወስነው ይህ ክፍል ነው። ከካሬዎች የላይኛው ረድፍ በመጀመር እና ከታችኛው ረድፍ በመጨረስ አርዱinoኖ ማያ ገጹ በትክክል የተጫነበትን ቦታ ይፈልጋል። ከዚያ ካሬውን አንድ ቁጥር ይመድባል እና ያንን ቁጥር ወደ የተጠቃሚ_ምርጫ ያስቀምጠዋል። ቁጥሮች 0-9 ከቁጥር ካሬዎች ጋር ይዛመዳሉ ፣ ቁጥሮች 11-15 ከኦፔራድ ካሬዎች እና ጥርት ካሬው ጋር ይዛመዳሉ ፣ እና ቁጥሩ 10 ከእኩል ምልክት ካሬ ጋር ይዛመዳል። ምንም ካሬ ካልተመረጠ ፣ ከዚያ የተጠቃሚ_ምርጫ ወደ 16 ተቀናብሯል ፣ ይህም loop እንደገና እንዲጀምር ያደርገዋል (የ loop ተግባርን ይመልከቱ)።

ደረጃ 7: በተጠናቀቀው ፕሮጀክትዎ ይደሰቱ

እዚያ አለዎት! አሁን መደመርን ፣ መቀነስን ፣ ማባዛትን እና መከፋፈልን ማድረግ የሚችል የማያንካ ካልኩሌተር አለዎት። ይህ ፕሮጀክት ካልኩሌተር ይሠራል ብዬ ባሰብኩበት መንገድ ሁሉ ተለውጧል። በዚህ ፕሮጀክት ላይ እየሠራሁ ሳለሁ ፣ በክፍል ውስጥ ለአስተማሪዬ ፣ “እንደገና ካልኩሌተርን በተመሳሳይ መንገድ አልመለከትም” ማለቴን አስታውሳለሁ። እርስዎ እንደ ተጠቃሚ የሚገምቷቸው ተግባራት ከኮምፒውተሩ በስተጀርባ ሆነው ሀሳብዎን ለመምሰል ሲሞክሩ በተወሰነ ደረጃ አስቸጋሪ ናቸው። በፕሮጀክቱ እንደተደሰቱ ተስፋ አደርጋለሁ ፣ እና የሂሳብ ማሽን እንዴት እንደሚሰራ የእርስዎ አስተሳሰብ እንዲሁ እንደተለወጠ ተስፋ አደርጋለሁ!

ለእርስዎ ምቾት ሙሉውን ኮድ እነሆ። በአስተያየቶች ተሞልቷል ስለዚህ ማንኛውም ችግሮች ካሉዎት እያንዳንዱ መስመር የሚያደርገውን ሊያሳዩዎት ይገባል።

የሚመከር: