সুচিপত্র:

5-তারের প্রতিরোধী টাচ সেন্সর: 10 টি ধাপ
5-তারের প্রতিরোধী টাচ সেন্সর: 10 টি ধাপ

ভিডিও: 5-তারের প্রতিরোধী টাচ সেন্সর: 10 টি ধাপ

ভিডিও: 5-তারের প্রতিরোধী টাচ সেন্সর: 10 টি ধাপ
ভিডিও: Наливной пол по маякам. Ровная и красивая стяжка. #27 2024, জুলাই
Anonim
5-ওয়্যার রেজিস্টিভ টাচ সেন্সর
5-ওয়্যার রেজিস্টিভ টাচ সেন্সর

হ্যালো হ্যালো!

আমি এই সাইটে কাজ করেছি এবং এটি অনেকটা পরিবর্তিত হয়েছে বলে মনে হচ্ছে! আমি অবশেষে অন্য একটি প্রকল্পের জন্য চাকা পিছনে ফিরে পেতে প্রস্তুত, এবং আমি মনে করি এটা নিজেকে একটু পরিবর্তন করার সময়!

আমি কিছু সময়ের জন্য 271828 এর প্লেট এবং বলের উপর ভিত্তি করে একটি প্রকল্পের কথা মনে রেখেছিলাম, কিন্তু শেষ হওয়ার আগে সেন্সর এবং নিয়ন্ত্রণ তত্ত্ব সম্পর্কে আমার অনেক কিছু জানার আছে। আমি ভেবেছিলাম যে যতক্ষণ আমি একটি বা দুটি জিনিস শিখছি, আমি আপনাকে আমার সাথে নিয়ে যেতে পারি!

সেই লক্ষ্যে, এই টিউটোরিয়ালগুলির জন্য আমার লক্ষ্য আমার আরো পালিশ টিউটোরিয়ালের মধ্যে এক ধরণের সংকর হতে চলেছে, এবং প্রকল্পের জন্য একটি রেকর্ড। প্রতিটি পৃথক টিউটোরিয়াল সেই যাত্রার এক ধাপ হবে, এবং আমি অতীতে যেসব বিবরণ দেখেছি সেগুলি অন্তর্ভুক্ত করা হবে যেমন কোড ডেভেলপমেন্ট (শুধু সম্পূর্ণ কোডের পরিবর্তে) এবং আমি ভুল পথে যাচ্ছি।

আমি এই নতুন প্রকল্পের জন্য খুব উচ্ছ্বসিত, এবং আমি এটি কতটা ভাল কাজ করে তা দেখতে বেরিয়ে এসেছি!

আজ আমরা একটি সহজ 5-ওয়্যার টাচ প্যানেল পেতে যাচ্ছি যা একটি DP-32 এর সাথে কাজ করছে।

চল শুরু করি!

ধাপ 1: আপনার যা লাগবে

আপনার যা লাগবে
আপনার যা লাগবে

যেহেতু এই টিউটোরিয়ালটি একটি একক সেন্সর কাজ করার বিষয়ে, তাই মাইক্রোকন্ট্রোলার এবং টাচ-প্যানেলের বাইরে আপনার খুব বেশি প্রয়োজন হবে না।

  • একটি মাইক্রোকন্ট্রোলার।

    আমি আমার DP32 ব্যবহার করছি একটি রুটি-বোর্ড অন্তর্নির্মিত কারণ এটি প্রোটোটাইপিংকে অবিশ্বাস্যভাবে সহজ করে তোলে।

  • বিভিন্ন তার এবং তারের।

    আমি টাচ-প্যানেলের অন্তর্নির্মিত ফিতা কেবল ব্যবহার করতে পারতাম, কিন্তু যদি এটি অশ্রুপাত করে তবে পুরো প্যানেলটি অকেজো। পরিবর্তে, আমি অন্তর্নির্মিত তারের উপর চাপ কমাতে একটি 6-তারের তার ব্যবহার করছি।

  • শিরোনাম 5-তারের প্রতিরোধী স্পর্শ-প্যানেল!

    আমার একটি 4-তারের প্রতিরোধী স্পর্শ-প্যানেল ছিল, কিন্তু এর জন্য ফিতা কেবলটি ভেঙে গেছে।

এবং এটাই!

ধাপ 2: একটি 5-তারের প্রতিরোধী টাচ প্যানেল কি?

একটি 5-তারের প্রতিরোধী টাচ প্যানেল কি?
একটি 5-তারের প্রতিরোধী টাচ প্যানেল কি?
একটি 5-তারের প্রতিরোধী টাচ প্যানেল কি?
একটি 5-তারের প্রতিরোধী টাচ প্যানেল কি?
একটি 5-তারের প্রতিরোধী টাচ প্যানেল কি?
একটি 5-তারের প্রতিরোধী টাচ প্যানেল কি?

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

আমি এই প্যানেলটি পছন্দ করি কারণ আপনি সমস্ত তারের চিহ্ন দেখতে পারেন, এটি কী করে তা দেখতে সহজ করে তোলে। প্রথম ছবিতে, আমি প্রতিটি ট্রেস আলাদাভাবে রঙ করেছি। আপনি সম্ভবত দেখতে পাবেন যে চারটি তারের (গোলাপী, হলুদ, কমলা এবং বেগুনি) প্রতিটি চার কোণের একটিতে যায়। মাঝের তার (লাল) নমনীয় সেন্সর প্যানেলে যায়।

দ্বিতীয় ছবিতে, আমরা চারটি তারের (উপরের-ডান এবং নীচে-ডান) দুটিকে একটি উচ্চ ভোল্টেজে (লাল দেখানো) সেট করেছি, অন্য দুটি (উপরের-বাম এবং নীচে-বাম) কম সেট করা আছে ভোল্টেজ (নীল দেখানো)। এটি পুরো প্যানেল জুড়ে ভোল্টেজের একটি গ্রেডিয়েন্ট তৈরি করে। এই ক্ষেত্রে, গ্রেডিয়েন্ট X- অক্ষ বরাবর যায়, তাই একটি উচ্চ ভোল্টেজ X- অক্ষ বরাবর একটি উচ্চ অবস্থান উপস্থাপন করে।

যখন আমরা প্যানেলে আমাদের আঙুল স্পর্শ করি, এটি নমনীয় সেন্সরকে হতাশ করে, এক্স-অক্ষের গ্রেডিয়েন্টের সাথে কোথাও সংযোগ করে। আমাদের মাইক্রোকন্ট্রোলারের ভোল্টেজ সেন্সরগুলি এই ভোল্টেজটি বুঝতে পারে এবং এক্স-অক্ষে আপনার আঙ্গুলটি কোথায় স্পর্শ করছে তা আপনাকে বলবে!

তৃতীয় ছবিতে, আপনি দেখতে পারেন কিভাবে কনফিগারেশন পরিবর্তন করে আমাদের Y- অক্ষ বরাবর উপলব্ধি করতে দেয়। এইভাবে, আমরা বলতে পারি 2-ডি স্পেসে আমাদের আঙুল কোথায় স্পর্শ করছে!

ধাপ 3: তারের

তারের
তারের
তারের
তারের

আপনি সম্ভবত উপরের ছবিগুলিতে দেখতে পাচ্ছেন, আমি আমার চারটি কোণকে তাদের নিজস্ব ডিজিটাল আউটপুট পিনের সাথে সংযুক্ত করেছি। এটি আমাকে তাদের পৃথকভাবে উচ্চ বা নিম্ন সেট করতে দেবে। আমার সেন্সর পিন একটি এনালগ ইনপুট পিনের সাথে সংযুক্ত হয়। 4-তারের বিপরীতে 5-তারের টাচ-স্ক্রিন সম্পর্কে চমৎকার জিনিস হল যে আপনার কেবল একটি এনালগ পিন দরকার, যেখানে 4-তারের 2 এর প্রয়োজন হবে।

আপনার ওয়্যারিং অবশ্যই ভিন্ন হতে পারে, কিন্তু আমার ওয়্যারিং নিম্নরূপ:

এনালগ 0 (পিন 6) সেন্সরের সাথে সংযোগ করে (মাঝের পিন)

ডিজিটাল 3 শীর্ষ-ডান (শীর্ষ-সর্বাধিক পিন) সংযোগ করে

ডিজিটাল 2 শীর্ষ-বাম (দ্বিতীয় শীর্ষ-সর্বাধিক পিন) সংযোগ করে

ডিজিটাল 1 নীচের-বাম (দ্বিতীয় নীচে-সর্বাধিক পিন) সংযুক্ত করে

ডিজিটাল 0 নীচে-ডান (নীচে-সবচেয়ে পিন) সংযুক্ত করে

এটা আবার লক্ষ্য করার মতো যে আমি মাইক্রোকন্ট্রোলার এবং প্যানেলের মধ্যে যেতে 6-তারের কেবল ব্যবহার করছি। আমি এই তারের উপরের পিনটি সংযোগহীন রেখেছি।

ধাপ 4: সফটওয়্যার ডেভেলপমেন্ট

সফটওয়্যার উন্নয়ন
সফটওয়্যার উন্নয়ন

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

যথারীতি, আমি ডিজিলেন্ট কোর সহ Arduino IDE ব্যবহার করব। প্রতিটি বিভাগে একটি কোড ফাইল, স্ক্রিন শট, সেইসাথে সংযোজন এবং আমরা যা অর্জন করার চেষ্টা করছি তার বিবরণ অন্তর্ভুক্ত করবে।

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

ধাপ 5: স্টেট মেশিন ব্লিঙ্ক

স্টেট মেশিন ব্লিঙ্ক
স্টেট মেশিন ব্লিঙ্ক

আমার প্রথম পদক্ষেপ হল "বিলম্ব ()" এর উপর ভিত্তি করে একটি ব্লিঙ্ক ফাংশনকে স্টেট মেশিনে পরিবর্তন করা।

যারা সুইচ-স্টেটমেন্ট ব্যবহার করেন না তাদের জন্য, এটি একটি if- স্টেটমেন্টের অনুরূপ কাজ করে। এটি (কমলা বাক্সে) আমাদের "রাষ্ট্র" পরিবর্তনশীল পরীক্ষা করে (যা 0 থেকে শুরু হয়)। তারপর এটি আমাদের বর্তমান অবস্থার ক্ষেত্রে ঝাঁপিয়ে পড়ে। আপনি দেখতে পাবেন যে কেস 0 এবং 2 এলইডি চালু এবং বন্ধ করার জন্য (যথাক্রমে) দায়ী, যখন কেস 1 এবং 3 সুইচগুলির মধ্যে অপেক্ষা করার জন্য দায়ী।

ধাপ 6: বোতাম ঝলকান

বোতাম ঝাপসা
বোতাম ঝাপসা
বোতাম ঝাপসা
বোতাম ঝাপসা
বোতাম ঝাপসা
বোতাম ঝাপসা

পরবর্তীতে, আমি চেয়েছিলাম আলোটি ঝলকানোর জন্য বোতামটি ব্যবহার করা হোক। এটিকে জটিল করে তোলার পরিবর্তে, আমি সমস্ত রাজ্যগুলিকে একের পর এক সরিয়ে দিয়েছি (রাজ্য 0 হয়ে যায় রাজ্য 1, ইত্যাদি)। এটি করার সময়, প্রস্থান রাজ্যগুলির পাশাপাশি রাজ্য নিজেই বৃদ্ধি করতে সতর্ক থাকুন (ছবি 3 দেখুন)।

আমি দ্বিতীয় "অপেক্ষা" অবস্থাটিও মুছে ফেলেছি। এর মানে হল যে বোতামটি এক সেকেন্ডের জন্য আলো চালু করে, এবং আপনি বোতামটি বন্ধ হওয়ার সাথে সাথে আবার টিপতে পারেন।

এটি লক্ষণীয় যে এই সিস্টেমটি স্বয়ংক্রিয়ভাবে আমাদের জন্য বোতামটি বাতিল করে দেয়, কারণ 0 এ ফিরে আসার আগে আমাদের LED বন্ধ হওয়ার জন্য অপেক্ষা করতে হবে যেখানে বোতামটি আবার চক্রটি ট্রিগার করতে পারে।

ধাপ 7: সিরিয়াল যোগাযোগ

সিরিয়াল যোগাযোগ
সিরিয়াল যোগাযোগ
সিরিয়াল যোগাযোগ
সিরিয়াল যোগাযোগ

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

ধাপ 8: সমন্বয় পড়া

পড়ার সমন্বয়
পড়ার সমন্বয়
পড়ার সমন্বয়
পড়ার সমন্বয়
পড়ার সমন্বয়
পড়ার সমন্বয়
পড়ার সমন্বয়
পড়ার সমন্বয়

এটা ভাল যে শেষ ধাপটি সহজ ছিল, কারণ এটি একটি অস্পষ্ট ছিল।

শুরু করার জন্য, আমি আমাদের টাচ প্যানেলের জন্য ভেরিয়েবল যোগ করেছি, যার মধ্যে টাচ প্যানেল এবং আমাদের বোতাম উভয়ের জন্য কিছু ডেডিকেটেড টাইম ভেরিয়েবল রয়েছে। আপনি একটু পরে কেন দেখতে পাবেন।

আমি সম্পূর্ণরূপে রাষ্ট্র-মেশিন পুনরায় লিখেছি। কোডটি দেখতে কিছুটা বিভ্রান্তিকর, তাই আমি একটি ব্লক ডায়াগ্রাম অন্তর্ভুক্ত করেছি যা কি করা হয়েছে তা ব্যাখ্যা করা উচিত।

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

দ্রষ্টব্য: DEBOUNCE_TIME ধ্রুবক একটু কম হতে পারে। এটা বাড়াতে নির্দ্বিধায়।

ধাপ 9: পরিষ্কার করা

পরিষ্কার আপ
পরিষ্কার আপ
পরিষ্কার আপ
পরিষ্কার আপ
পরিষ্কার আপ
পরিষ্কার আপ

আমরা এই প্রকল্পের জন্য কোডের চূড়ান্ত সংস্করণে এসেছি!

শুরু করার জন্য, আমি অতিবাহিত সময় গণনা করার জন্য loop_diff () নামে একটি ফাংশন যুক্ত করেছি। DP32 এর জন্য অভ্যন্তরীণ ঘড়িটি স্বাক্ষরবিহীন দীর্ঘ এবং যদিও এটি অত্যন্ত অসম্ভাব্য, এই কোডের রানটাইমের সময় ঘড়িটি লুপ হতে পারে এমন সম্ভাবনা রয়েছে। সেক্ষেত্রে, btn_time বা panel_time- এ সংরক্ষিত সময় থেকে কেবল বর্তমান সময়টি বিয়োগ করলে আমাদের অদ্ভুত কিছু পাওয়া যাবে, তাই আমি loop_diff () লিখেছিলাম যখন লুপগুলি দেখা যায় এবং সেই অনুযায়ী আচরণ করে।

আমি সামান্য পরিচ্ছন্নতার কাজ করেছি। আমি এখন অব্যবহৃত "state_time" ভেরিয়েবল সরিয়ে ফেলেছি। আমি LED_BUILTIN ট্যাগ (যা একটি Arduino স্ট্যান্ডার্ড) থেকে PIN_LED1 ট্যাগ (যা চিপকিট এবং DP32 এর জন্য আদর্শ) থেকে স্যুইচ করেছি। আমি প্রক্রিয়া শুরু এবং শেষ করার বিষয়ে সিরিয়ালের মাধ্যমে সমস্ত বার্তাও সরিয়ে দিয়েছি, যা সিরিয়ালের মাধ্যমে আমাদের ডেটাকে আরও পরিষ্কার করে তোলে।

*আমি বছর আগে গণিত করেছি, এবং আমি মনে করি যে মিলিস () ফাংশনের জন্য এটি ভেরিয়েবল লুপ হওয়ার আগে ধ্রুবক রানটাইমের এক সপ্তাহের মতো কিছু লাগবে।

ধাপ 10: চূড়ান্ত চিন্তা

সর্বশেষ ভাবনা
সর্বশেষ ভাবনা

এবং এটাই!

আপনি যদি অনুসরণ করে থাকেন, তাহলে আপনার মাইক্রোকন্ট্রোলারের সাথে একটি ওয়ার্কিং টাচ প্যানেল সংযুক্ত থাকা উচিত! এটি একটি ছোট প্রকল্প ছিল, কিন্তু এটি একটি বৃহত্তর প্রকল্পের অংশ। আমি 271828 এর প্লেট এবং বলের মতো কিছু করার জন্য কাজ করছি, এবং এটি ঘটার আগে আমার অনেক পথ যেতে হবে। আমি আপনাকে পুরো প্রক্রিয়ার সাথে নিয়ে যাওয়ার চেষ্টা করতে যাচ্ছি, এবং প্রতিটি অংশ তার নিজস্ব ছোট প্রকল্প হওয়া উচিত।

এটি আমার জন্য একটি শেখার প্রক্রিয়া, তাই নির্দ্বিধায় নীচের মন্তব্যগুলিতে আপনার চিন্তাভাবনা এবং পরামর্শগুলি ছেড়ে দিন।

ধন্যবাদ, এবং পরের বার দেখা হবে!

প্রস্তাবিত: