ዝርዝር ሁኔታ:

አርዱዲኖን በመጠቀም በጣት አሻራ ላይ የተመሠረተ ባዮሜትሪክ ድምጽ መስጫ ማሽን 4 ደረጃዎች (ከስዕሎች ጋር)
አርዱዲኖን በመጠቀም በጣት አሻራ ላይ የተመሠረተ ባዮሜትሪክ ድምጽ መስጫ ማሽን 4 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: አርዱዲኖን በመጠቀም በጣት አሻራ ላይ የተመሠረተ ባዮሜትሪክ ድምጽ መስጫ ማሽን 4 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: አርዱዲኖን በመጠቀም በጣት አሻራ ላይ የተመሠረተ ባዮሜትሪክ ድምጽ መስጫ ማሽን 4 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: የአርዱዪኖ ሶፍትዌርን እንዴት ማውረድ እና መጫን እንደሚቻል 2024, ህዳር
Anonim
አርዱዲኖን በመጠቀም በጣት አሻራ ላይ የተመሠረተ ባዮሜትሪክ ድምጽ መስጫ ማሽን
አርዱዲኖን በመጠቀም በጣት አሻራ ላይ የተመሠረተ ባዮሜትሪክ ድምጽ መስጫ ማሽን

ሁላችንም ድምፁን ለመስጠት ተጠቃሚው አንድ አዝራር መጫን ያለበት የአሁኑ የኤሌክትሮኒክ ድምጽ መስጫ ማሽን ሁላችንም እናውቃለን። ነገር ግን እነዚህ ማሽኖች ከመነሻው ጀምሮ በመቆጣት ተችተዋል። ስለዚህ መንግስት በጣት አሻራ አሻራ ላይ በመመርኮዝ ተጠቃሚዎች ድምፁን የሚሰጡበት በጣት አሻራ ላይ የተመሠረተ የምርጫ ማሽን ለማስተዋወቅ አቅዷል። ይህ ስርዓት የተባዙ ድምፆችን ዕድል ከማስወገድ በተጨማሪ ማንኛውንም ዓይነት ማጭበርበርን ይከላከላል።

ስለዚህ በዚህ ፕሮጀክት ውስጥ አርዱዲኖ ኡኖ ፣ የ TFT ማሳያ እና የጣት አሻራ ዳሳሽ በመጠቀም የባዮሜትሪክ ድምጽ መስጫ ማሽን ናሙና እንሠራለን። በባዮሜትሪክ ላይ የተመሠረተ የአሠራር ስርዓት ለመገንባት ከዚህ ቀደም የ R305 የጣት አሻራ ዳሳሽ ከኖድኤምሲዩ ጋር እንጠቀም ነበር ነገር ግን እዚህ የላቀውን GT-511C3 የጣት አሻራ ዳሳሽ ከአርዱዲኖ ጋር እንጠቀማለን።

ደረጃ 1 የባዮሜትሪክ ድምጽ መስጫ ማሽን ለመገንባት የሚያስፈልጉ አካላት

  • አርዱዲኖ ኡኖ
  • 2.4 ኢንች TFT LCD ማሳያ ጋሻ
  • GT-511C3 የጣት አሻራ ዳሳሽ

ይህ 2.4 ኢንች TFT ማሳያ ቀደም ሲል በአይዱ ላይ የተመሠረተ የምግብ ቤት ምናሌ ማዘዣ ስርዓትን ለመገንባት ከአርዱዲኖ ጋር ጥቅም ላይ ውሏል።

ደረጃ 2 አርዱinoኖን በመጠቀም ለቢዮሜትሪክ ድምጽ መስጫ ማሽን የወረዳ ዲያግራም

አርዱዲኖን በመጠቀም ለቢዮሜትሪክ ድምጽ መስጫ ማሽን የወረዳ ዲያግራም
አርዱዲኖን በመጠቀም ለቢዮሜትሪክ ድምጽ መስጫ ማሽን የወረዳ ዲያግራም

እኛ የ TFT ማሳያ እና የጣት አሻራ አነፍናፊ ሞዱሉን ከአርዱዲኖ ኡኖ ጋር ብቻ በማገናኘታችን ለዚህ ፕሮጀክት የወረዳ ዲያግራም በጣም ቀላል ነው። የጣት አሻራ አነፍናፊው VCC እና GND ፒኖች ከ 5 ቮ እና ከ GND የአርዲኖ ፒን ጋር የተገናኙ ሲሆን TX እና RX ፒኖች ከ Arduino Uno ዲጂታል ፒን 11 እና 12 ጋር ተገናኝተዋል።

የ 2.4 ኢንች TFT ኤልሲዲ ማያ ገጽ አርዱዲኖ ጋሻ ነው እና ከዚህ በታች ባለው ምስል እንደሚታየው በቀጥታ በአርዱዲኖ ኡኖ ላይ ሊጫን ይችላል። የ TFT ማሳያ ከአርዱዲኖ ኡኖ ጋር በትክክል የሚገጣጠሙ 28 ፒኖች አሉት ፣ ስለሆነም በአርዱዲኖ ጀርባ ላይ የጣት አሻራ ዳሳሹን መሸጥ ነበረብኝ።

ደረጃ 3 የምንጭ ኮድ እና የደረጃ ኮድ ማብራሪያ

አርዱዲኖን በመጠቀም ለዚህ የጣት አሻራ ድምጽ አሰጣጥ ስርዓት ፕሮጀክት ሙሉ ኮድ በአንቀጹ መጨረሻ ላይ ተሰጥቷል። እዚህ እኛ የኮዱን አንዳንድ አስፈላጊ ተግባራት እናብራራለን።

ኮዱ SPFD5408 ን ፣ የሶፍትዌር ተከታታይን እና የ FPS_GT511C3 ቤተ -መጽሐፍትን ይጠቀማል። SPFD5408 ቤተ -መጽሐፍት የተቀየረው የመጀመሪያው የአዳፍ ፍሬም ቤተ -መጽሐፍት ስሪት ነው። እነዚህ የቤተ -መጽሐፍት ፋይሎች ከዚህ በታች ከተዘረዘሩት አገናኞች ማውረድ ይችላሉ-

  • SPFD5408 ቤተ -መጽሐፍት
  • የሶፍትዌር ተከታታይ
  • FPS_GT511C3

ቤተመፃህፍቱን ካካተቱ እና አንዳንድ አስፈላጊ መመዘኛዎችን ከገለጹ በኋላ ወደ የፕሮግራም ክፍል መግባት እንችላለን። በዚህ ፕሮግራም ውስጥ ሦስት ክፍሎች አሉ። አንደኛው የድምፅ መስጫ ማሽን በይነገጽ እየፈጠረ ነው ፣ ሁለተኛው ለንክኪዎች የመዳሰሻ ነጥቦችን ማግኘት እና በንክኪው ላይ በመመርኮዝ ቁልፎቹን መለየት እና በመጨረሻ ውጤቱን በማስላት ወደ አርዱዲኖ ትውስታ ውስጥ ያስቀምጧቸዋል።

1. በይነገጽ መፍጠር -

በሶስት አዝራሮች እና በፕሮጀክቱ ስም አንድ ቀላል በይነገጽ ፈጠርኩ። የ TFT ማሳያ ቤተ -መጽሐፍት መስመሮችን ፣ አራት ማእዘን ፣ ክበቦችን ፣ ኮርሶችን ፣ ሕብረቁምፊዎችን እና በጣም ብዙ ማንኛውንም ተመራጭ ቀለም እና መጠን እንዲስሉ ያስችልዎታል። እዚህ የመሙላትRoundRect እና drawRoundRect ተግባሮችን በመጠቀም ሁለት አራት ማእዘን አዝራሮች ይፈጠራሉ። ለ tft.drawRoundRect ተግባር አገባብ ከዚህ በታች ተሰጥቷል -

tft.drawRoundRect (int16_t x0 ፣ int16_t y0 ፣ int16_t w ፣ int16_t h ፣ int16_t ራዲየስ ፣ uint16_t ቀለም)

የት:

x0 = የአራት ማዕዘን መጀመሪያ ነጥብ X ያስተባብራል

y0 = አራት ማዕዘን ማዕዘን መነሻ ነጥብ Y ያስተባብራል

ወ = የአራት ማዕዘን ስፋት

ሸ = የሬክታንግል ቁመት

ራዲየስ = የክብ ጥግ ራዲየስ

ቀለም = የሬክቱ ቀለም።

ባዶነት መሳል ቤት ()

{

tft.fillScreen (ነጭ);

tft.drawRoundRect (0 ፣ 0 ፣ 319 ፣ 240 ፣ 8 ፣ ነጭ); // የገጽ ወሰን

tft.fillRoundRect (10 ፣ 70 ፣ 220 ፣ 50 ፣ 8 ፣ ወርቅ);

tft.drawRoundRect (10 ፣ 70 ፣ 220 ፣ 50 ፣ 8 ፣ ነጭ); // ድምጽ ይስጡ

tft.fillRoundRect (10, 160, 220, 50, 8, GOLD);

tft.drawRoundRect (10, 160, 220, 50, 8, WHITE); // ይመዝገቡ

tft.fillRoundRect (10, 250, 220, 50, 8, GOLD); // ውጤት

tft.drawRoundRect (10, 250, 220, 50, 8, WHITE);

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("ድምጽ መስጠት");

tft.setCursor (57, 29);

tft.print ("ማሽን");

tft.setTextSize (3);

tft.setTextColor (ነጭ);

tft.setCursor (25, 82);

tft.print ("እጩ 1");

tft.setCursor (25, 172);

tft.print ("እጩ 2");

tft.setCursor (25, 262);

tft.print ("እጩ 3");

}

2. የመዳሰሻ ነጥቦችን ማግኘት እና የመፈለጊያ ቁልፎች

አሁን በኮዱ በሁለተኛው ክፍል ውስጥ የአዝራር ንክኪ ነጥቦችን እናገኛለን እና ከዚያ ነጥቦቹን ለመተንበይ እነዚህን ነጥቦች እንጠቀማለን። ts.getPoint () ተግባር በ TFT ማሳያ ላይ የተጠቃሚውን ንክኪ ለመለየት ጥቅም ላይ ይውላል። ts.getPoint ለተነካካው አካባቢ ጥሬ የኤዲሲ እሴቶችን ይሰጣል። እነዚህ የ RAW ADC እሴቶች የካርታውን ተግባር በመጠቀም ወደ Pixel Coordinates ይለወጣሉ።

TSPoint p = ts.getPoint ();

ከሆነ (p.z> ts.pressureThreshhold)

{

p.x = ካርታ (p.x ፣ TS_MAXX ፣ TS_MINX ፣ 0 ፣ 320);

p.y = ካርታ (p.y ፣ TS_MAXY ፣ TS_MINY ፣ 0 ፣ 240);

//Serial.print("X: ");

//Serial.print(p.x);

//Serial.print("Y: ");

//Serial.print(p.y);

አሁን ፣ ለእያንዳንዱ አዝራር የ X እና Y መጋጠሚያዎችን ስለምናውቅ ፣ ‹if› የሚለውን መግለጫ በመጠቀም ተጠቃሚው የነካበትን ቦታ መተንበይ እንችላለን።

(p.x> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)

{

Serial.println ("እጩ 1");

አንድ መራጭ የእጩውን ቁልፍ ሲጫን በጣት አሻራ ዳሳሽ ላይ ጣት እንዲቃኝ ይጠየቃል። የጣት መታወቂያ ከተፈቀደ መራጩ ድምጽ እንዲሰጥ ይፈቀድለታል። ማንኛውም ያልተመዘገበ ተጠቃሚ ድምጽ ለመስጠት ከፈለገ የጣት አሻራ ሞጁሉ መታወቂያውን በስርዓቱ ውስጥ አይለይም እና ማሳያው ‹ድምጽ መስጠት አይችሉም ይቅርታ› ያሳያል።

ከሆነ (fps. IsPressFinger ())

{

fps. CaptureFinger (ሐሰት);

int id = fps. Identify1_N ();

ከሆነ (መታወቂያ <200)

{

msg = "እጩ 1";

ድምጽ 1 ++;

EEPROM.write (0 ፣ vote1);

tft.setCursor (42, 170);

tft.print ("አመሰግናለሁ");

መዘግየት (3000);

drawHome ();

3. ውጤት

የመጨረሻው እርምጃ የድምፅ ቆጠራውን ከ EEPROM ማህደረ ትውስታ ማግኘት እና የሶስቱን እጩዎች ድምጽ ማወዳደር ነው። ከፍተኛ ድምጽ ያለው እጩ ያሸንፋል። ውጤቱ ከተከታታይ ማሳያ ብቻ ሊገኝ እና በ TFT ማያ ገጽ ላይ አይታይም።

vote1 = EEPROM.read (0);

vote2 = EEPROM.read (1);

vote3 = EEPROM.read (2);

ከሆነ (ድምጽ)

{

ከሆነ ((ድምጽ 1> ድምጽ 2 && vote1> ድምጽ 3))

{

Serial.print ("Can1 Wins");

መዘግየት (2000);

}

ደረጃ 4: አርዱዲኖን በመጠቀም የጣት አሻራ ድምጽ አሰጣጥ ስርዓትን መሞከር

ፕሮጀክቱን ለመፈተሽ አርዱዲኖ ኡኖን ከላፕቶ laptop ጋር በማገናኘት የተሰጠውን ኮድ ይስቀሉ። ኮዱ አንዴ ከተሰቀለ ፣ የ TFT ማሳያ የእጩውን ስም ማሳየት አለበት። አንድ ሰው በእጩ ስም ላይ መታ ሲያደርግ ማሽኑ የጣት አሻራ ስካነር እንዲቃኝ ይጠይቃል። የጣት አሻራ ትክክለኛ ከሆነ ፣ ከዚያ የተጠቃሚው ድምጽ ይቆጠራል ፣ ግን ሁኔታው ፣ ንድፉ ከመረጃ ቋቱ መዛግብት ጋር አይዛመድም ፣ ድምጽ የመስጠት መዳረሻ ይከለከላል። የእያንዳንዱ እጩ ጠቅላላ ድምጾች በ EEPROM ውስጥ ይከማቻሉ እና ከፍተኛ ድምጽ ያለው እጩ ያሸንፋል።

ትምህርቱን እንደወደዱት እና ጠቃሚ የሆነ ነገር እንደተማሩ ተስፋ አደርጋለሁ። ማንኛቸውም ጥያቄዎች ካሉዎት እባክዎን ከዚህ በታች ባለው የአስተያየት ክፍል ያሳውቁን ፣ እና እንደዚህ ላሉት እንደዚህ ያሉ አስደሳች ፕሮጀክቶች በተሰኘ መመሪያ ላይ ይከተሉን።

የሚመከር: