সুচিপত্র:

আরডুইনো এইচএমআই স্টেট মেশিন ব্যবহার করে: 9 টি ধাপ
আরডুইনো এইচএমআই স্টেট মেশিন ব্যবহার করে: 9 টি ধাপ

ভিডিও: আরডুইনো এইচএমআই স্টেট মেশিন ব্যবহার করে: 9 টি ধাপ

ভিডিও: আরডুইনো এইচএমআই স্টেট মেশিন ব্যবহার করে: 9 টি ধাপ
ভিডিও: ESP8266 ওয়্যারলেস নেক্সটশন HMI || Outseal Arduino PLC 2024, নভেম্বর
Anonim
আরডুইনো এইচএমআই স্টেট মেশিন ব্যবহার করে
আরডুইনো এইচএমআই স্টেট মেশিন ব্যবহার করে

এই নির্দেশনায়, আমি আপনাকে দেখাবো কিভাবে YAKINDU স্টেটচার্ট টুলস ব্যবহার করে একটি সহজ এবং সম্প্রসারণযোগ্য HMI উপলব্ধি করতে 16x2 LCD কীপ্যাড শিল্ড ব্যবহার করে Arduino- এর জন্য।

ফিনাইট স্টেট মেশিনগুলি (এফএসএম) জটিল হিউম্যান মেশিন ইন্টারফেস (এইচএমআই) বিকাশের জন্য একটি শক্তিশালী নকশা প্যাটার্ন। যেহেতু একটি এইচএমআই এর কার্যকারিতা বাড়তে পারে, এটি রাষ্ট্রীয় মেশিনের মতো একটি নকশা প্যাটার্ন ব্যবহার করা দরকারী।

সম্পূর্ণ উদাহরণ YAKINDU স্টেটচার্ট টুলস এ এম্বেড করা আছে। উপরন্তু, Arduino প্লাগইন এর জন্য Eclipse C ++ IDE ব্যবহার করা হয়েছে IDE তে কম্পাইল এবং ফ্ল্যাশ করার জন্য।

YAKINDU স্টেটচার্ট টুলসের সংক্ষিপ্ত সারসংক্ষেপ

এই টুলের সাহায্যে গ্রাফিক্যাল স্টেট মেশিন তৈরি করা সম্ভব। এটি ব্যবহারকারীকে রাষ্ট্রীয় মেশিন থেকে সি, সি ++ বা জাভা কোড তৈরি করতে দেয়। এই পদ্ধতির সাথে, মডেলটি পরিবর্তন বা সম্প্রসারিত করা যেতে পারে এবং ব্যবহারকারী কেবল কোডটি পুনরায় তৈরি করতে পারে এবং তাকে সাধারণ উৎস কোড লিখতে হবে না।

সরবরাহ

অংশ:

  • আরডুইনো (উনো, মেগা)
  • USB তারের
  • 16x2 LCD কীপ্যাড শিল্ড

সরঞ্জাম:

  • YAKINDU স্টেটচার্ট টুলস
  • Arduino এর জন্য Eclipse C ++ IDE

ধাপ 1: হার্ডওয়্যার

Image
Image

এলসিডি কীপ্যাড শিল্ডটি কেবল আরডুইনোতে প্লাগ করা যায়। এটিতে একটি 16x2 LCD ডিসপ্লে রয়েছে এবং অতিরিক্ত ছয়টি পুশবটন রয়েছে:

  • বাম
  • ঠিক
  • উপরে
  • নিচে
  • নির্বাচন করুন
  • (রিসেট)

স্পষ্টতই, এর মধ্যে পাঁচটি ব্যবহার করা যেতে পারে। কীগুলি একটি ভোল্টেজ ডিভাইডারে সংযুক্ত করা হয় এবং ভোল্টেজের উপর নির্ভর করে পিন A0 ব্যবহার করে সনাক্ত করা হয়। আমি তাদের সঠিকভাবে সনাক্ত করার জন্য সফটওয়্যার ডিবাউন্সিং ব্যবহার করেছি।

ধাপ 2: এটি কীভাবে কাজ করা উচিত তা নির্ধারণ করুন

এইচএমআই নিয়ন্ত্রণ
এইচএমআই নিয়ন্ত্রণ

