Mündəricat:

Arduino HMI, dövlət maşınlarından istifadə edərək: 9 addım
Arduino HMI, dövlət maşınlarından istifadə edərək: 9 addım

Video: Arduino HMI, dövlət maşınlarından istifadə edərək: 9 addım

Video: Arduino HMI, dövlət maşınlarından istifadə edərək: 9 addım
Video: How to Interacting Arduino with HMI | Controlling arduino from HMI 2024, Noyabr
Anonim
Arduino HMI, dövlət maşınlarından istifadə edir
Arduino HMI, dövlət maşınlarından istifadə edir

Bu Təlimat kitabında, Arduino üçün 16x2 LCD Keypad Shield istifadə edərək sadə və genişləndirilə bilən bir HMI həyata keçirmək üçün YAKINDU Statechart Tools -dan necə istifadə edəcəyinizi sizə göstərəcəyəm.

Sonlu Dövlət Maşınları (FSM), kompleks İnsan Maşın İnterfeyslərini (HMI) inkişaf etdirmək üçün güclü bir dizayn nümunəsidir. Bir HMI -nin funksionallığı arta biləcəyi üçün dövlət maşınları kimi bir dizayn modelindən istifadə etmək faydalıdır.

Tam nümunə YAKINDU Statechart Tools -a daxil edilmişdir. Əlavə olaraq, Arduino Plugin üçün Eclipse C ++ IDE, IDE -nin tərtib edilməsi və yanıb -sönməsi üçün istifadə edilmişdir.

YAKINDU Statechart Alətlərinin Qısa Xülasəsi

Bu vasitə ilə qrafik vəziyyət maşınları yaratmaq mümkündür. İstifadəçiyə dövlət maşınından C, C ++ və ya Java kodu yaratmağa imkan verir. Bu yanaşma ilə model dəyişdirilə və ya genişləndirilə bilər və istifadəçi sadəcə kodu yenidən yarada bilər və düz mənbə kodu yazmaq məcburiyyətində deyil.

Təchizat

Parçalar:

  • Arduino (Uno, Mega)
  • USB Kabel
  • 16x2 LCD Klaviatura Qalxanı

Alətlər:

  • YAKINDU Statechart Alətləri
  • Arduino üçün Eclipse C ++ IDE

Addım 1: Hardware

Image
Image

LCD Keypad Shield sadəcə Arduinoya qoşula bilər. 16x2 LCD ekrana malikdir və əlavə olaraq altı düymə var:

  • Sol
  • Sağ
  • Yuxarı
  • Aşağı
  • Seçin
  • (Sıfırla)

Aydındır ki, onlardan beşi istifadə edilə bilər. Açarlar bir gərginlik bölücüsünə bağlanır və gərginliyə görə Pin A0 istifadə edərək aşkarlanır. Onları düzgün aşkar etmək üçün proqramın debuninqindən istifadə etdim.

Addım 2: Bunun necə işləməli olduğunu müəyyənləşdirin

HMI Nəzarət
HMI Nəzarət

Tətbiq üç şeyi etməyi bacarmalıdır.

  1. Burada dövlətləri idarə etmək üçün düymələrdən istifadə edərək beş vəziyyət arasında getmək istəyirəm: Üst, Orta, Alt, Sol və Sağ
  2. Başlatmaq, dayandırmaq və sıfırlamaq üçün sadə bir saniyəölçən. Hər 100 milisaniyədə artırılmalıdır
  3. Üçüncü hissədə sadə yuxarı/aşağı sayğac var. Müsbət ədədləri saymağı bacarmalı və sıfırlanmalıdır

Aktiv menyu (və ya vəziyyət) 16x2 LCD -də üst sətirdə göstəriləcək. Tətbiq (Dövlət, Taymer və ya Sayğac) alt sətirdə göstəriləcək. Naviqasiya üçün sol və sağ düymələrdən istifadə edilməlidir.

Addım 3: Dövlət Maşını ilə əlaqə qurun

Düymələr silinəcək və dövlət maşınına bağlanacaq. Dövlət maşınında hadisələrdə olduğu kimi istifadə edilə bilər. Bundan əlavə, cari menyunu göstərmək üçün əməliyyatlar təyin olunur. Və ən azı iki dəyişən təyin olunur, biri taymer üçün, biri də sayğac üçün.

interfeys:

// düymələr hadisənin giriş hadisələri kimi hadisənin sağında, hadisənin baş verməsi halında hadisənin aşağı salınması halında // HMI xüsusi dəyərlərinin göstərilməsi əməliyyatın göstərilməsiLCDString (dəyər: sim, uzunluq: tamsayı, mövqe: tamsayı) əməliyyat ekranıLCDİnteger (dəyər: tamsayı, mövqe): integer) əməliyyatı clearLCDRow (mövqe: integer) daxili: // saxlama üçün dəyişənlər var cnt: integer var timeCnt: integer = 0

C ++ kodunu yaratdıqdan sonra, hadisələr ləğv edilməli və interfeysə bağlanmalıdır. Bu kod parçası bunun necə ediləcəyini göstərir.

Əvvəlcə düymələr təyin ediləcək:

#define YOX 0 #müəyyən et SEÇ 1

Sonra düyməni oxumaq üçün müəyyən edilmiş bir funksiya var. LCD Shield istehsalçısından asılı olaraq dəyərlər dəyişə bilər.

statik int readButton () {int nəticə = 0; nəticə = analogRead (0); əgər (nəticə <50) {sağa dön; } if (nəticə <150) {UP qaytar; } if (nəticə <300) {geri AŞAĞI; } if (nəticə <550) {LEFT qaytar; } if (nəticə <850) {SELECT qaytar; } NONE qaytar; }

Sonda düymələr silinəcək. 80 ms ilə yaxşı nəticələr əldə etdim. Bir düymə sərbəst buraxıldıqda, bu halda müvafiq olaraq yüksəldiləcəkdir.

int oldState = NONE; statik void liftEvents () {int buttonPressed = readButton (); gecikmə (80); oldState = düyməsinə basıldı; if (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> lift_select (); fasilə; } SOL SAHƏSİ: {stateMachine-> lift_left (); fasilə; } hal AŞAĞI: {stateMachine-> lift_down (); fasilə; } YUKARI: {stateMachine-> yüksəltmək (); fasilə; } hal HAQQI: {stateMachine-> lift_right (); fasilə; } default: {break; }}}}

Addım 4: HMI İdarəetmə

Hər bir vəziyyət menyunun bir hissəsi üçün istifadə olunur. Tətbiqin (məsələn, saniyəölçən) yerinə yetiriləcəyi alt dövlətlər var.

Bu dizaynla interfeys asanlıqla genişləndirilə bilər. Eyni dizayn modelindən istifadə etməklə əlavə menyular əlavə edilə bilər. Bir sensorun dəyərini oxumaq və dördüncü menyu elementində göstərmək heç də böyük bir iş deyil.

Hələlik nəzarət üçün yalnız sol və sağ istifadə olunur. Ancaq yuxarı və aşağı əsas menyuda naviqasiya uzantısı olaraq da istifadə edilə bilər. Xüsusi bir menyu maddəsinə daxil olmaq üçün yalnız seçim düyməsindən istifadə olunacaq.

Addım 5: Dövlətləri idarə edin

Dövlətləri idarə edin
Dövlətləri idarə edin

Tutacaq vəziyyətləri menyusu yalnız naviqasiyanın başqa bir nümunəsi kimi istifadə olunur. Yuxarı, aşağı, sağa və ya sola istifadə etmək vəziyyətlər arasında keçid etməyə imkan verir. Mövcud vəziyyət həmişə LCD ekranda ikinci sətirdə yazılacaq.

Addım 6: Saniyəölçən

Saniyəölçən
Saniyəölçən

Saniyəölçən olduqca sadədir. Başlanğıcda, taymer dəyəri sıfırlanacaq. Taymer sol düyməni istifadə edərək başlaya bilər və sola və sağa keçə bilər. Yuxarı və ya aşağıdan istifadə edərək taymer sıfırlanır. Taymeri iki dəfə seçmək düyməsini istifadə edərək sıfıra qaytarmaq olar - menyudan çıxıb yenidən daxil olmaq üçün, əvvəlcə saniyəölçənə daxil olaraq taymer sıfıra qoyulacaq.

Addım 7: Sayğac

Sayğac
Sayğac

Ən azından tətbiq olunan bir sayğac var. Sayğac vəziyyətinə daxil olaraq sayğac sıfırlanır. Seçmə düyməsi istisna olmaqla, hər hansı bir düyməni istifadə edərək başlaya bilərsiniz. Dəyəri 0 -dan kiçik ola bilməyən sadə yuxarı/aşağı sayğac kimi tətbiq olunur.

Addım 8: Simulyasiya

Addım 9: Nümunə alın

IDE -ni buradan yükləyə bilərsiniz: YAKINDU Statechart Tools

IDE -ni yüklədikdən sonra nümunəni Fayl -> N ew -> Nümunə vasitəsilə tapırsınız

Həvəskarlar üçün istifadə etmək pulsuzdur, ancaq 30 günlük sınaqdan da istifadə edə bilərsiniz.

Tövsiyə: