সুচিপত্র:
- সরবরাহ
- ধাপ 1: হার্ডওয়্যার
- ধাপ 2: এটি কীভাবে কাজ করা উচিত তা নির্ধারণ করুন
- ধাপ 3: স্টেট মেশিনকে ইন্টারফেস করা
- ধাপ 4: HMI নিয়ন্ত্রণ
- ধাপ 5: রাজ্যগুলি পরিচালনা করুন
- ধাপ 6: স্টপওয়াচ
- ধাপ 7: কাউন্টার
- ধাপ 8: সিমুলেশন
- ধাপ 9: উদাহরণ পান
ভিডিও: আরডুইনো এইচএমআই স্টেট মেশিন ব্যবহার করে: 9 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:00
এই নির্দেশনায়, আমি আপনাকে দেখাবো কিভাবে YAKINDU স্টেটচার্ট টুলস ব্যবহার করে একটি সহজ এবং সম্প্রসারণযোগ্য HMI উপলব্ধি করতে 16x2 LCD কীপ্যাড শিল্ড ব্যবহার করে Arduino- এর জন্য।
ফিনাইট স্টেট মেশিনগুলি (এফএসএম) জটিল হিউম্যান মেশিন ইন্টারফেস (এইচএমআই) বিকাশের জন্য একটি শক্তিশালী নকশা প্যাটার্ন। যেহেতু একটি এইচএমআই এর কার্যকারিতা বাড়তে পারে, এটি রাষ্ট্রীয় মেশিনের মতো একটি নকশা প্যাটার্ন ব্যবহার করা দরকারী।
সম্পূর্ণ উদাহরণ YAKINDU স্টেটচার্ট টুলস এ এম্বেড করা আছে। উপরন্তু, Arduino প্লাগইন এর জন্য Eclipse C ++ IDE ব্যবহার করা হয়েছে IDE তে কম্পাইল এবং ফ্ল্যাশ করার জন্য।
YAKINDU স্টেটচার্ট টুলসের সংক্ষিপ্ত সারসংক্ষেপ
এই টুলের সাহায্যে গ্রাফিক্যাল স্টেট মেশিন তৈরি করা সম্ভব। এটি ব্যবহারকারীকে রাষ্ট্রীয় মেশিন থেকে সি, সি ++ বা জাভা কোড তৈরি করতে দেয়। এই পদ্ধতির সাথে, মডেলটি পরিবর্তন বা সম্প্রসারিত করা যেতে পারে এবং ব্যবহারকারী কেবল কোডটি পুনরায় তৈরি করতে পারে এবং তাকে সাধারণ উৎস কোড লিখতে হবে না।
সরবরাহ
অংশ:
- আরডুইনো (উনো, মেগা)
- USB তারের
- 16x2 LCD কীপ্যাড শিল্ড
সরঞ্জাম:
- YAKINDU স্টেটচার্ট টুলস
- Arduino এর জন্য Eclipse C ++ IDE
ধাপ 1: হার্ডওয়্যার
এলসিডি কীপ্যাড শিল্ডটি কেবল আরডুইনোতে প্লাগ করা যায়। এটিতে একটি 16x2 LCD ডিসপ্লে রয়েছে এবং অতিরিক্ত ছয়টি পুশবটন রয়েছে:
- বাম
- ঠিক
- উপরে
- নিচে
- নির্বাচন করুন
- (রিসেট)
স্পষ্টতই, এর মধ্যে পাঁচটি ব্যবহার করা যেতে পারে। কীগুলি একটি ভোল্টেজ ডিভাইডারে সংযুক্ত করা হয় এবং ভোল্টেজের উপর নির্ভর করে পিন A0 ব্যবহার করে সনাক্ত করা হয়। আমি তাদের সঠিকভাবে সনাক্ত করার জন্য সফটওয়্যার ডিবাউন্সিং ব্যবহার করেছি।
ধাপ 2: এটি কীভাবে কাজ করা উচিত তা নির্ধারণ করুন
অ্যাপ্লিকেশনটি তিনটি জিনিস করতে সক্ষম হওয়া উচিত।
- এখানে আমি পাঁচটি রাজ্যের মধ্যে নেভিগেট করতে বোতামগুলি ব্যবহার করতে চাই: শীর্ষ, মধ্য, নীচে, বাম এবং ডান
- স্টপওয়াচ একটি সাধারণ স্টপওয়াচ, যা শুরু, থামানো এবং পুনরায় সেট করা যায়। এটি প্রতি 100 মিলিসেকেন্ডে বৃদ্ধি করা উচিত
- তৃতীয় অংশে একটি সহজ আপ/ডাউন কাউন্টার রয়েছে। এটি ইতিবাচক সংখ্যা গণনা করতে সক্ষম হওয়া উচিত এবং এটি পুনরায় সেট করা উচিত
সক্রিয় মেনু (বা রাজ্য) উপরের লাইনে 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 দিনের ট্রায়াল ব্যবহার করতে পারেন।
প্রস্তাবিত:
Arduino UNO এবং একক চ্যানেল 5V সলিড স্টেট রিলে মডিউল ব্যবহার করে কিভাবে বাল্ব নিয়ন্ত্রণ করবেন: 3 টি ধাপ
কিভাবে Arduino UNO এবং একক চ্যানেল 5V সলিড স্টেট রিলে মডিউল ব্যবহার করে বাল্ব নিয়ন্ত্রণ করতে হয়: বর্ণনা: traditionalতিহ্যগত যান্ত্রিক রিলে এর সাথে তুলনা করে, সলিড স্টেট রিলে (SSR) এর অনেক সুবিধা রয়েছে: এটি একটি দীর্ঘ জীবন, অনেক বেশি চালু/ বন্ধ গতি এবং কোন শব্দ নেই। এছাড়াও, এটি কম্পন এবং যান্ত্রিকের জন্য আরও ভাল প্রতিরোধ ক্ষমতা রয়েছে
স্টেট মেশিন সহ আরডুইনো অটো রোবট: 4 টি ধাপ
রাজ্য মেশিনের সাথে Arduino Otto রোবট: প্রকল্পের সংক্ষিপ্ত বিবরণ এই প্রকল্পে, আমি আপনাকে Otto রোবট প্রোগ্রামিং এর একটি উপায় দেখাতে চাই, যা একটি Arduino ভিত্তিক DIY রোবট। YAKINDU স্টেটচার্ট টুলস ব্যবহার করে (অ-বাণিজ্যিকের জন্য বিনামূল্যে) আমরা সহজেই গ্রাফিক্যালি আচরণের মডেল করার জন্য রাষ্ট্রীয় মেশিন ব্যবহার করতে পারি
Arduino এর সাথে 2.4Ghz NRF24L01 মডিউল ব্যবহার করে ওয়্যারলেস রিমোট - Nrf24l01 4 চ্যানেল / 6 চ্যানেল ট্রান্সমিটার রিসিভার কোয়াডকপ্টার - আরসি হেলিকপ্টার - আরডুইনো ব্যবহার করে আরসি প্লেন: 5 টি ধাপ (ছবি সহ)
Arduino এর সাথে 2.4Ghz NRF24L01 মডিউল ব্যবহার করে ওয়্যারলেস রিমোট | Nrf24l01 4 চ্যানেল / 6 চ্যানেল ট্রান্সমিটার রিসিভার কোয়াডকপ্টার | আরসি হেলিকপ্টার | আরডুইনো ব্যবহার করে আরসি প্লেন: একটি আরসি গাড়ি চালানোর জন্য | চতুর্ভুজ | ড্রোন | আরসি প্লেন | RC নৌকা, আমাদের সবসময় একটি রিসিভার এবং ট্রান্সমিটার দরকার, ধরুন RC QUADCOPTER এর জন্য আমাদের একটি 6 টি চ্যানেল ট্রান্সমিটার এবং রিসিভার দরকার এবং সেই ধরনের TX এবং RX খুব ব্যয়বহুল, তাই আমরা আমাদের একটি তৈরি করতে যাচ্ছি
আপনার ক্যামকর্ডার / লো ভোল্টেজ সলিড স্টেট রিলে এমআইসি জ্যাক ব্যবহার করে স্বয়ংক্রিয় রিমোট চালু / বন্ধ: 4 টি ধাপ (ছবি সহ)
আপনার ক্যামকর্ডারে এমআইসি জ্যাক ব্যবহার করে স্বয়ংক্রিয় রিমোট চালু / বন্ধ আমরা এমআইসি জ্যাক সনাক্ত করার জন্য লো-ভোল্টেজ সলিড-স্টেট রিলে তৈরি করেছি এবং ক্যামকর্ডারের মতো একই সময়ে একটি রিমোট ডিভাইস স্বয়ংক্রিয়ভাবে চালু এবং বন্ধ করেছি। কঠিন অবস্থা
ক্রিডম সলিড-স্টেট রিলে ব্যবহার করে 110 ভ্যাকের সুপার ইজি পিসি কন্ট্রোল: 3 টি ধাপ (ছবি সহ)
ক্রিডম সলিড-স্টেট রিলে ব্যবহার করে 110 ভ্যাকের সুপার ইজি পিসি নিয়ন্ত্রণ: আমি কিছু গরম প্লেট সোল্ডারিং করার জন্য আমার হাত চেষ্টা করার জন্য প্রস্তুত হচ্ছি। অতএব, আমার পিসি থেকে 110Vac নিয়ন্ত্রণ করার একটি উপায় দরকার। এই নির্দেশযোগ্য দেখায় কিভাবে একটি পিসিতে একটি সিরিয়াল আউটপুট পোর্ট থেকে 110Vac কে সহজে নিয়ন্ত্রণ করতে হয়। আমার ব্যবহৃত সিরিয়াল পোর্টটি ছিল একটি ইউএসবি টাইপ