অ্যাপ্লিকেশনটি তিনটি জিনিস করতে সক্ষম হওয়া উচিত।

  1. এখানে আমি পাঁচটি রাজ্যের মধ্যে নেভিগেট করতে বোতামগুলি ব্যবহার করতে চাই: শীর্ষ, মধ্য, নীচে, বাম এবং ডান
  2. স্টপওয়াচ একটি সাধারণ স্টপওয়াচ, যা শুরু, থামানো এবং পুনরায় সেট করা যায়। এটি প্রতি 100 মিলিসেকেন্ডে বৃদ্ধি করা উচিত
  3. তৃতীয় অংশে একটি সহজ আপ/ডাউন কাউন্টার রয়েছে। এটি ইতিবাচক সংখ্যা গণনা করতে সক্ষম হওয়া উচিত এবং এটি পুনরায় সেট করা উচিত

সক্রিয় মেনু (বা রাজ্য) উপরের লাইনে 16x2 LCD তে প্রদর্শিত হবে। অ্যাপ্লিকেশন (রাজ্য, টাইমার বা কাউন্টার) নীচের লাইনে প্রদর্শিত হবে। নেভিগেশনের জন্য, বাম এবং ডান pushbutton ব্যবহার করা উচিত।

ধাপ 3: স্টেট মেশিনকে ইন্টারফেস করা

বোতামগুলি ডিবাউন্স করা হবে এবং রাষ্ট্রীয় মেশিনে তারযুক্ত করা হবে। এগুলি রাষ্ট্রীয় মেশিনে ইভেন্ট হিসাবে ব্যবহার করা যেতে পারে। উপরন্তু, অপারেশনগুলি বর্তমান মেনু প্রদর্শন করার জন্য সংজ্ঞায়িত করা হয়। এবং কমপক্ষে দুটি ভেরিয়েবল, একটি টাইমারের জন্য এবং একটি কাউন্টারের জন্য, সংজ্ঞায়িত করা হয়েছে।

ইন্টারফেস:

// ইভেন্টে ইনপুট ইভেন্ট হিসাবে বোতামগুলি ইভেন্টে ডানদিকে ইভেন্টে ইভেন্টে ইভেন্টে ইভেন্টে নিচে নির্বাচন করুন // ডিসপ্লে এইচএমআই নির্দিষ্ট মান অপারেশন ডিসপ্লে এলসিডি স্ট্রিং (মান: স্ট্রিং, দৈর্ঘ্য: পূর্ণসংখ্যা, অবস্থান: পূর্ণসংখ্যা) অপারেশন ডিসপ্লে: পূর্ণসংখ্যা) অপারেশন clearLCDRow (অবস্থান: পূর্ণসংখ্যা) অভ্যন্তরীণ: // স্টোরেজের জন্য ভেরিয়েবল var cnt: integer var timeCnt: integer = 0

C ++ কোড জেনারেট করার পর, ইন -ইভেন্টগুলিকে ডিবাউন্স এবং ইন্টারফেসে তারযুক্ত করতে হবে। এই কোড স্নিপেট দেখায় কিভাবে এটি করতে হয়।

প্রথমে, বোতামগুলি সংজ্ঞায়িত করা হবে:

#নির্ধারিত নেই 0 #সংজ্ঞায়িত করুন 1 নির্বাচন করুন

তারপরে বোতামটি পড়ার জন্য একটি ফাংশন সংজ্ঞায়িত করা হয়েছে। LCD Shield প্রস্তুতকারকের উপর নির্ভর করে মানগুলি পরিবর্তিত হতে পারে।

স্ট্যাটিক int readButton () {int result = 0; ফলাফল = analogRead (0); যদি (ফলাফল <50) {রিটার্ন ডান; } যদি (ফলাফল <150) {রিটার্ন ইউপি; } যদি (ফলাফল <300) {রিটার্ন ডাউন; } যদি (ফলাফল <550) {বাম ফেরত; } if (result <850) {return SELECT; } ফিরে না; }

শেষে, বোতামগুলি ডিবাউন্স করা হবে। আমি 80 ms দিয়ে ভাল ফলাফল করেছি। একবার একটি বোতাম মুক্তি পাবে, এটি ইভেন্ট অনুসারে উত্থাপন করবে।

int oldState = NONE; static void raiseEvents () {int buttonPressed = readButton (); বিলম্ব (80); oldState = buttonPressed; যদি (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); বিরতি; } কেস বাম: {stateMachine-> raise_left (); বিরতি; } কেস ডাউন: {stateMachine-> raise_down (); বিরতি; } কেস ইউপি: {stateMachine-> raise_up (); বিরতি; } ক্ষেত্রে অধিকার: {stateMachine-> raise_right (); বিরতি; } ডিফল্ট: {বিরতি; }}}}

ধাপ 4: HMI নিয়ন্ত্রণ

প্রতিটি রাজ্য মেনুর একটি অংশের জন্য ব্যবহৃত হয়। এখানে উপ -রাজ্য রয়েছে, যেখানে অ্যাপ্লিকেশন - উদাহরণস্বরূপ স্টপওয়াচ - কার্যকর করা হবে।

এই ডিজাইনের মাধ্যমে, ইন্টারফেসটি সহজেই প্রসারিত করা যায়। অতিরিক্ত মেনু একই নকশা প্যাটার্ন ব্যবহার করে সহজভাবে যোগ করা যেতে পারে। একটি সেন্সরের মান পড়া এবং এটিকে চতুর্থ মেনুতে প্রদর্শন করা কোন বড় ব্যাপার নয়।

আপাতত, কেবল বাম এবং ডান নিয়ন্ত্রণ হিসাবে ব্যবহৃত হয়। কিন্তু উপরে এবং নিচেও প্রধান মেনুতে একটি নেভিগেশন এক্সটেনশন হিসাবে ব্যবহার করা যেতে পারে। একটি নির্দিষ্ট মেনু আইটেম প্রবেশ করতে শুধুমাত্র নির্বাচন বাটন ব্যবহার করা হবে।

ধাপ 5: রাজ্যগুলি পরিচালনা করুন

রাজ্যগুলি পরিচালনা করুন
রাজ্যগুলি পরিচালনা করুন

হ্যান্ডেল স্টেটস মেনু শুধুমাত্র নেভিগেশনের আরও উদাহরণ হিসাবে ব্যবহৃত হয়। উপরে, নিচে, ডান বা বাম ব্যবহার করে রাজ্যের মধ্যে স্যুইচিং করা যায়। বর্তমান অবস্থা সর্বদা LCD ডিসপ্লেতে দ্বিতীয় লাইনে মুদ্রিত হবে।

ধাপ 6: স্টপওয়াচ

স্টপওয়াচ
স্টপওয়াচ

স্টপওয়াচটি বেশ সহজ। প্রাথমিকভাবে, টাইমার মান পুনরায় সেট করা হবে। টাইমারটি বাম বোতাম ব্যবহার করে শুরু করা যায় এবং বাম এবং ডান ব্যবহার করে টগল করা যায়। আপ বা ডাউন ব্যবহার করে টাইমার রিসেট হয়। সিলেক্ট বোতামটি দুইবার ব্যবহার করে টাইমারকে শূন্যে ফিরিয়ে দেওয়া যেতে পারে - মেনু থেকে বেরিয়ে আবার প্রবেশ করুন, কারণ স্টপওয়াচে প্রাথমিকভাবে প্রবেশ করে টাইমার শূন্যে সেট করা হবে।

ধাপ 7: কাউন্টার

পাল্টা
পাল্টা

অন্তত, একটি পাল্টা বাস্তবায়িত আছে। কাউন্টার অবস্থায় প্রবেশ করলে কাউন্টার রিসেট হয়। সিলেক্ট বাটন ছাড়া যেকোনো পুশ বাটন ব্যবহার করে এটি শুরু করা যায়। এটি একটি সহজ আপ/ডাউন কাউন্টার হিসাবে প্রয়োগ করা হয়েছে, যার মান 0 এর চেয়ে ছোট হতে পারে না।

ধাপ 8: সিমুলেশন

ধাপ 9: উদাহরণ পান

আপনি এখানে IDE ডাউনলোড করতে পারেন: YAKINDU Statechart Tools

একবার আপনি IDE ডাউনলোড করলে, আপনি ফাইল -> N ew -> উদাহরণের মাধ্যমে উদাহরণ খুঁজে পাবেন

এটি শখের জন্য বিনামূল্যে ব্যবহার করা যায়, তবে আপনি 30 দিনের ট্রায়াল ব্যবহার করতে পারেন।

প্রস্তাবিত: