সুচিপত্র:
- ধাপ 1: হার্ডওয়্যার এবং সফটওয়্যারের প্রয়োজনীয়তা
- পদক্ষেপ 2: সমস্যা বোঝা
- ধাপ 3: STM32CubeMX কনফিগারেশন
- ধাপ 4: কেইল সফটওয়্যার ডেভেলপমেন্ট
- ধাপ 5: উপসংহার
ভিডিও: STM32CubeMX বাটন ডিবাউন্স ইনট্রাপ্ট: ৫ টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:00
হাই, এই টিউটোরিয়ালে আমি বোতাম বাউন্স প্রতিরোধের জন্য আমার সহজ সমাধান দেওয়ার চেষ্টা করব যা খুবই গুরুতর সমস্যা। ইন্টারনেটে এই সমস্যার সমাধানের জন্য অনেক ভিডিও আছে, কিন্তু বাহ্যিক বাধার জন্য সেগুলি নয়। এই সমস্ত ভিডিওতে বোতাম প্রেস করা হয় ভোটের পদ্ধতি দ্বারা যা অকার্যকর। সুতরাং শুরু করি!
ধাপ 1: হার্ডওয়্যার এবং সফটওয়্যারের প্রয়োজনীয়তা
হার্ডওয়্যারের প্রয়োজনীয়তা:
- STM32 ARM ডেভেলপমেন্ট বোর্ড
- একটি কম্পিউটার
সফ্টওয়্যার প্রয়োজনীয়তা:
- STM32CubeMX
- Keil uVision5
পদক্ষেপ 2: সমস্যা বোঝা
সুতরাং, আমরা বোতাম বাউন্সিং সমস্যার সমাধান খোঁজার চেষ্টা করি। অতএব, আমাদের বিষয়টি বুঝতে হবে। সুতরাং, যখন আমরা একটি বোতাম টিপি তখন এটি এমন একটি রাষ্ট্র আসা উচিত যা তার আগের অবস্থার বিপরীত। উদাহরণস্বরূপ, যদি এটি উচ্চ হয় তবে এটি কম হতে হবে এবং যদি এটি কম হয় তবে এটি উচ্চ হতে হবে। যাইহোক, এটি আদর্শ অবস্থা (সুরক্ষায়:)) বাস্তবে, যখন আমরা একটি বোতাম টিপি তখন এটি নিষ্ক্রিয় অবস্থায় আসার আগে উচ্চ এবং নিম্নের মধ্যে বাউন্স করা শুরু করে। সুতরাং, ভান করে যে এটি বেশ কয়েকবার চাপানো হয়েছে যা সমস্যা সৃষ্টি করে। সুতরাং, আমাদের কি করা উচিত?
এখানে আমি লক্ষ্য করতে চাই যে এই উদাহরণে, আমরা বোতাম প্রেস সনাক্ত করার জন্য বাহ্যিক বাধা ব্যবহার করব। সুতরাং, আমরা বাটন প্রেস শনাক্ত করার পরে আমাদের অলস অবস্থায় পৌঁছানোর জন্য 50mS এর মত কিছু সময় অপেক্ষা করতে হবে এবং বোতামটি অলস অবস্থায় আছে কি না তা আবার পরীক্ষা করতে হবে। যদি এটি নিষ্ক্রিয় অবস্থায় থাকে তবে আমরা আমাদের কাজ চালিয়ে যেতে পারি। সুতরাং, কোড দেখা যাক:)
ধাপ 3: STM32CubeMX কনফিগারেশন
সুতরাং, আমাদের প্রথমে আমাদের পুশ বোতামের জন্য বাহ্যিক বাধা সক্ষম করতে হবে (আমি এখানে ধরে নিচ্ছি যে আপনি STM32F407VG আবিষ্কার বোর্ড ব্যবহার করেন):
- "পিনআউট এবং কনফিগারেশন" ট্যাবে পিন PA0 তে ক্লিক করুন যা পুশ বোতামের সাথে সংযুক্ত এবং GPIO_EXTI0 নির্বাচন করুন যা সেই পিনে বাহ্যিক বাধা সক্ষম করে।
- পিনের "ব্যবহারকারী লেবেল" কে "Push_Button" বা আপনি যা চান তা পরিবর্তন করুন।
তারপর, 50mS সময় বিলম্ব তৈরি করার জন্য আমাদের টাইমার কনফিগার করতে হবে:
- "টাইমার" বিভাগে প্রবেশ করুন
- TIM1 এ ক্লিক করুন
- ঘড়ির উৎস হিসেবে "অভ্যন্তরীণ ঘড়ি" নির্বাচন করুন
-
কনফিগারেশনে (যদি আপনি এই বিভাগটি বুঝতে চান তবে দয়া করে এই টিউটোরিয়ালটি পড়ুন, অত্যন্ত সুপারিশকৃত "STM32F4 ARM MCU সহ সার্ভো মোটর কন্ট্রোল"):
- 32000 হিসাবে prescaler সেট করুন
- এবং পাল্টা সময় 50
- "এনভিআইসি সেটিংস" ট্যাবে সমস্ত বাধা সক্ষম করুন
একটি আউটপুট হিসাবে LED সক্ষম করুন:
PD12 তে ক্লিক করুন এবং "GPIO_Output" হিসাবে সেট করুন
তারপরে, উপরের চিত্রের মতো ঘড়িটি কনফিগার করুন এবং কোডটি তৈরি করুন।
ধাপ 4: কেইল সফটওয়্যার ডেভেলপমেন্ট
প্রথমে, আমরা স্টেট ভেরিয়েবলকে সংজ্ঞায়িত করি যা নিশ্চিত করবে যে বাউন্সিং হওয়ার সময় আমরা বাইরের বাধার ভিতরে টাইমার শুরু করি না:
/ * ব্যবহারকারী কোড শুরু PFP */বুল অবস্থা = সত্য; / * ব্যবহারকারী কোড শেষ PFP */
তারপর, আমরা বাহ্যিক বাধার জন্য ISR লিখি:
বাতিল HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin) {যদি (GPIO_Pin == Push_Button_Pin && state == true) {HAL_TIM_Base_Start_IT (& htim1); রাষ্ট্র = মিথ্যা; } অন্য {_NOP (); }}
বোতাম টিপে আমরা চেক করি যে এটি আমাদের সংজ্ঞায়িত পুশ বোতাম ছিল এবং রাষ্ট্রটি সত্য কিনা। শুরুতে if স্টেটমেন্টে প্রবেশ করার জন্য রাজ্যটি সত্য হবে। প্রবেশের পরে আমরা টাইমার শুরু করি এবং নিশ্চিত করি যাতে বাউন্সিং টাইমার পুনরায় আরম্ভ না করে।
তারপর, আমরা টাইমার ইন্টারাপ্টের জন্য ISR লিখি:
শূন্য
/* দ্রষ্টব্য: কলব্যাকের প্রয়োজন হলে এই ফাংশনটি পরিবর্তন করা উচিত নয়, HAL_TIM_PeriodElapsedCallback ব্যবহারকারীর ফাইলে প্রয়োগ করা যেতে পারে */ যদি (HAL_GPIO_ReadPin (Push_Button_GPIO_Port, Push_Button_Pin) == GPIO_PIN_RESET) {HAL_GPIO_TogglePin (GPIOD_ GPIOD, GPIOD_12 অবস্থা = সত্য; HAL_TIM_Base_Stop_IT (& htim1); }}
/ * ব্যবহারকারীর কোড শেষ 4 */
50mS এর পরে আমরা চেক করি যে বোতামটি এখনও রিসেট অবস্থায় আছে কি না, যদি হ্যাঁ হয় তাহলে আমরা জানি যে বোতামটি নিষ্ক্রিয় অবস্থায় আছে। তারপরে আমরা নেতৃত্বকে টগল করি, অন্য বোতাম টিপতে এবং এটি আবার শুরু করতে সক্ষম হওয়ার জন্য টাইমার বন্ধ করতে সক্ষম হওয়ার জন্য রাষ্ট্রকে সত্য করে তুলি।
সুতরাং, এই প্রক্রিয়াটি নিশ্চিত করবে যে আমরা বাউন্সিং সমস্যা রোধ করি।
ধাপ 5: উপসংহার
এটি ছিল বোতাম ছাড়ার কোড। আমি লক্ষ্য করতে চাই যে এই কোডটি আমার দ্বারা তৈরি করা হয়েছিল এবং আমি একজন বিশেষজ্ঞ প্রোগ্রামার নই। সুতরাং, অবশ্যই ত্রুটি থাকতে পারে। আপনার যদি আরও ভাল সমাধান থাকে তবে দয়া করে এটি নোট করুন। ভুলে যাবেন না, যদি আপনি কোন সমস্যার সম্মুখীন হন দয়া করে আমাকে লিখুন এবং আমি সাহায্য করার চেষ্টা করব।
প্রস্তাবিত:
বাটন সেল অক্টোপাস: 8 টি ধাপ
বাটন সেল অক্টোপাস: বোতাম সেল অক্টোপাস বোতাম ব্যাটারি প্রতিস্থাপন করে। এটি একটি 4 সেন্ট ব্যাটারি থেকে একটি থার্মোমিটার এবং একটি আর্দ্রতা গেজ চালানোর জন্য ব্যবহৃত হয়েছিল। এই ব্যাটারি বানানোও দেখানো হয়েছে
আপনার ম্যাজিকবিট [ম্যাজিকব্লকস] এ পুশ বাটন ব্যবহার করুন: ৫ টি ধাপ
আপনার Magicbit [Magicblocks] এ পুশ বাটন ব্যবহার করুন: এই টিউটোরিয়ালটি আপনাকে Magicblocks ব্যবহার করে আপনার Magicbit এ Push Buttons ব্যবহার করতে শেখাবে। আমরা এই প্রকল্পে ডেভেলপমেন্ট বোর্ড হিসেবে ম্যাজিকবিট ব্যবহার করছি যা ESP32 এর উপর ভিত্তি করে। অতএব যে কোন ESP32 উন্নয়ন বোর্ড এই প্রকল্পে ব্যবহার করা যেতে পারে
প্রেস বাটন); // একটি Arduino LCD গেম: 5 টি ধাপ (ছবি সহ)
প্রেস বাটন); // একটি আরডুইনো এলসিডি গেম: সম্প্রতি স্কাউটসে, আমি গেম ডিজাইন মেধা ব্যাজে কাজ করেছি। একটি প্রয়োজনীয়তার জন্য, আমি এই গেমটি আরডুইনো ব্যবহার করে তৈরি করেছি যা LED রকার গেমের উপর ভিত্তি করে তৈরি করা হয়েছে। টি এর শুরুতে
এফপিজিএ সাইক্লোন IV ডিউপ্রোলজিক - পুশ বাটন এবং এলইডি: 5 টি ধাপ
এফপিজিএ সাইক্লোন IV ডিউপ্রোলজিক - পুশ বাটন এবং এলইডি: এই টিউটোরিয়ালে, আমরা বহিরাগত এলইডি সার্কিট নিয়ন্ত্রণ করতে এফপিজিএ ব্যবহার করতে যাচ্ছি। আমরা নিম্নলিখিত কাজগুলো বাস্তবায়ন করতে যাচ্ছি পর্যায়ক্রমে ভিডিও ডেমো ল্যাব বন্ধ
AVR মাইক্রোকন্ট্রোলার। একটি পুশ বাটন সুইচ ব্যবহার করে LED গুলি টগল করুন। পুশ বাটন ডিবাউন্সিং ।: 4 ধাপ
AVR মাইক্রোকন্ট্রোলার। একটি পুশ বাটন সুইচ ব্যবহার করে LED গুলি টগল করুন। পুশ বাটন ডিবাউন্সিং: এই বিভাগে, আমরা শিখব কিভাবে ATMega328PU এর জন্য প্রোগ্রাম সি কোড তৈরি করতে হয় একটি বাটন সুইচ থেকে ইনপুট অনুযায়ী তিনটি LED এর অবস্থা টগল করতে। এছাড়াও, আমরা 'সুইচ বাউন্স' সমস্যাটির সমাধান অনুসন্ধান করেছি। সাধারণত, আমরা