Talaan ng mga Nilalaman:

Arduino Menu sa isang Nokia 5110 Lcd Gamit ang isang Rotary Encoder: 6 Mga Hakbang (na may Mga Larawan)
Arduino Menu sa isang Nokia 5110 Lcd Gamit ang isang Rotary Encoder: 6 Mga Hakbang (na may Mga Larawan)

Video: Arduino Menu sa isang Nokia 5110 Lcd Gamit ang isang Rotary Encoder: 6 Mga Hakbang (na may Mga Larawan)

Video: Arduino Menu sa isang Nokia 5110 Lcd Gamit ang isang Rotary Encoder: 6 Mga Hakbang (na may Mga Larawan)
Video: debounce - bounce filtering - seribu satu jalan ke roma (Subtittled) 2024, Hulyo
Anonim
Image
Image
Arduino Menu sa isang Nokia 5110 Lcd Gamit ang isang Rotary Encoder
Arduino Menu sa isang Nokia 5110 Lcd Gamit ang isang Rotary Encoder

Minamahal na mga kaibigan maligayang pagdating sa isa pang tutorial! Sa video na ito matututunan namin kung paano bumuo ng menu ng aming pag-aari para sa tanyag na display ng Nokia 5110 LCD, upang gawing mas madaling gamitin at mas may kakayahan ang aming mga proyekto. Magsimula na tayo!

Ito ang proyekto na itatayo namin. Sa pagpapakita ng isang simpleng menu ay lilitaw, at sa tulong ng rotary encoder maaari akong mag-navigate pataas, o pababa at pumili ng isang item sa menu sa pamamagitan ng pagpindot sa pindutan ng rotary encoder. Kapag pinindot ang gitnang pindutan ng rotary encoder, lilitaw ang isa pang screen at mababago namin ang halaga ng isang variable. Kung pinindot namin ang pindutan ng paikot na encoder muli, bumalik kami sa pangunahing screen ng menu. Ang menu ay may 6 na item, at maaari kaming mag-scroll pababa o pataas sa menu at ang mga item sa display ay magbabago nang naaayon. Panoorin ang nakalakip na video upang makita nang eksakto kung paano gumagana ang menu na ito. Siyempre maaari mong baguhin ito upang makabuo ng iyong sariling mas kumplikadong mga menu kung nais mo.

Tingnan natin ngayon kung paano mabuo ang proyektong ito.

Hakbang 1: Kunin ang Lahat ng Mga Bahagi

Kunin ang Lahat ng Mga Bahagi
Kunin ang Lahat ng Mga Bahagi

Ang mga bahagi na kinakailangan upang maitayo ang proyektong ito ay ang mga sumusunod:

  • Isang Arduino Uno ▶
  • Isang display na Nokia 5110 LCD ▶
  • Isang Rotary Encoder ▶
  • Isang maliit na breadboard ▶
  • Ilang Wires ▶
  • Power Bank ▶

Ang gastos ng proyekto ay napakababa, ito ay mas mababa sa $ 10. Maaari kang makahanap ng mga link para sa lahat ng mga bahagi na ginagamit ko sa paglalarawan ng video sa ibaba.

Hakbang 2: Nokia 5110 LCD Display

Image
Image
Pagbuo ng Proyekto
Pagbuo ng Proyekto

Ang Nokia 5110 ang aking paboritong display para sa aking Mga Proyekto ng Arduino.

Ang Nokia 5110 ay isang pangunahing graphic LCD screen na orihinal na inilaan para sa isang screen ng cell phone. Gumagamit ito ng PCD8544 controller na kung saan ay isang mababang kapangyarihan CMOS LCD controller / driver. Dahil dito ang pagpapakitang ito ay may kamangha-manghang pagkonsumo ng kuryente. Gumagamit lamang ito ng 0.4mA kapag ito ay nakabukas ngunit ang backlight ay hindi pinagana. Gumagamit ito ng mas mababa sa 0.06mA kapag nasa mode ng pagtulog! Iyon ang isa sa mga kadahilanan na ginawang paborito ko ang display na ito. Ang PCD8544 interface sa microcontrollers sa pamamagitan ng isang serial interface ng bus. Napakadali nitong gamitin ang display sa Arduino. Kailangan mo lamang ikonekta ang 8 mga wire.

Naghanda ako ng isang detalyadong tutorial kung paano gamitin ang display ng Nokia 5110 LCD sa Arduino. Inilakip ko ang video na iyon sa Instructable na ito, magbibigay ito ng maaaring kapaki-pakinabang na impormasyon tungkol sa display, kaya hinihimok ko kayo na panoorin itong mabuti. Ang halaga ng display ay humigit-kumulang na $ 4.

Maaari mo itong makuha dito: ▶

Hakbang 3: Rotary Encoder

Image
Image

Ang isang rotary encoder, na tinatawag ding shaft encoder, ay isang electro-mechanical device na nagko-convert ng anggular na posisyon o paggalaw ng isang poste o axle sa isang analog o digital code. Ginagamit ang mga rotary encoder sa maraming mga application na nangangailangan ng tumpak na baras na walang limitasyong pag-ikot-kabilang ang mga pang-industriya na kontrol, robotics, espesyal na layunin ng lente ng potograpiya, mga aparato ng pag-input ng computer (tulad ng mga optomekanikal na daga at trackball), kinokontrol na mga rheometers ng stress, at umiikot na mga radar platform.

Ang rotary encoder na gagamitin namin sa proyektong ito ay isang napaka-murang encoder. Mayroon din itong isang naka-embed na pindutan at upang maisagawa ito, kailangan lamang naming ikonekta ang 5 mga wire. Inihanda ko na detalyado ang tutorial sa kung paano gumamit ng isang rotary encoder. Mahahanap mo ang video na ito na nakakabit dito.

Ang gastos ng rotary encoder na ito ay napakababa. Nagkakahalaga ito ng humigit-kumulang na $ 1.5.

Maaari mo itong makuha dito ▶

Hakbang 4: Pagbuo ng Proyekto

Image
Image
Pagbuo ng Proyekto
Pagbuo ng Proyekto
Pagbuo ng Proyekto
Pagbuo ng Proyekto

Ikonekta natin ngayon ang lahat ng mga bahagi nang magkasama. Bago itayo ang proyektong ito, kung hindi ka pa nakakagamit ng isang rotary encoder sa nakaraan, hinihikayat kita na panoorin ang tutorial na inihanda ko tungkol sa mga rotary encoder. Tutulungan ka nitong maunawaan kung paano gumagana ang mga rotary encoder at makakakuha ka ng ilang karanasan sa kanila. Nakalakip dito ang video na ito.

Inilagay ko ang display sa isang maliit na breadboard na tulad nito. Ikonekta muna natin ang display. Ang unang pin ng display na kung saan ay ang I-reset ang papunta sa digital pin 3 ng Arduino Uno, ang pangalawang pin ay papunta sa digital pin 4, ang pangatlong pin ay papunta sa digital pin 5, ang ika-apat na pin sa digital pin 11 at ang ikalimang pin sa digital pin 13. Ang susunod na pin ay Vcc. Ikonekta namin ang Vcc sa positibong riles ng breadboard, at ang positibong riles ng breadboard sa output na 3.3V ng Arduino. Ang susunod na pin ay Backlight para sa display. Dahil nais naming kontrolin ito sa pamamagitan ng software ikinonekta namin ito sa digital pin 7. Ang huling pin ay GND. Ikonekta namin ang GND sa negatibong riles ng breadboard, at ang negatibong riles ng breadboard sa Arduino GND.

Ngayon ang kailangan lang nating gawin ay upang ikonekta ang rotary encoder. Ang unang pin ay GND at ikinonekta namin ito sa negatibong riles ng breadboard. Ang susunod na pin ay Vcc at ikinonekta namin ito sa positibong riles ng breadboard. Ang susunod na pin ay SW at ikinonekta namin ito sa Analog Pin 2. Ang susunod na pin ay pinangalanang DT at ikinonekta namin ito sa Analog Pin 1. Panghuli ang pin CLK ay konektado sa Analog Pin 0. Mahahanap mo ang diagram ng eskematiko ng proyektong ito sa ang paglalarawan ng video sa ibaba.

Handa na kaming mapalakas ang proyekto. Tulad ng nakikita mo, gumagana nang maayos ang proyekto, at gumagana ang menu tulad ng inaasahan! Mahusay, tingnan natin ngayon ang software ng proyekto.

Hakbang 5: Ang Code ng Project

Ang Code ng Project
Ang Code ng Project

Sa proyektong ito gumagamit kami ng 4 na mga aklatan. Gumagamit kami ng dalawang mga aklatan para sa display, at dalawa para sa rotary encoder.

  1. Adafruit GFX:
  2. Nokia 5110:
  3. Encoder Library:
  4. Library ng TimerOne:

Sa una ay titingnan natin ang paggana ng drawMenu. Ang pagpapaandar na ito ay responsable para sa pagguhit ng Menu sa display. Ang pagpapaandar na ito ay tinatawag na bawat ilang milliseconds, kaya kung may pagbabago sa menu ang responsibilidad na ito ay responsable para sa pag-update ng menu sa screen.

int menuitem = 1; int frame = 1; int page = 1; int lastMenuItem = 1;

Mayroon ding 3 napakahalagang pandaigdigan na variable, ang variable na pahina, ang variable menuitem at variable frame. Naaalala ng pahina ng variable kung aling screen ng UI ang ipinapakita sa screen. Kaya, kung ang variable ng pahina ay 1, nasa pangunahing screen kami ng UI, at kung ang variable ay 2 nasa pangalawang screen ng UI kami kung saan itinakda namin ang halaga sa isang variable. Naaalala ng menu item ang napiling item sa menu. Kaya, kung ang halaga nito ay 1, ang unang item sa menu ay napili, kaya dapat na iguhit ng pagpapaandar ng drawMenu ang item sa menu na ito bilang itim na may puting mga titik. Kung ang menu item ay 2 ang pangalawang menu item ay napili at iba pa. Ang variable ng frame, naaalala kung aling bahagi ng menu ang ipinapakita sa screen. Dahil ang menu na nilikha namin ay naglalaman ng 6 na item at maipapakita lamang namin ang 3 sa mga ito nang paisa-isa, kailangan nating malaman kung aling mga item ang ipinapakita sa screen. Ang variable ng frame, ay nagsasabi sa amin ng eksaktong ito. Kung ang variable ng frame ay may halaga na 1, ipinapakita namin ang unang tatlong mga item sa menu, kung ito ay 2, ipinapakita namin ang mga item 2, 3, 4 at iba pa.

Sinubukan kong gawing madali ang code hangga't maaari upang mabago kaya lumikha ako ng ilang mga pandaigdigan na variable na humahawak sa mga pangalan para sa mga item sa menu. Sa ganitong paraan, madali kang makakalikha ng iyong sariling mga menu nang hindi naghahanap sa code.

String menuItem1 = "Contrast"; String menuItem2 = "Volume"; String menuItem3 = "Wika"; String menuItem4 = "Pinagkakahirapan"; String menuItem5 = "Light: ON"; String menuItem6 = "I-reset";

boolean backlight = totoo;

int pagkakaiba = 60; int dami = 50;

String wika [3] = {"EN", "ES", "EL"};

int napiliLanguage = 0;

String kahirapan [2] = {"MADALI", "HARD"};

int napiliHirapan = 0;

Sa una ay pinasimulan namin ang lahat ng mga pandaigdigang variable na kinakailangan sa code. Susunod na ipinasimula namin ang pagpapakita. Sa pagpapaandar ng loop, sa una tinawag namin ang drawMenu function upang iguhit ang menu sa screen. Pagkatapos basahin namin ang halaga mula sa Rotary encoder at suriin kung ang pindutan ay pinindot. Halimbawa, kung nasa pangunahing screen kami ng UI at ang unang item sa menu ay napili, kung ang halaga mula sa rotary encoder ay tumaas, tumataas ang variable ng menuitem at sa susunod na loop ang paggana ng drawMenu ay iguhit ang pangalawang item sa menu tulad ng napili. Kung pinindot namin ngayon ang pindutan ng rotary encoder nagna-navigate kami sa pangalawang pahina, kung saan itinakda namin ang halaga ng variable. Muli gamit ang rotary encoder maaari naming dagdagan o bawasan ang halaga ng variable. Kung pinindot namin ang pindutan ay nag-navigate kami pabalik sa pangunahing pahina ng menu, at bumababa ang variable ng pahina.

Iyon ang pangunahing ideya sa likod ng menu na ito. Sinusunod namin ang parehong pamamaraan para sa lahat ng mga item sa menu at pahina. Ang code ay kumplikado, mahigit sa 400 linya ang haba. Tila kumplikado ngunit kung susubukan mo ito mismo ay mas madali mo itong maiintindihan at magagawa mong baguhin ito, palawakin ito at gamitin ito sa iyong sariling mga proyekto. Tulad ng dati maaari mong makita ang code na nakakabit dito.

Hakbang 6: Pagsubok sa Proyekto

Pagsubok sa Proyekto
Pagsubok sa Proyekto

Kung na-load namin ang code maaari naming makita na ang proyekto ay gumagana tulad ng inaasahan. Maaari naming i-navigate ang menu pataas at pababa gamit ang baras at maaari naming piliin ang anumang item sa menu sa pamamagitan ng pagpindot sa rotary encoder button. Ang astig nito!

Ngayong alam na namin kung paano bumuo ng mga menu para sa mga pagpapakita ng Nokia 5110 LCD maaari kaming magdagdag ng higit pang mga tampok sa aming mga proyekto at gawing mas madaling gamitin ang mga ito. Ang simpleng menu na itinayo namin ngayon ay maaaring mapabuti. Maaari kaming gumamit ng mga nakakagambala sa halip na suriin ang mga estado ng pindutan sa lahat ng oras. Sa ganitong paraan maaari nating mabawasan ang pagkonsumo ng kuryente ng proyekto at gawing mas malinis ang code. Maghahanda ako ng isang video sa mga nakakagambala sa lalong madaling panahon kaya't manatiling nakasubaybay. Gusto kong marinig ang iyong opinyon tungkol sa proyektong menu na ito. Nahahanap mo ba itong kapaki-pakinabang at balak mong gumamit ng isang menu sa anuman sa iyong proyekto. Mangyaring i-post ang iyong mga saloobin at ideya sa ibaba, salamat!

Inirerekumendang: