Բովանդակություն:

Arduino- ի միջոցով մատնահետքերի վրա հիմնված կենսաչափական քվեարկության մեքենա. 4 քայլ (նկարներով)
Arduino- ի միջոցով մատնահետքերի վրա հիմնված կենսաչափական քվեարկության մեքենա. 4 քայլ (նկարներով)

Video: Arduino- ի միջոցով մատնահետքերի վրա հիմնված կենսաչափական քվեարկության մեքենա. 4 քայլ (նկարներով)

Video: Arduino- ի միջոցով մատնահետքերի վրա հիմնված կենսաչափական քվեարկության մեքենա. 4 քայլ (նկարներով)
Video: Arduino-ի միջոցով ուղեփակոցի պատրաստում 2024, Հուլիսի
Anonim
Մատնահետքերի վրա հիմնված կենսաչափական քվեարկության մեքենա ՝ օգտագործելով Arduino- ն
Մատնահետքերի վրա հիմնված կենսաչափական քվեարկության մեքենա ՝ օգտագործելով Arduino- ն

Մենք բոլորս տեղյակ ենք գոյություն ունեցող էլեկտրոնային քվեարկության մեքենայի մասին, որտեղ օգտվողը պետք է սեղմի կոճակը `քվեարկելու համար: Բայց այդ մեքենաներն ի սկզբանե քննադատության են ենթարկվել կոփելու համար: Այսպիսով, կառավարությունը մտադիր է ներդնել մատնահետքերի վրա հիմնված քվեարկության մեքենա, որտեղ օգտվողները կարող են քվեարկել ՝ հիմնվելով նրա մատնահետքի տպավորության վրա: Այս համակարգը ոչ միայն կհեռացնի կրկնվող քվեների հնարավորությունը, այլև կկանխի ցանկացած տեսակի մանիպուլյացիաներ:

Այսպիսով, այս նախագծում մենք պատրաստվում ենք կառուցել կենսաչափական քվեարկող մեքենայի նախատիպ ՝ օգտագործելով Arduino Uno, TFT էկրան և մատնահետքերի ցուցիչ: Նախկինում մենք օգտագործել էինք R305 մատնահետքի ցուցիչ NodeMCU- ով ՝ կենսաչափական հիմքով հաճախումների համակարգ կառուցելու համար, սակայն այստեղ մենք կօգտագործենք առաջադեմ GT-511C3 մատնահետքի սենսորը Arduino- ով:

Քայլ 1. Կենսաչափական քվեարկության մեքենա ստեղծելու համար անհրաժեշտ բաղադրիչներ

  • Արդուինո Ունո
  • 2.4”TFT LCD էկրանային վահան
  • GT-511C3 մատնահետքի ցուցիչ

Այս 2.4 դյույմանոց TFT էկրանը նախկինում Arduino- ի հետ օգտագործվում էր IoT- ի վրա հիմնված ռեստորանների ընտրացանկի պատվիրման համակարգ կառուցելու համար:

Քայլ 2. Կենսաչափական քվեարկող մեքենայի սխեմայի սխեման Arduino- ի միջոցով

Կենսաչափական քվեարկող մեքենայի սխեմայի սխեման Arduino- ի միջոցով
Կենսաչափական քվեարկող մեքենայի սխեմայի սխեման Arduino- ի միջոցով

Այս նախագծի սխեմաների սխեման շատ պարզ է, քանի որ մենք միայն TFT էկրանը և մատնահետքի ցուցիչի մոդուլը միացնում ենք Arduino Uno- ի հետ: Մատնահետքի տվիչի VCC և GND կապերը միացված են Arduino- ի 5V և GND կապերին, իսկ TX և RX կապերը միացված են Arduino Uno- ի թվային 11 և 12 կապերին:

2.4”TFT LCD էկրանը Arduino Shield- ն է և կարող է ուղղակիորեն տեղադրվել Arduino Uno- ի վրա, ինչպես ցույց է տրված ստորև նկարում: TFT էկրանն ունի 28 կապում, որոնք հիանալի տեղավորվում են Arduino Uno- ի մեջ, այնպես որ ես ստիպված էի զոդել մատնահետքի սենսորը Arduino- ի հետևի մասում:

Քայլ 3. Աղբյուրի ծածկագիր և քայլ առ քայլ օրենսգրքի բացատրություն

Arduino- ի միջոցով մատնահետքերի քվեարկության համակարգի այս նախագծի ամբողջական ծածկագիրը տրված է հոդվածի վերջում. այստեղ մենք բացատրում ենք ծածկագրի որոշ կարևոր գործառույթներ:

Կոդն օգտագործում է SPFD5408, Software Serial և FPS_GT511C3 գրադարանները: SPFD5408 գրադարանը Adafruit- ի սկզբնական գրադարանի փոփոխված տարբերակն է: Այս գրադարանային ֆայլերը կարելի է ներբեռնել ստորև տրված հղումներից.

  • SPFD5408 գրադարան
  • Softwareրագրային ապահովման սերիա
  • FPS_GT511C3

Գրադարաններն ընդգրկելուց և որոշ կարևոր պարամետրեր սահմանելուց հետո կարող ենք մտնել ծրագրավորման մաս: Այս ծրագրում ընդգրկված է երեք բաժին: Մեկը քվեարկող մեքենայի UI- ի ստեղծումն է, երկրորդը ՝ կոճակների հպման կետերի ձեռքբերումը և հպման հիման վրա կոճակները հայտնաբերելը, և վերջապես արդյունքների հաշվարկը և դրանք Arduino- ի հիշողության մեջ պահելը:

1. Ստեղծելով UI:

Ես ստեղծել եմ պարզ UI ՝ երեք կոճակով և նախագծի անվանումով: TFT ցուցադրման գրադարանը թույլ է տալիս գծեր գծել, ուղղանկյուն, շրջանակներ, գծեր, տողեր և շատ ավելին ՝ նախընտրած գույնի և չափի: Այստեղ ստեղծվում են երկու ուղղանկյուն կոճակներ ՝ fillRoundRect և 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 կոորդինատը

w = ուղղանկյունի լայնությունը

h = Ուղղանկյունի բարձրությունը

շառավիղ = Կլոր անկյունի շառավիղ

գույն = Ուղղահայաց գույնը:

void drawHome ()

{

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, ՈՍԿԻ);

tft.drawRoundRect (10, 160, 220, 50, 8, ՍՊԻՏԱԿ); // Գրանցվել

tft.fillRoundRect (10, 250, 220, 50, 8, ՈՍԿԻ); // Արդյունք

tft.drawRoundRect (10, 250, 220, 50, 8, ՍՊԻՏԱԿ);

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- ը տալիս է հումքի ADC արժեքները հպված տարածքի համար: Այս RAW ADC արժեքները այնուհետև վերածվում են Pixel կոորդինատների ՝ օգտագործելով քարտեզի գործառույթը:

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 կոորդինատները յուրաքանչյուր կոճակի համար, մենք կարող ենք կանխատեսել, թե որտեղ է օգտվողը դիպչել ՝ օգտագործելով «եթե» հայտարարությունը:

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

{

Serial.println («Թեկնածու 1»);

Երբ ընտրողը սեղմում է թեկնածուի կոճակը, նրան կպահանջվի մատը սկանավորել մատնահետքի տվիչի վրա: Եթե մատի ID- ն լիազորված է, ապա ընտրողին թույլատրվում է քվեարկել: Եթե որեւէ չգրանցված օգտվող ցանկանում է քվեարկել, ապա մատնահետքի մոդուլը չի հայտնաբերի իր ID- ն համակարգում, իսկ էկրանին կցուցադրվի «Ներեցեք, չեք կարող քվեարկել»:

եթե (fps. IsPressFinger ())

{

fps. CaptureFinger (կեղծ);

int id = fps. Identify1_N ();

եթե (id <200)

{

msg = "Թեկնածու 1";

քվեարկել 1 ++;

EEPROM.write (0, քվե 1);

tft.setCursor (42, 170);

tft.print («Շնորհակալություն»);

ուշացում (3000);

drawHome ();

3. Արդյունք:

Վերջին քայլը EEPROM- ի հիշողությունից ձայների հաշվարկն է և բոլոր երեք թեկնածուների ձայների համադրումը: Հաղթում է առավելագույն ձայներ հավաքած թեկնածուն: Արդյունքը կարող է հասանելի լինել միայն սերիական մոնիտորից և չի ցուցադրվի TFT էկրանին:

քվե 1 = EEPROM.read (0);

ձայն 2 = EEPROM.read (1);

ձայն 3 = EEPROM.read (2);

եթե (քվեարկել)

{

եթե ((քվե 1> քվե 2 && քվե 1> քվե 3))

{

Serial.print («Can1 հաղթում է»);

ուշացում (2000);

}

Քայլ 4. Մատնահետքերի քվեարկության համակարգի փորձարկում Arduino- ի միջոցով

Նախագիծը փորձարկելու համար Arduino Uno- ն միացրեք նոութբուքին և վերբեռնեք տրված կոդը: Կոդը վերբեռնելուց հետո TFT ցուցադրումը պետք է ցուցադրի թեկնածուի անունը: Երբ ինչ -որ մեկը դիպչի թեկնածուի անունին, մեքենան կխնդրի սկանավորել մատնահետքերի սկաները: Եթե մատնահետքը վավեր է, ապա օգտատիրոջ ձայնը կհաշվվի, բայց այն դեպքում, երբ օրինակը չի համընկնում տվյալների բազայի գրառումների հետ, քվեարկությանը մասնակցելու իրավունքը մերժվելու է: Յուրաքանչյուր թեկնածուի ձայների ընդհանուր թիվը կպահպանվի EEPROM- ում և կհաղթի այն թեկնածուն, որն ունի առավելագույն թվով ձայներ:

Հուսով եմ, որ ձեզ դուր եկավ ձեռնարկը և օգտակար բան սովորեցիք: Եթե ունեք որևէ հարց, խնդրում ենք մեզ տեղյակ պահել ստորև բերված մեկնաբանությունների բաժնում, ինչպես նաև հետևեք մեզ Instructable- ում ՝ նման ավելի հետաքրքիր նախագծերի համար:

Խորհուրդ ենք տալիս: