সুচিপত্র:

Arduino ক্যালকুলেটর: 6 ধাপ
Arduino ক্যালকুলেটর: 6 ধাপ

ভিডিও: Arduino ক্যালকুলেটর: 6 ধাপ

ভিডিও: Arduino ক্যালকুলেটর: 6 ধাপ
ভিডিও: keypad and LCD interfacing with arduino in bangla 2024, নভেম্বর
Anonim
Arduino ক্যালকুলেটর
Arduino ক্যালকুলেটর

প্রোগ্রামিং সর্বদা মজাদার এবং যদি আপনি কেবল এমবেডেড প্রোগ্রামিং দিয়ে শুরু করেন তবে আরডুইনো একটি দুর্দান্ত প্ল্যাটফর্ম। এই টিউটোরিয়ালে আমরা Arduino দিয়ে আমাদের নিজস্ব ক্যালকুলেটর তৈরি করব। মানগুলি একটি কীপ্যাডের (4 × 4 কীপ্যাড) মাধ্যমে পাঠানো যেতে পারে এবং ফলাফলটি একটি LCD স্ক্রিনে (16 × 2 ডট-ম্যাট্রিক্স) দেখা যাবে। এই ক্যালকুলেটর যোগ করে, বিয়োগ করে, গুণ করে এবং পুরো সংখ্যা দিয়ে ভাগ করার মতো সহজ ক্রিয়াকলাপ সম্পাদন করতে পারে। কিন্তু একবার আপনি ধারণাটি বুঝতে পারলে আপনি Arduino এর অন্তর্নির্মিত ফাংশনগুলির সাথে এমনকি বৈজ্ঞানিক ফাংশনগুলি বাস্তবায়ন করতে পারেন। উপলব্ধ লাইব্রেরি। আপনি একটি বিশেষ কাজ সম্পন্ন করার জন্য আপনার Arduino প্রোগ্রাম কিভাবে বুঝতে হবে।

ধাপ 1: প্রয়োজনীয় জিনিস

Arduino Uno (যেকোনো সংস্করণ কাজ করবে) 16 × 2 LCD Display4 × 4 Keypad9V BatteryBreadboard এবং Connecting wires

ধাপ 2: সার্কিট ডায়াগ্রাম

বর্তনী চিত্র
বর্তনী চিত্র

ধাপ 3: আরডুইনো ক্যালকুলেটর প্রোগ্রাম

এই প্রকল্পের জন্য সম্পূর্ণ Arduino প্রোগ্রাম এই প্রকল্পের শেষে দেওয়া হয়। কোডটি ছোট অর্থপূর্ণ অংশে বিভক্ত এবং নীচে ব্যাখ্যা করা হয়েছে যেমন আগে বলা হয়েছিল আমরা লাইব্রেরি ব্যবহার করে আরডুইনো দিয়ে একটি LCD এবং কীপ্যাড ইন্টারফেস করতে যাচ্ছি। সুতরাং আসুন সেগুলি প্রথমে আমাদের Arduino IDE তে যুক্ত করি। এলসিডির জন্য লাইব্রেরি ইতিমধ্যেই ডিফল্টরূপে আপনার আরডুইনোতে অন্তর্ভুক্ত করা হয়েছে তাই আমাদের এটি নিয়ে চিন্তা করার দরকার নেই। কীপ্যাড লাইব্রেরির জন্য গিথুব থেকে ডাউনলোড করতে লিঙ্কে ক্লিক করুন। আপনি একটি জিপ ফাইল পাবেন, তারপর স্কেচ দ্বারা Arduino এ এই lib যোগ করুন -> লাইব্রেরি অন্তর্ভুক্ত করুন ->. ZIP ফাইল যোগ করুন এবং এই ডাউনলোড করা ফাইলে অবস্থান নির্দেশ করুন। একবার সম্পন্ন হয়ে গেলে আমরা প্রোগ্রামিং এর জন্য প্রস্তুত। যদিও আমরা একটি কীপ্যাড ব্যবহার করার জন্য একটি লাইব্রেরি ব্যবহার করেছি তবুও আমাদের Arduino এর কীপ্যাড সম্পর্কে কিছু বিবরণ (নিচে দেখানো হয়েছে) উল্লেখ করতে হবে। পরিবর্তনশীল ROWS এবং COLS আমাদের কীপ্যাডে কতটি সারি এবং কলাম আছে তা বলবে এবং কী -ম্যাপ কী -বোর্ডে কী কী আছে সেই ক্রমটি দেখায়। আমি এই প্রজেক্টে যে কীপ্যাড ব্যবহার করছি তা নীচের কী ম্যাপেও একই রকম দেখায়। নীচে আমরা উল্লেখ করেছি যে কীপ্যাডটি ভেরিয়েবল অ্যারে rowPins এবং colPins.const বাইট ROWS = 4 ব্যবহার করে সংযুক্ত করা হয়েছে। // চার সারি কনস্ট বাইট COLS = 4; // তিনটি কলাম // Keymapchar কী [ROWS] [COLS] = {{1 ',' 2 ',' 3 ',' A '}, {' 4 ',' 5 ',' 6 ',' সংজ্ঞায়িত করুন B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; বাইট rowPins [ROWS] = {0, 1, 2, 3}; // এই Arduino পিনের সাথে ROW0, ROW1, ROW2 এবং ROW3 কে সংযুক্ত করুন। // কিপ্যাড COL0, COL1 এবং COL2 কে এই Arduino পিনের সাথে সংযুক্ত করুন। একবার আমরা উল্লেখ করেছি যে আমরা কী ধরনের কীপ্যাড ব্যবহার করছি এবং এটি কিভাবে সংযুক্ত, আমরা নীচের লাইনটি ব্যবহার করে সেই বিবরণ ব্যবহার করে কীপ্যাড তৈরি করতে পারি kypad kpd = কীপ্যাড), rowPins, colPins, ROWS, COLS); // কীপ্যাড তৈরি করুন একইভাবে আমাদেরকে বলতে হবে যে Arduino LCD এর কোন পিনের সাথে সংযুক্ত। আমাদের সার্কিট ডায়াগ্রাম অনুসারে সংজ্ঞা নীচের মত হবে int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // পিন যার সাথে এলসিডি সংযুক্ত আছে লিকুইডক্রিস্টাল এলসিডি (rs, en, d4, d5, d6, d7); // LCDI তৈরি করুন সেটআপ ফাংশনের ভিতরে, আমরা শুধু প্রজেক্টের নাম প্রদর্শন করি এবং তারপর লুপের দিকে এগিয়ে যাই যেখানে মূল প্রজেক্টটি থাকে। মূলত, কিপ্যাডে কিছু টাইপ করা হচ্ছে কিনা তা আমাদের পরীক্ষা করতে হবে, যদি টাইপ করা হয় তাহলে আমাদের চিনতে হবে কি টাইপ করা হচ্ছে এবং তারপর এটি একটি পরিবর্তনশীল রূপান্তর যখন "=" টিপুন আমরা ফলাফল গণনা করতে হবে এবং তারপর অবশেষে এটি LCD প্রদর্শন। নিচের key = kpd.getKey () দেখানো লুপ ফাংশনের ভিতরে ঠিক এই কাজটিই করা হয়; // একটি ক্যারিফ (কী! = NO_KEY) ডিটেক্টবটন (); প্রতিটি ফাংশনের ভিতরে কী ঘটে তা মন্তব্য লাইন ব্যবহার করে ব্যাখ্যা করা হয়, নীচের সম্পূর্ণ কোডটি দিয়ে যান, এটি আসলে কীভাবে কাজ করে তা বোঝার জন্য এটির সাথে বেজে উঠুন। যদি কোন নির্দিষ্ট লাইনে আপনার কোন সন্দেহ থাকে, তাহলে নির্দ্বিধায় মন্তব্য বিভাগ বা ফোরাম ব্যবহার করুন।

ধাপ 4:

ধাপ 5: Arduino ক্যালকুলেটরের কাজ

Arduino ক্যালকুলেটরের কাজ
Arduino ক্যালকুলেটরের কাজ

সার্কিট ডায়াগ্রাম অনুযায়ী সংযোগ তৈরি করুন এবং নিচের কোডটি আপলোড করুন। যদি এটি ত্রুটি দেখায় তবে নিশ্চিত করুন যে আপনি উপরের নির্দেশ অনুসারে লাইব্রেরি যুক্ত করেছেন। আপনার হার্ডওয়্যারে সমস্যা আছে কিনা তা পরীক্ষা করার জন্য আপনি সিমুলেশনটিও চেষ্টা করতে পারেন। যদি সবকিছু যেমনটি অনুমিত হয় তেমনভাবে সম্পন্ন করা হয়, তাহলে আপনার হার্ডওয়্যারটি LCD এর সাথে এইরকম কিছু দেখাবে আরডিনো ক্যালকুলেটরটি 4x4 কীপ্যাড ব্যবহার করে দেখায় যেহেতু এখানে ব্যবহৃত কীপ্যাডে সঠিক চিহ্ন নেই তাই আমি ধরে নিয়েছি বর্ণমালাগুলি অপারেটর হিসাবে নীচে তালিকাভুক্ত কীপ্যাডে চরিত্র "A" যোগ (+) "B" বিয়োগ (-) "C" গুণ (*) "D" বিভাগ (/) "*" পরিষ্কার (C) "#" সমান (=) প্রতিটি বোতাম আসলে কি প্রতিনিধিত্ব করে তা লিখতে একটি মার্কার ব্যবহার করুন এটি সম্পন্ন হলে, আপনি সরাসরি ক্যালকুলেটর ব্যবহার শুরু করতে পারেন। নম্বর টাইপ করুন এবং দ্বিতীয় লাইনে প্রদর্শিত হবে অপারেন্ড টিপুন এবং আপনার দ্বিতীয় নম্বর টাইপ করুন অবশেষে আপনার ফলাফল পেতে "#" কী টিপুন। আপনি এই টাচস্ক্রিন ভিত্তিক আরডুইনো ক্যালকুলেটর তৈরির চেষ্টা করতে পারেন।

ধাপ 6: কোড

/ * * আরডুইনো কীপ্যাড ক্যালকুলেটর প্রোগ্রাম */#অন্তর্ভুক্ত // এলসিডির জন্য হেডার ফাইল https://www.arduino.cc/en/Reference/LiquidCrystal#include // হেডার ফাইল থেকে কীপ্যাডের জন্য https://github.com/ ক্রিস-A/Keypadconst বাইট ROWS = 4; // চার সারি কনস্ট বাইট COLS = 4; // তিনটি কলাম // Keymapchar কী [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', 'সংজ্ঞায়িত করুন C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; বাইট rowPins [ROWS] = {0, 1, 2, 3}; // এই Arduino পিনের সাথে ROW0, ROW1, ROW2 এবং ROW3 কে সংযুক্ত করুন। // কিপ্যাড COL0, COL1 এবং COL2 কে এই Arduino পিনের সাথে সংযুক্ত করুন। কীপ্যাড kpd = কীপ্যাড (makeKeymap (কী), rowPins, colPins, ROWS, COLS); // Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13 তৈরি করুন; // পিন যার সাথে এলসিডি সংযুক্ত আছে লিকুইডক্রিস্টাল এলসিডি (rs, en, d4, d5, d6, d7); দীর্ঘ সংখ্যা 1, সংখ্যা 2, সংখ্যা; চর কী, কর্ম; বুলিয়ান ফলাফল = মিথ্যা; অকার্যকর সেটআপ () {lcd.begin (16, 2); // আমরা 16*2 LCD ডিসপ্লে lcd.print ("DIY ক্যালকুলেটর") ব্যবহার করছি; // একটি ভূমিকা বার্তা প্রদর্শন lcd.setCursor (0, 1); // কার্সারটি কলাম 0, লাইন 1 lcd.print ("-CircuitDigest") এ সেট করুন; // একটি ভূমিকা বার্তা বিলম্ব প্রদর্শন (2000); // তথ্য দেখানোর জন্য ডিসপ্লের জন্য অপেক্ষা করুন lcd.clear (); // তারপর এটি পরিষ্কার করুন} অকার্যকর লুপ () {কী = kpd.getKey (); // একটি ক্যারিফ (কী! = NO_KEY) ডিটেক্টবটন (); } অকার্যকর DetectButtons () {lcd.clear (); // তারপর এটি পরিষ্কার করুন যদি (কী == '*') // যদি বাতিল বোতাম টিপানো হয় {Serial.println ("বাটন বাতিল"); সংখ্যা = সংখ্যা 1 = সংখ্যা 2 = 0; ফলাফল = মিথ্যা;} যদি (কী == '1') // যদি বোতাম 1 টি চাপানো হয় {Serial.println ("বাটন 1"); যদি (সংখ্যা == 0) সংখ্যা = 1; অন্য সংখ্যা = (সংখ্যা*10) + 1; // দুবার চাপানো হয়} যদি (কী == '4') // যদি বোতাম 4 টি চাপানো হয় {Serial.println ("Button 4"); যদি (সংখ্যা == 0) সংখ্যা = 4; অন্য সংখ্যা = (সংখ্যা*10) + 4; // দুবার চাপানো হয়} যদি (কী == '7') // যদি বোতাম 7 টি টিপানো হয় {Serial.println ("বাটন 7"); যদি (সংখ্যা == 0) সংখ্যা = 7; অন্য সংখ্যা = (সংখ্যা*10) + 7; // দুবার চাপে} যদি (কী == '0') {Serial.println ("Button 0"); // বোতাম 0 চাপানো হয় যদি (সংখ্যা == 0) সংখ্যা = 0; অন্য সংখ্যা = (সংখ্যা*10) + 0; // দুবার চাপে} যদি (কী == '2') // বোতাম 2 টি চাপানো হয় {Serial.println ("Button 2"); যদি (সংখ্যা == 0) সংখ্যা = 2; অন্য সংখ্যা = (সংখ্যা*10) + 2; // দুবার চাপে} যদি (কী == '5') {Serial.println ("Button 5"); যদি (সংখ্যা == 0) সংখ্যা = 5; অন্য সংখ্যা = (সংখ্যা*10) + 5; // দুবার চাপে} যদি (কী == '8') {Serial.println ("বাটন 8"); যদি (সংখ্যা == 0) সংখ্যা = 8; অন্য সংখ্যা = (সংখ্যা*10) + 8; // দুবার চাপে} যদি (কী == '#') {Serial.println ("Button Equal"); সংখ্যা 2 = সংখ্যা; ফলাফল = সত্য; } if (key == '3') {Serial.println ("Button 3"); যদি (সংখ্যা == 0) সংখ্যা = 3; অন্য সংখ্যা = (সংখ্যা*10) + 3; // দুবার চাপে} যদি (কী == '6') {Serial.println ("Button 6"); যদি (সংখ্যা == 0) সংখ্যা = 6; অন্য সংখ্যা = (সংখ্যা*10) + 6; // দুবার চাপে} যদি (কী == '9') {Serial.println ("বাটন 9"); যদি (সংখ্যা == 0) সংখ্যা = 9; অন্য সংখ্যা = (সংখ্যা*10) + 9; // দুবার চাপে} যদি (কী == 'এ' || কী == 'বি' || কী == 'সি' || কী == 'ডি') // কলাম 4 {Num1 = সংখ্যা; সংখ্যা = 0; যদি (কী == 'A') {Serial.println ("সংযোজন"); action = '+';} if (key == 'B') {Serial.println ("বিয়োগ"); ক্রিয়া = '-'; } if (key == 'C') {Serial.println ("Multiplication"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); কর্ম = '/';} বিলম্ব (100); }} অকার্যকর CalculateResult () {if (action == '+') Number = Num1+Num2; যদি (ক্রিয়া == '-') সংখ্যা = সংখ্যা 1-সংখ্যা 2; যদি (ক্রিয়া == '*') সংখ্যা = সংখ্যা 1*সংখ্যা 2; যদি (ক্রিয়া == '/') সংখ্যা = সংখ্যা 1/সংখ্যা 2; } অকার্যকর DisplayResult () {lcd.setCursor (0, 0); // কার্সারটি কলাম 0, লাইন 1 lcd.print (Num1) এ সেট করুন; lcd.print (ক্রিয়া); lcd.print (Num2); যদি (ফলাফল == সত্য) {lcd.print ("="); lcd.print (সংখ্যা);} // ফলাফল প্রদর্শন করুন lcd.setCursor (0, 1); // কার্সারটি কলাম 0, লাইন 1 lcd.print (সংখ্যা) এ সেট করুন; // ফলাফল প্রদর্শন করুন}

প্রস্তাবিত: