Mundarija:

Arduino HMI davlat mashinalari yordamida: 9 qadam
Arduino HMI davlat mashinalari yordamida: 9 qadam

Video: Arduino HMI davlat mashinalari yordamida: 9 qadam

Video: Arduino HMI davlat mashinalari yordamida: 9 qadam
Video: ESP8266 Беспроводной ЧМИ Nextion || Внешний ПЛК Arduino 2024, Noyabr
Anonim
Arduino HMI davlat mashinalari yordamida
Arduino HMI davlat mashinalari yordamida

Ushbu yo'riqnomada men sizga Arduino uchun 16x2 LCD klaviatura qalqoni yordamida oddiy va kengaytiriladigan HMIni amalga oshirish uchun YAKINDU Statechart asboblaridan qanday foydalanishni ko'rsataman.

Cheklangan davlat mashinalari (FSM) - bu murakkab inson mashinalari interfeyslarini (HMI) ishlab chiqishning kuchli dizayni. HMI funksionalligi oshishi mumkinligi sababli, davlat mashinalari kabi dizayn naqshidan foydalanish foydalidir.

To'liq misol YAKINDU Statechart Tools -ga kiritilgan. Bundan tashqari, Arduino Plugin uchun Eclipse C ++ IDE IDE -ni kompilyatsiya qilish va miltillash uchun ishlatilgan.

YAKINDU Statechart asboblari haqida qisqacha ma'lumot

Bu asbob yordamida grafik holatli mashinalarni yaratish mumkin. Bu foydalanuvchiga davlat mashinasidan C, C ++ yoki Java kodini yaratishga imkon beradi. Ushbu yondashuv yordamida modelni o'zgartirish yoki kengaytirish mumkin va foydalanuvchi kodni qayta yaratishi mumkin va oddiy kodni yozish shart emas.

Ta'minotlar

Qismlar:

  • Arduino (Uno, Mega)
  • USB kabeli
  • 16x2 LCD klaviatura qalqoni

Asboblar:

  • YAKINDU Statechart asboblari
  • Arduino uchun Eclipse C ++ IDE

1 -qadam: Uskuna

Image
Image

LCD klaviatura qalqoni Arduino -ga ulanishi mumkin. U 16x2 LCD displeyga ega va qo'shimcha ravishda oltita tugmachaga ega:

  • Chapda
  • To'g'ri
  • Yuqoriga
  • Pastga
  • Tanlang
  • (Qayta o'rnatish)

Shubhasiz, ulardan beshtasini ishlatish mumkin. Kalitlar kuchlanish taqsimlagichga ulanadi va kuchlanishga qarab A0 pin yordamida aniqlanadi. Men ularni to'g'ri aniqlash uchun dasturiy ta'minotni o'chirishdan foydalandim.

2 -qadam: Bu qanday ishlashi kerakligini aniqlang

HMI nazorati
HMI nazorati

Dastur uchta narsani bajarishga qodir bo'lishi kerak.

  1. Bu erda men tugmachalarni ishlatib, beshta holat o'rtasida o'tishni xohlayman: Yuqori, O'rta, Pastki, Chap va O'ng
  2. Sekundomer - ishga tushirish, to'xtatish va qayta o'rnatish mumkin bo'lgan oddiy soniya hisoblagichi. U har 100 millisekundda ko'paytirilishi kerak
  3. Uchinchi qismda yuqoriga/pastga oddiy hisoblagich mavjud. U musbat sonlarni sanash imkoniyatiga ega bo'lishi va uni qayta o'rnatish mumkin

Faol menyu (yoki holat) 16x2 LCD displeyda yuqori satrda ko'rsatiladi. Ilova (shtat, taymer yoki hisoblagich) pastki satrda ko'rsatiladi. Navigatsiya uchun chap va o'ng tugmachalardan foydalanish kerak.

3 -qadam: Davlat mashinasini o'zaro bog'lash

Tugmalar o'chiriladi va davlat mashinasiga ulanadi. Ularni davlat mashinasidagi hodisalarda bo'lgani kabi ishlatish mumkin. Bundan tashqari, amaldagi menyuni ko'rsatish uchun operatsiyalar belgilanadi. Va kamida ikkita o'zgaruvchi aniqlangan, biri taymer uchun, ikkinchisi hisoblagich uchun.

interfeys:

// tugmachalarni voqea hodisalari sifatida kiritish, voqeani o'ngda - voqeani chapda, voqeani yuqoriga - pastga tanlashda // HMIga xos qiymatlarni ko'rsatish DisplayLCDString (qiymat: satr, uzunlik: tamsayı, pozitsiya: tamsayı) operatsion displeyi LCDInteger (qiymat: tamsayı, pozitsiya): integer) operatsiyasi clearLCDRow (pozitsiya: tamsayı) ichki: // saqlash uchun o'zgaruvchilar var cnt: integer var timeCnt: integer = 0

C ++ kodini yaratgandan so'ng, voqealar o'chirilishi va interfeysga ulanishi kerak. Ushbu kod parchasi buni qanday qilishni ko'rsatadi.

Avval tugmalar aniqlanadi:

#define NONE 0 #belgilang SELECT 1 #define LEFT 2 #dewne DOWN 3 #define UP 4 #deftine RIGHT 5

Keyin tugmani o'qish uchun belgilangan funksiya mavjud. LCD Shield ishlab chiqaruvchisiga qarab, qiymatlar farq qilishi mumkin.

statik int readButton () {int natijasi = 0; natija = analogRead (0); if (natija <50) {O'ngga qaytish; } if (natija <150) {qaytish UP; } if (natija <300) {qaytish DOWN; } if (natija <550) {LEFT qaytish; } if (natija <850) {qaytish SELECT; } NONE qaytarish; }

Oxirida tugmalar bekor qilinadi. Men 80 ms bilan yaxshi natijalarga erishdim. Tugma bo'shatilgandan so'ng, u mos keladigan holatni ko'taradi.

int oldState = NONE; statik void elevEvents () {int tugmasi Pressed = readButton (); kechikish (80); oldState = tugmasi bosildi; if (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> lift_select (); tanaffus; } QOLG'I holat: {stateMachine-> ko'tarish_sol (); tanaffus; } holat DOWN: {stateMachine-> lift_down (); tanaffus; } holat UP: {stateMachine-> ko'tarish_up (); tanaffus; } holat O'ng: {stateMachine-> ko'tarish_haqi (); tanaffus; } standart: {break; }}}}

4 -qadam: HMI nazorati

Har bir holat menyuning bir qismi uchun ishlatiladi. Sub -shtatlar mavjud, bu erda dastur - masalan, sekundomer - bajariladi.

Ushbu dizayn yordamida interfeysni osongina kengaytirish mumkin. Qo'shimcha menyularni bir xil dizayn namunasi yordamida qo'shish mumkin. Sensorning qiymatini o'qish va uni to'rtinchi menyuda ko'rsatish unchalik muhim emas.

Hozircha boshqaruv sifatida faqat chap va o'ng ishlatiladi. Lekin yuqoriga va pastga asosiy menyuda navigatsiya kengaytmasi sifatida ham foydalanish mumkin. Muayyan menyu bandini kiritish uchun faqat tanlash tugmasi ishlatiladi.

5 -qadam: Shtatlar bilan ishlash

Davlatlarni boshqarish
Davlatlarni boshqarish

Tutqich holatlar menyusi faqat navigatsiyaning boshqa misoli sifatida ishlatiladi. Yuqoridan, pastdan, o'ngdan yoki chapdan foydalanish holatlar o'rtasida almashish imkonini beradi. Joriy holat har doim LCD displeyning ikkinchi qatorida chop etiladi.

6 -qadam: Sekundomer

Sekundomer
Sekundomer

Sekundomer juda oddiy. Dastlab, taymer qiymati tiklanadi. Taymerni chap tugma yordamida ishga tushirish mumkin, chapga va o'ngga o'tish mumkin. Yuqoriga yoki pastga ishlatish taymerni asl holatiga qaytaradi. Taymerni tanlash tugmachasini ikki marta bosish bilan nolga qaytarish mumkin - menyudan chiqib, yana bir bor kiriting, chunki taymer taymerni dastlabki kiritish bilan nolga o'rnatiladi.

7 -qadam: Hisoblagich

Hisoblagich
Hisoblagich

Hech bo'lmaganda, hisoblagich mavjud. Hisoblagich holatiga kirish hisoblagichni asl holatiga qaytaradi. Tanlash tugmasidan tashqari, uni har qanday tugma yordamida boshlash mumkin. U oddiy yuqoriga/pastga hisoblagich sifatida amalga oshiriladi, uning qiymati 0 dan kichik bo'lishi mumkin emas.

8 -qadam: Simulyatsiya

9 -qadam: misolni oling

IDE -ni bu yerdan yuklab olishingiz mumkin: YAKINDU Statechart Tools

IDE -ni yuklaganingizdan so'ng, misolni Fayl -> N ew -> Misol orqali topasiz

Bu havaskorlar uchun bepul, lekin siz 30 kunlik sinovdan foydalanishingiz mumkin.

Tavsiya: