সুচিপত্র:

Arduino এলার্ম ঘড়ি প্রকল্প: 14 ধাপ
Arduino এলার্ম ঘড়ি প্রকল্প: 14 ধাপ

ভিডিও: Arduino এলার্ম ঘড়ি প্রকল্প: 14 ধাপ

ভিডিও: Arduino এলার্ম ঘড়ি প্রকল্প: 14 ধাপ
ভিডিও: Four Awesome DIY Projects for Water Pump in Bangla 2024, জুলাই
Anonim
Arduino এলার্ম ঘড়ি প্রকল্প
Arduino এলার্ম ঘড়ি প্রকল্প

এই প্রকল্পে, আমরা একটি এলসিডি স্ক্রিন নিয়ন্ত্রণ করতে Arduino Uno ব্যবহার করব যা বর্তমান সময় এবং সময় দেখানোর জন্য একটি অ্যালার্ম সেট করা আছে। আমরা প্রতিবার সেট করতে বোতাম ব্যবহার করব।

উপকরণ:

  • Arduino Uno -
  • ব্রেডবোর্ড -
  • জাম্পার ওয়্যারস (x13+) -
  • 10 kohm প্রতিরোধক (x4) -
  • এলসিডি স্ক্রিন -
  • 7 বোতাম-https://vilros.com/collections/raspberry-pi-acces…
  • পাইজো স্পিকার -

ধাপ 1: হুকআপ নির্দেশাবলী

হুকআপ নির্দেশাবলী
হুকআপ নির্দেশাবলী

1. Arduino এর 5V পিন থেকে একটি জাম্পার ওয়্যারকে ব্রেডবোর্ডের + রেলগুলির মধ্যে একটিতে সংযুক্ত করুন।

ধাপ ২:

ছবি
ছবি

2. Arduino- এ GND পিন থেকে একটি জাম্পার তারের সাথে সংযোগ করুন - রেলবোর্ডের উপর আপনার বেছে নেওয়া + রেলের পাশে রেল।

ধাপ 3:

ছবি
ছবি

3. LCD স্ক্রিনটিকে পাওয়ার, গ্রাউন্ড এবং TX পিন (পিন 1) এর সাথে সংযুক্ত করুন।

ধাপ 4:

ছবি
ছবি

4. ব্রেডবোর্ডের ফাঁক জুড়ে পা দিয়ে 7 টি বোতাম রাখুন।

ধাপ 5:

ছবি
ছবি

5. রেল থেকে 10 kohm প্রতিরোধক রাখুন - GND পিন দিয়ে বোতামগুলির নিচের বাম পিনের সাথে সংযুক্ত করুন।

ধাপ 6:

ছবি
ছবি

6. আপনার রুটিবোর্ডে বোতামগুলির নীচের ডান পিন এবং 5V রেলের মধ্যে জাম্পার তারগুলি রাখুন।

ধাপ 7:

ছবি
ছবি

7. পিন,, তারপর -1-১3, এবং বাটনে পিন যার মধ্যে রোধক সংযুক্ত আছে তার মধ্যে জাম্পার তারগুলি রাখুন।

ধাপ 8:

ছবি
ছবি

8. এরপরে, আপনার পাইজো স্পিকারটি রুটিবোর্ডে রাখুন এবং 7 টি পাওয়ার পিনের সাথে পিন সংযুক্ত করুন, তারপরে মাটিতে 100 ওম প্রতিরোধক।

ধাপ 9: প্রোগ্রামিং নির্দেশাবলী

1. সংক্ষিপ্ত বিবরণ: এই প্রকল্পটি ব্যবহারকারীকে ডিসপ্লেতে বর্তমান সময় এবং অ্যালার্ম সেট করার সময় বর্তমান বিদ্যুতের বর্তমান সময় সেট করতে বলবে। উপরে সংযুক্ত বোতামগুলি প্রতিটি সময় সেট করতে ব্যবহার করা হবে। বাম থেকে ডানে, তারা বর্তমান ঘন্টা সেট, বর্তমান মিনিট সেট, বর্তমান AM বা PM সেট, অ্যালার্ম ঘন্টা সেট, অ্যালার্ম মিনিট সেট, অ্যালার্ম সেট AM বা PM। অ্যালার্ম বাজানোর সময় শেষ বোতামটি ব্যবহার করা হয়।

ধাপ 10:

2. আমাদের প্রথম যে কাজটি করতে হবে তা হল আমাদের ভেরিয়েবলকে আমরা ব্যবহার করতে যাচ্ছি।

// ভেরিয়েবল ব্যবহার শুরু করতে ব্যবহার করুন ঘন্টা = 0; // বর্তমান সময় int মিনিট = 0; //

বর্তমান সময়ের জন্য মিনিট int second = 0; // বর্তমান সময়ের জন্য দ্বিতীয়

int hour_a = 0; এলার্ম সময় জন্য int // ঘন্টা

মিনিট_এ = 0; // অ্যালার্ম সময়ের জন্য মিনিট

বুল am_pm = মিথ্যা; // AM/PM টগল পতাকা। মিথ্যা হল AM, সত্য হল PM

বুল am_pm_a = মিথ্যা; // AM/PM অ্যালার্মের জন্য পতাকা টগল করুন। মিথ্যা হল AM, সত্য হল PM

int set_hr = 13; // ঘন্টা সেট করতে পিন 13 ব্যবহার করুন

int set_min = 12; // মিনিট int সেট করতে পিন 12 ব্যবহার করুন

set_am_pm = 11; // am/pm সেট করতে পিন 11 ব্যবহার করুন

int set_hr_a = 10; // অ্যালার্মের জন্য ঘন্টা সেট করতে পিন 10 ব্যবহার করুন int_min_a = 9; // অ্যালার্মের জন্য মিনিট সেট করতে পিন 9 ব্যবহার করুন int_am_pm_a = 8; // অ্যালার্মের জন্য am/pm সেট করতে পিন 8 ব্যবহার করুন

int স্পিকার = 7; // স্পিকারিন্ট শান্তের জন্য ব্যবহার করার জন্য পিন = 6; // স্পিকার বন্ধ করতে পিন করুন

বুল এলার্ম = মিথ্যা; // উদ্বেগজনক রাখতে টগল করতে পতাকা

বুল শান্ত = মিথ্যা; // শান্ত দেখানো পতাকা চাপানো হয়নি

int cur_time = 0; // বর্তমান সময়ের জন্য পরিবর্তনশীল

int etime = 0; // অতিবাহিত সময়ের জন্য পরিবর্তনশীল

ধাপ 11:

3. এরপরে, আমাদের LCD স্ক্রীন সেট আপ করতে হবে এবং ব্যবহারকারীকে বর্তমান সময় সেট করতে বলা হবে। যেহেতু এটি শুধুমাত্র একবার করা প্রয়োজন, তাই আমরা সেটআপ রুটিনে এটি করব।

অকার্যকর সেটআপ() {

// এলসিডি স্ক্রিন সেট আপ করুন

Serial.begin (9600); // 9600 বডিতে সিরিয়াল শুরু করুন

Serial.write (17); // পিছনের আলো চালু করুন

Serial.write (24); // কার্সার এবং কোন ঝলক না দিয়ে ডিসপ্লে চালু করুন

Serial.write (12); // পর্দা সাফ করুন

Serial.write (128); // উপরের বাম কোণে কার্সার সরান // সেট পিনমোডস পিনমোড (সেট_এইচআর, ইনপুট); পিনমোড (সেট_মিন, ইনপুট);

pinMode (set_am_pm, INPUT);

pinMode (set_hr_a, INPUT);

pinMode (set_min_a, INPUT);

pinMode (set_am_pm_a, INPUT);

পিনমোড (স্পিকার, আউটপুট);

পিনমোড (শান্ত, ইনপুট);

// প্রাথমিক ক্ষমতায়, ব্যবহারকারীর বর্তমান সময় সেট করুন। সিরিয়াল.প্রিন্ট ("বর্তমান সময় সেট করুন"); বিলম্ব (2000);

Serial.write (12);

printTimes ();

cur_time = মিলিস (); // বর্তমান সময় সঞ্চয় করুন}

ধাপ 12:

4. তারপর, লুপ রুটিনে, আমরা সময়ের হিসাব রাখি এবং বাটন স্ট্যাটাস পড়ি যাতে ব্যবহারকারী কোন সময় সেট করছে কিনা।

অকার্যকর লুপ () {

// সময় রাখা

সময় রাখা();

// অ্যালার্ম করার সময় হয়েছে কিনা তা পরীক্ষা করে দেখুন!

যদি ((ঘন্টা == ঘন্টা_এ && মিনিট == মিনিট_এ &&! শান্ত) || এলার্ম) {সুর (স্পিকার, 2000, 500); // 500 ms এর জন্য স্পিকারে 2000 Hz সাউন্ড আউটপুট করুন

বিলম্ব (500); // বিলম্ব 500 ms যদি (! অ্যালার্ম) {// যদি অ্যালার্ম বন্ধ থাকে, তাহলে এটি চালু করুন

}

}

// যদি ব্যবহারকারী শান্ত বোতাম টিপে অ্যালার্মকে নীরব করে, তাহলে বিপজ্জনক থামান যদি

এলার্ম = মিথ্যা;

শান্ত = সত্য; }

// এলার্ম রিসেট করুন যদি (! এলার্ম && শান্ত এবং & মিনিট!

}

// সেট পিনগুলি উচ্চ হয় কিনা তা পরীক্ষা করে দেখুন, এবং যদি তাই হয়, তাহলে সংশ্লিষ্ট মান বৃদ্ধি করুন (ডিজিটাল রিড (সেট_এইচআর) এবং & ঘন্টা <12) {

ঘন্টা ++;

printTimes ();

debounce ();

}

অন্যথায় যদি (digitalRead (set_hr) && hour == 12) {hour = 1;

printTimes ();

debounce ();

}

অন্য {}

যদি (digitalRead (set_min) && মিনিট <59) {

মিনিট ++; printTimes ();

debounce ();

}

অন্যথায় যদি (digitalRead (set_min) && minute == 59) {minute = 0;

printTimes ();

debounce ();

}

অন্যথায় {} if (digitalRead (set_am_pm) && am_pm) {

am_pm = মিথ্যা;

printTimes ();

debounce ();

}

অন্যথায় যদি (digitalRead (set_am_pm) &&! am_pm) {am_pm = true; printTimes ();

debounce ();

}

অন্যথায় {} if (digitalRead (set_hr_a) && hour_a <12) {

ঘন্টা_এ ++;

printTimes ();

debounce ();

}

অন্যথায় যদি (digitalRead (set_hr_a) && hour_a == 12) {hour_a = 1;

printTimes ();

debounce ();

}

অন্যথায় {} if (digitalRead (set_min_a) && minute_a <59) {

মিনিট_এ ++;

printTimes ();

debounce ();

}

অন্যথায় যদি (digitalRead (set_min) && minute_a == 59) {minute_a = 0;

printTimes ();

debounce ();

}

অন্যথায় {} if (digitalRead (set_am_pm_a) && am_pm_a) {

am_pm_a = মিথ্যা;

printTimes ();

debounce ();

}

অন্যথায় যদি (digitalRead (set_am_pm_a) &&! am_pm_a) {am_pm_a = true;

printTimes ();

debounce ();

}

অন্য {}

}

ধাপ 13:

5. এখানে, আপনি আমার তৈরি কয়েকটি সাবরুটিন লক্ষ্য করবেন - debounce () এবং printTimes ()। Debounce () ব্যবহার করা হয় তা নিশ্চিত করার জন্য আমরা শুধুমাত্র একবার বোতাম পড়ি। যেহেতু Arduino প্রতি সেকেন্ডে হাজার বার স্ক্যান করে, তাই মনে হতে পারে যে বোতামটি কয়েকবার চাপানো হয়েছিল যখন আপনি শুধুমাত্র একবার এটি পড়ার ইচ্ছা করেছিলেন। ডিবাউন্স () বোতামটি রিলিজ না হওয়া পর্যন্ত প্রোগ্রামটি ফ্রিজ করবে। printTimes () এলসিডি স্ক্রিন আপডেট করে, কিন্তু যেহেতু এটি বেশ কয়েকটি কমান্ড ছিল, আমি সেগুলি একবার টাইপ করেছি এবং তারপরে যে কোনও সময় মান পরিবর্তন হলে সাবরুটিনকে কল করতে পারি।

// যখন কোন বোতাম চাপানো হচ্ছে, এই ফাংশনে থাকুন তারপর 250 ms বিলম্বিত করুন।

অকার্যকর প্রত্যাহার () {

while (digitalRead (set_hr) || digitalRead (set_min) ||

digitalRead (set_am_pm) || digitalRead (set_hr_a) ||

digitalRead (set_min_a) || digitalRead (set_am_pm_a)) {} বিলম্ব (250);

}

// কোন পরিবর্তন হলে আপডেট করা সময়গুলি মুদ্রণ করুন

অকার্যকর printTimes () {

Serial.write (12);

সিরিয়াল.প্রিন্ট ("বর্তমান সময়:");

Serial.write (148);

যদি (ঘন্টা <10) {

সিরিয়াল.প্রিন্ট ("0");

}

সিরিয়াল.প্রিন্ট (ঘন্টা);

সিরিয়াল.প্রিন্ট (":");

যদি (মিনিট <10) {

সিরিয়াল.প্রিন্ট ("0");

}

Serial.print (মিনিট); Serial.print (":");

যদি (দ্বিতীয় <10) {

সিরিয়াল.প্রিন্ট ("0");

}

সিরিয়াল.প্রিন্ট (দ্বিতীয়);

যদি (am_pm) {

সিরিয়াল.প্রিন্ট ("PM");

}

অন্য {

Serial.print ("AM");

}

Serial.write (168);

সিরিয়াল.প্রিন্ট ("এর জন্য অ্যালার্ম সেট:");

Serial.write (188);

যদি (ঘন্টা_এ <10) {

সিরিয়াল.প্রিন্ট ("0");

}

সিরিয়াল.প্রিন্ট (ঘন্টা_এ);

সিরিয়াল.প্রিন্ট (":");

যদি (মিনিট_এ <10) {

সিরিয়াল.প্রিন্ট ("0");

}

সিরিয়াল.প্রিন্ট (মিনিট_এ);

যদি (am_pm_a) {

সিরিয়াল.প্রিন্ট ("PM");

}

অন্য {

Serial.print ("AM");

}

}

// বর্ধিত সময় পরামিতি অকার্যকর

সময় রাখা(){

etime = মিলিস () - cur_time;

যদি (etime> = 1000 && দ্বিতীয় <59) {

দ্বিতীয় ++;

cur_time = মিলিস ();

printTimes ();

}

অন্যথায় যদি (etime> = 1000 && second == 59 && minute <59) {second = 0;

মিনিট ++;

cur_time = মিলিস ();

printTimes ();

}

অন্যথায় যদি (etime> = 1000 && second == 59 && minute == 59 && hour <12) {

দ্বিতীয় = 0; মিনিট =

0; ঘন্টা ++; cur_time =

মিলিস (); printTimes ();

}

অন্যথায় যদি (etime> = 1000 && second == 59 && minute == 59 && hour == 12) {

দ্বিতীয় = 0; মিনিট =

0; ঘন্টা = 1; am_pm =

!পূর্বাহ্ণ অপরাহ্ণ;

cur_time = মিলিস ();

printTimes ();

}

অন্য {}

}

ধাপ 14:

6. এটাই!

কম্পাইল এবং আপলোড করুন এবং আপনি সব শেষ!

প্রস্তাবিত: