আমরা এমনভাবে সার্কিটি তৈরি করবো যাতে করে 10k ohm রেজিস্টরটি সংযুক্ত হবে GND এবং D2 এর মধ্যে। আর সুইচটাকে লাগাতে হবে D2 এবং VCC এর মধ্যে। এতে করে সুইচটি Open থাকলে D2 লজিক LOW হবে এবং সুইচ Close থাকলে D2 লজিক HIGH হবে।
const int buttonPin = 2; const int ledPin = 13; int ledState = HIGH; int buttonState; int lastButtonState = LOW; long lastDebounceTime = 0; long debounceDelay = 50; void setup() { pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, ledState); } void loop() { int reading = digitalRead(buttonPin); if (reading != lastButtonState) { lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { if (reading != buttonState) { buttonState = reading; if (buttonState == HIGH) { ledState = !ledState; } } } digitalWrite(ledPin, ledState); lastButtonState = reading; }
এর মাধ্যমে কনস্ট্যান্ট এবং প্রয়োজনীয় ভেরিয়েবল সমূহকে ডিক্লেয়ার করা হয়েছে।
pinMode(buttonPin, INPUT); এর buttonPin এর ভ্যালু 2; তাই D2 পিনকে এই ইন্সট্রাকশন ব্যবহার করে ইনপুট হিসেবে নির্দেশ করা হয়েছে।
pinMode(ledPin, OUTPUT); এর ledPin এর ভ্যালু 13 ; তাই D13 পিনকে এই ইন্সট্রাকশন ব্যবহার করে আউটপুট হিসেবে নির্দেশ করা হয়েছে।
int reading = digitalRead(buttonPin); এর মাধ্যমে D2 এর সাথে যে সুইচ লাগানো আছে তার ডিজিটাল অবস্থা রিড করে reading ভেরিয়েবলের ভ্যালু হিসেবে জমা রাখা হবে। সুইচ OPEN থাকলে reading এর ভ্যালু হবে 0 আর CLOSE থাকলে হবে 1।
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
lastButtonState এর প্রাথমিক ভ্যালু ছিলো LOW, তাই প্রগ্রামটি যখন প্রথম রান হবে তখন ঠিক যেমূহর্তে বাটন সুইচটি Close করা হবে তখন
reading =1 হবে এবং lastButtonState =LOW=০ তাই উপরের if এর কন্ডিশনাল reading != lastButtonState সত্য হবে এবং if এর কন্ডিশনাল স্টেটমেন্টস কার্যকর হবে।
lastDebounceTime = millis(); এখানে millis() ফাংশনের কাজ হলো যখন প্রোগ্রামটি রান হওয়া শুরু হবে তখন থেকে একটা কাউন্টার চালু হবে এবং মিলিসেসেন্ডে ভ্যালু দেবে। lastDebounceTime = millis(); এর মাধ্যমে কাউন্টারের মিলিসেসেন্ড ভ্যালুকে lastDebounceTime ভেরিয়েবলে জমা রাখবে।
debounceDelay এর প্রাথমিক ভ্যালু ছিলো 50 ;
if ((millis() - lastDebounceTime) > debounceDelay) এর ক্ষেত্রে আমরা প্রথমে বিবেচনা করি যে প্রোগ্রামটি রান হওয়ার ঠিক ৫০০ মিলি সেকেন্ড পর সুইচটি প্রথম Close করা হয়েছিলো, তাহলে lastDebounceTime=500। এক্ষেত্রে millis() এর ভ্যালু যখন 551 হবে তখন if ((millis() - lastDebounceTime) > debounceDelay) এর কন্ডিশন সত্য হবে এবং if এর কন্ডিশনাল স্টেটমেন্টস কার্যকর হবে।
কারণ (551-500)>50।
(reading != buttonState) এখন যদি reading এবং buttonState এর ভ্যালু যদি একই না হয় তাহলে if এর কন্ডিশনাল reading != buttonState সত্য হবে এবং if এর কন্ডিশনাল স্টেটমেন্ট কার্যকর হবে অর্থাৎ buttonState = reading; হবে।
if (buttonState == HIGH) {
ledState = !ledState;
}
যদি buttonState == HIGH হয় তাহলে ledState = !ledState; হবে বা টগোল করবে, অর্থাৎ আগে HIGH থাকলে LOW হবে বা উল্টা ঘটনা ঘটবে।।
digitalWrite(ledPin, ledState); এর মাধ্যমে ১৩ নং পিন D13 তে ledState এর ভ্যালু আউটপুট দেয়া হবে।
lastButtonState = reading; reading ভেরিয়েবলের ভ্যালু lastButtonState এ জমা হবে।
আশা করছি সবাই সফলভাবে কাজটি করতে পারবেন।
এই কোর্সটি আপনি সফলভাবে এবং সক্রিয় অংশগ্রহণের মাধ্যমে সমাপ্ত করে এই কোর্সের টেকটিউনস ভেরিফায়েড সার্টিফিকেট গ্রহণ করতে পারবেন। এজন্য অংশগ্রহণকারীদের জন্য প্রতি পর্বে যে যে সকল প্রশ্ন, প্রজেক্ট এবং করণীয় থাকবে তা সঠিকভাবে সম্পাদন করুন এবং কোর্স শেষে আপনাদেরকে টেকটিউনসসের নির্দেশনা অনুযায়ী এক বা একাধিক সিমুলেশন প্রজেক্ট সাবমিট করতে হবে। যেগুলো টেকটিউনসসস কতৃপক্ষ বিশ্লেষণ করে দেখবেন, এবং এর উপর ভিত্তি করে সার্টিফিকেট প্রদান করা হবে।
আশা করছি এরই মধ্যে অনেকেই Arduino নিয়ে কাজ শুরু করেছেন। আবার অনেকেই Arduino বোর্ড সংগ্রহ করা সহ, বেশ কিছু সমস্যার কারণে কাজ শুরু করতে পারেন নি। আমি প্রায়ই অনেকের কাছ থেকে ম্যাসেজ পাই, চেষ্টা করি সবাইকে আমার সাধ্যে অনুযায়ী সাপোর্ট দেয়ার। Arduino শেখার সাথে সম্পর্কযুক্ত যে কোন বিষয় যেমন Arduino বোর্ড এবং অন্যান্য যন্ত্রাংশ সংগ্রহ করা, কোর্সের কোন পার্ট সম্পর্কে বা প্রোগ্রাম সম্পর্কে কোন বিষয় আমাকে জানানোর জন্য টিউমেন্ট করার পাশাপাশি আমাকে [email protected] এ মেইল করতে পারেন বা https://www.facebook.com/pages/Ashim-Kumar/1530502553863914 ফেসবুকে ম্যাসেজ দিতে পারেন। সবার জন্য শুভকামনা রইলো।
আমি অসীম কুমার পাল। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 15 বছর 7 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 147 টি টিউন ও 469 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 17 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
আমি অসীম কুমার পাল। ইলেকট্রনিক্স এবং ওয়েব ডিজাইনকে অন্তরে ধারণ করে পথ চলতেছি। স্বপ্ন দেখি এই পৃথিবীর বুকে একটা সুখের স্বর্গ রচনা করার। নিজেকে একজন অতি সাধারণ কিন্তু সুখী মানুষ ভাবতে পছন্দ করি।
thanks,post ta onek sundorrr