Orodha ya maudhui:

Kuangalia kwa dijiti juu ya Arduino Kutumia Mashine ya Jimbo La Mwisho: Hatua 6
Kuangalia kwa dijiti juu ya Arduino Kutumia Mashine ya Jimbo La Mwisho: Hatua 6

Video: Kuangalia kwa dijiti juu ya Arduino Kutumia Mashine ya Jimbo La Mwisho: Hatua 6

Video: Kuangalia kwa dijiti juu ya Arduino Kutumia Mashine ya Jimbo La Mwisho: Hatua 6
Video: Leslie Kean on David Grusch (UFO Whistleblower): Non-Human Intelligence, Recovered UFOs, UAP, & more 2024, Desemba
Anonim
Kuangalia kwa dijiti kwenye Arduino Kutumia Mashine ya Jimbo La Mwisho
Kuangalia kwa dijiti kwenye Arduino Kutumia Mashine ya Jimbo La Mwisho

Haya hapo, nitakuonyesha jinsi saa ya dijiti inaweza kubuniwa na Zana za Jimbo la YAKINDU na kukimbia kwenye Arduino, ambayo hutumia Ngao ya Keypad ya LCD.

Mfano wa asili wa saa ya dijiti ilichukuliwa kutoka kwa David Harel. Amechapisha jarida kuhusu

"[…] Upanuzi mpana wa utaratibu wa kawaida wa mashine za serikali na michoro ya serikali."

Katika jarida hili, alitumia mfano wa saa ya dijiti kwa utafiti wake. Nimetumia kama msukumo na kujenga tena saa na Zana za Jimbo la Jimbo la YAKINDU (chombo cha kuunda modeli za picha za mashine za serikali na kutoa nambari ya C / C ++ nayo) na kuifufua kwenye Arduino.

Vifaa

Vifaa:

  • Arduino Uno au Mega
  • Ngao ya keypad ya LCD

Programu:

  • Zana za Jimbo la YAKINDU
  • Eclipse C ++ IDE ya Arduino

Hatua ya 1: Jinsi Utazamaji wa Dijiti Unavyofanya Kazi

Image
Image

Wacha tuanze kwa kufafanua jinsi saa ya dijiti inapaswa kufanya kazi. Je! Unakumbuka hizi… wacha tuseme… "saa bora zaidi" za dijiti kila mtu alikuwa na miaka ya 90? Saa iliyojumuishwa, kengele tofauti na sauti yake ya kukasirisha kila saa kamili. Ikiwa sio, angalia: saa 90 za dijiti.

Kwa hivyo kimsingi ni saa inayoweza kusanidiwa na njia tofauti. Hasa, wakati wa sasa utaonyeshwa, lakini kuna huduma zingine. Kama pembejeo, umewasha / kuzima, hali na kitufe cha kuweka. Kwa kuongeza, unaweza kuwasha na kuzima taa. Kwa kitufe cha hali unaweza kutofautisha kati ya njia na kuamsha / kulemaza huduma za saa:

  • Onyesha saa (Saa)
  • Onyesha tarehe (Tarehe)
  • Weka kengele (Alarm 1, Alarm 2)
  • Wezesha / afya chime (Weka Chime)
  • Tumia saa ya saa (Stop Watch)

Ndani ya menyu, unaweza kutumia kitufe cha kuwasha / kuzima kusanidi hali. Kitufe cha kuweka hukuruhusu kuweka wakati - k.v. kwa saa au kengele. Saa ya saa inaweza kudhibitiwa - kuanza na kusimamishwa - kwa kutumia kitufe cha kuwasha na kuzima. Unaweza pia kutumia kaunta ya lap

Kwa kuongezea, kuna chime, ambayo hupiga kengele kila saa kamili, na taa inayoweza kudhibitiwa kuunganishwa. Katika hatua ya kwanza, sikuwatia waya kwa Arduino.

Hatua ya 2: Mashine ya Serikali

Ngao ya keypad ya LCD
Ngao ya keypad ya LCD

Sitaki kwenda kwa undani zaidi kwa ufafanuzi wa mfano huu. Sio kwa sababu ni ngumu sana, ni kubwa kidogo tu. Nitajaribu kuelezea wazo la kimsingi la jinsi inavyofanya kazi. Utekelezaji unapaswa kujifafanua mwenyewe, kwa kuangalia mfano au kupakua na kuiga. Sehemu zingine za mashine ya serikali zinajumuishwa katika mikoa ndogo, kama eneo la wakati uliowekwa. Na hii, usomaji wa mashine ya serikali unapaswa kuhakikisha.

Mfano umegawanywa katika sehemu mbili - picha na maandishi. Katika sehemu ya maandishi matukio, vigeugeu, nk vitafafanuliwa. Katika sehemu ya picha - mchoro wa serikali - utekelezaji wa kimantiki wa mfano umeainishwa. Ili kuunda mashine ya serikali, inayotimiza tabia maalum, hafla zingine za uingizaji zinahitajika, ambazo zinaweza kutumika kwa mfano: onoff, set, mode, light, and light_r. Ndani ya sehemu ya ufafanuzi tukio la ndani linatumiwa, ambalo huongeza thamani ya wakati kila ms 100:

kila ms 100 / wakati + = 1

Kulingana na hatua 100 ms wakati wa sasa utahesabiwa katika fomati ya HH: MM: SS:

onyesha. kwanza = (wakati / 36000)% 24;

onyesha.sekunde = (wakati / 600)% 60; onyesha.tatu = (wakati / 10)% 60;

Maadili yataunganishwa kwa onyesho la LCD kwa kutumia sasisho la operesheniLCD kila wakati mashine ya serikali itaitwa:

onyesha.sasishaLCD (onyesha kwanza, onyesha.pili, onyesha.tatu, onyesha maandishi)

Utekelezaji wa kimsingi wa mashine ya serikali tayari umefafanuliwa katika sehemu Jinsi Dalili za Dijiti inavyofanya kazi. Ndani ya zana hiyo nimetumia vitu "maalum" vya uundaji kama CompositeState, Historia, Michoro ndogo, ExitNode, nk. Maelezo ya kina yanaweza kupatikana katika Mwongozo wa Mtumiaji.

Hatua ya 3: Shield Keypad Shield

Shield ya Keypad Shield ni nzuri kabisa kwa miradi rahisi, ambayo inahitaji skrini ya taswira na vifungo vingine kama pembejeo - HMI ya kawaida, rahisi (Kiunganishi cha Mashine ya Binadamu). Keypad Shield ya LCD ina vifungo vitano vya mtumiaji na kingine cha kuweka upya. Vifungo vitano vyote kwa pamoja vimeunganishwa na pini ya A0 ya Arduino. Kila mmoja wao ameunganishwa na mgawanyiko wa voltage, ambayo inaruhusu kutofautisha kati ya vifungo.

Unaweza kutumia AnalogRead (0) kupata maadili maalum, ambayo kwa kweli yanaweza kutofautiana na mtengenezaji. Mradi huu rahisi unaonyesha thamani ya sasa kwenye LCD:

# pamoja na "Arduino.h"

# pamoja na "LiquidCrystal.h" LiquidCrystal LCD (8, 9, 4, 5, 6, 7); kuanzisha batili () {lcd.anza (16, 2); lcd.setCursor (0, 0); andika ("Thamani iliyopimwa"); } kitanzi batili () {lcd.setCursor (0, 1); lcd.print (""); lcd.setCursor (0, 1); lcd.print (AnalogSoma (0)); kuchelewesha (200); }

Haya ni matokeo yangu yaliyopimwa:

  • Hakuna: 1023
  • Chagua: 640
  • Kushoto: 411
  • Chini: 257
  • Juu: 100
  • Kulia: 0

Kwa vizingiti hivi inawezekana kusoma vifungo:

#fafanua HAKUNA 0 # fafanua CHAGUA 1 #fafanua KUSHOTO 2 #fafanua CHINI 3 #fafanua UP 4 #fafanua HAKI 5 tuli tuli kusomaButton () {int result = 0; matokeo = AnalogSoma (0); ikiwa (matokeo <50) {kurudi KULIA; } ikiwa (matokeo <150) {kurudi UP; } ikiwa (matokeo <300) {rudi chini; } ikiwa (matokeo <550) {kurudi KUSHOTO; } ikiwa (matokeo <850) {kurudi CHAGUA; } kurudi HAKUNA; }

Hatua ya 4: Kuingilia Mashine ya Serikali

Kuingilia Mashine ya Serikali
Kuingilia Mashine ya Serikali

Nambari ya C ++ iliyozalishwa ya mashine ya serikali hutoa viunga, ambavyo lazima vitekelezwe kudhibiti mashine ya serikali. Hatua ya kwanza ni kuunganisha katika hafla na funguo za Keypad Shield. Nimeonyesha tayari jinsi ya kusoma vitufe, lakini kwa kuziunganisha kwenye mashine ya serikali, kuondoa vifungo kunahitajika - vinginevyo, hafla hizo zingeinuliwa mara nyingi, ambayo husababisha tabia isiyotabirika. Dhana ya utenguaji wa programu sio mpya. Unaweza kuangalia nyaraka za Arduino.

Katika utekelezaji wangu, hugundua ukingo unaoanguka (ikitoa kitufe). Nilisoma thamani ya kitufe, subiri ms 80 (nilipata matokeo bora na 80 badala ya 50), sahau matokeo na soma thamani mpya. Ikiwa the OldResult haikuwa (haikufutwa) na matokeo mapya sio, najua, kwamba kitufe kilikuwa kimeshinikizwa hapo awali na sasa kimetolewa. Halafu, ninainua tukio la kuingiza kulingana na mashine ya serikali.

int oldState = HAPANA; kuchelewesha (80); oldState = kifungoBonyeza; ikiwa (oldState! = HAKUNA && readButton () == HAKUNA) {switch (oldState) {case SELECT: {stateMachine-> getSCI_Button () -> raise_mode (); kuvunja; } kesi KUSHOTO: {stateMachine-> getSCI_Button () -> raise_set (); kuvunja; } kesi chini: {stateMachine-> getSCI_Button () -> raise_light (); kuvunja; } kesi UP: {stateMachine-> getSCI_Button () -> raise_light_r (); kuvunja; } kesi HAKI: {stateMachine-> getSCI_Button () -> raise_onoff (); kuvunja; } chaguomsingi: {break; }}}}

Hatua ya 5: Mambo ya Wiring Pamoja

Programu kuu hutumia sehemu tatu:

  • Mashine ya Serikali
  • Wakati
  • Kishikishi cha Kuonyesha (kawaida lcd.print (…))

DigitalWatch * stateMachine = mpya DigitalWatch (); CPPTimerInterface * timer_sct = mpya CPPTimerInterface (); DisplayHandler * displayHandler = new DisplayHandler ();

Mashine ya serikali hutumia kiboreshaji cha onyesho na imepata kipima muda, ambacho kitasasishwa kudhibiti hafla za wakati. Baadaye, mashine ya serikali huanza na kuingizwa.

kuanzisha batili () {stateMachine-> setSCI_Display_OCB (displayHandler); stateMachine-> setTimer (timer_sct); stateMachine-> init (); stateMachine-> ingiza (); }Kitanzi hufanya mambo matatu:

  • Ongeza hafla za kuingiza data
  • Hesabu muda uliopita na usasishe kipima muda
  • Piga mashine ya serikali

muda wa sasa_wa muda = 0; mwendo wa mwisho_mzunguko_mwingine = 0; kitanzi batili () {raiseEvents (); wakati_ wa mwisho_wakati = wakati_wa sasa; wakati_wa sasa = millis (); timer_sct-> sasishaActiveTimer (stateMachine, time_time - last_cycle_time); stateMachine-> runCycle (); }

Hatua ya 6: Pata Mfano

Hiyo ndio. Labda, sijataja kila undani wa utekelezaji, lakini unaweza kuangalia mfano au kuacha maoni.

Ongeza mfano kwa IDE inayoendesha na: Faili -> Mpya -> Mfano -> Mifano ya Jimbo la YAKINDU -> Ifuatayo -> Arduino - Kutazama kwa Dijiti (C ++)

> Unaweza kupakua IDE hapa <<

Unaweza kuanza na jaribio la siku 30. Baadaye, lazima upate leseni, ambayo ni bure kwa matumizi yasiyo ya kibiashara!

Ilipendekeza: