আইডিই কীভাবে জিনিসগুলিকে সংগঠিত করে
প্রথম জিনিস, এইভাবে আইডিই আপনার "স্কেচ" সংগঠিত করে:
- প্রধান
.ino
। ফাইল ফোল্ডার এটি তাই হয়, হিসাবে একই নামের এক foobar.ino
মধ্যে foobar
ফোল্ডারের - প্রধান ফাইল foobar.ino হয়।
.ino
সেই ফোল্ডারে থাকা অন্য যে কোনও ফাইল মূল ফাইলের শেষে (বর্ণানুক্রমিকভাবে মূল ফাইল যেখানেই থাকুক না কেন) বর্ণমালা অনুসারে একত্রে সংযুক্ত করা হয়।
- এই সংমিশ্রিত ফাইলটি একটি ফাইল হয়ে যায়
.cpp
(উদা। foobar.cpp
) - এটি একটি অস্থায়ী সংকলন ফোল্ডারে স্থাপন করা হয়।
- প্রিপ্রসেসর "সহায়কভাবে" ফাংশন প্রোটোটাইপগুলি জেনারেট করে যা এই ফাইলটিতে এটি খুঁজে পাওয়া যায়।
- প্রধান ফাইলটি
#include <libraryname>
নির্দেশের জন্য স্ক্যান করা হয় । এটি আইডিইটিকে প্রতিটি (উল্লিখিত) লাইব্রেরি থেকে সমস্ত প্রাসঙ্গিক ফাইলগুলি অস্থায়ী ফোল্ডারে অনুলিপি করতে এবং সেগুলি সংকলনের জন্য নির্দেশাবলী উত্সাহিত করে।
- যে কোনও
.c
, .cpp
বা .asm
স্কেচ ফোল্ডারে থাকা ফাইলগুলি পৃথক সংকলন ইউনিট হিসাবে বিল্ড প্রক্রিয়াতে যুক্ত করা হয় (এটি সাধারণ ফাইল হিসাবে পৃথক ফাইল হিসাবে সংকলিত হয়)
- যে কোনও
.h
ফাইল অস্থায়ী সংকলন ফোল্ডারেও অনুলিপি করা হয়, যাতে সেগুলি আপনার .c বা .cpp ফাইলগুলি দ্বারা উল্লেখ করা যেতে পারে।
- সংকলকটি বিল্ড প্রসেসের স্ট্যান্ডার্ড ফাইলগুলিতে যুক্ত করে (যেমন
main.cpp
)
- বিল্ড প্রক্রিয়াটি তারপরে উপরের সমস্ত ফাইলকে বস্তু ফাইলগুলিতে সংকলন করে।
- সংকলন পর্বটি সফল হলে তারা এভিআর স্ট্যান্ডার্ড লাইব্রেরিগুলির সাথে একত্রে লিঙ্কযুক্ত রয়েছে (যেমন, আপনাকে দেওয়া
strcpy
ইত্যাদি)
এই সমস্তের একটি পার্শ্ব-প্রতিক্রিয়া হ'ল আপনি মূল স্কেচটি (.ino ফাইলগুলি) সমস্ত উদ্দেশ্য এবং উদ্দেশ্যে সি ++ হিসাবে বিবেচনা করতে পারেন। ফাংশন প্রোটোটাইপ জেনারেশন তবে আপনি যদি সাবধান না হন তবে অস্পষ্ট ত্রুটি বার্তাগুলি নিয়ে যেতে পারে।
প্রাক-প্রসেসরের কৌতুক এড়ানো
এই আইডিসিক্রেন্সিগুলি এড়ানোর সহজ উপায় হ'ল আপনার মূল স্কেচটি ফাঁকা ছেড়ে দেওয়া (এবং অন্য কোনও .ino
ফাইল ব্যবহার না করা)। তারপরে অন্য একটি ট্যাব তৈরি করুন (একটি .cpp
ফাইল) এবং আপনার স্টাফগুলিকে এটি এর মধ্যে :ুকিয়ে দিন:
#include <Arduino.h>
// put your sketch here ...
void setup ()
{
} // end of setup
void loop ()
{
} // end of loop
নোট করুন যে আপনি অন্তর্ভুক্ত করা প্রয়োজন Arduino.h
। আইডিই এটি স্বয়ংক্রিয়ভাবে মূল স্কেচের জন্য করে তবে অন্যান্য সংকলন ইউনিটের জন্য আপনাকে এটি করতে হবে। অন্যথায় এটি স্ট্রিং, হার্ডওয়্যার রেজিস্টার ইত্যাদির মতো জিনিস সম্পর্কে জানতে পারবে না
সেটআপ / মূল দৃষ্টান্ত এড়ানো
আপনাকে সেটআপ / লুপ ধারণাটি নিয়ে চলতে হবে না। উদাহরণস্বরূপ, আপনার .cpp ফাইলটি হতে পারে:
#include <Arduino.h>
int main ()
{
init (); // initialize timers
Serial.begin (115200);
Serial.println ("Hello, world");
Serial.flush (); // let serial printing finish
} // end of main
জোর করে গ্রন্থাগার অন্তর্ভুক্তি
আপনি যদি "খালি স্কেচ" ধারণাটি নিয়ে চালিত হন তবে আপনাকে প্রকল্পের অন্য কোথাও ব্যবহৃত লাইব্রেরি অন্তর্ভুক্ত করতে হবে, উদাহরণস্বরূপ আপনার মূল .ino
ফাইলটিতে:
#include <Wire.h>
#include <SPI.h>
#include <EEPROM.h>
আইডিই কেবল লাইব্রেরি ব্যবহারের জন্য মূল ফাইলটি স্ক্যান করে কারণ এটি। কার্যকরভাবে আপনি মূল ফাইলটিকে একটি "প্রকল্প" ফাইল হিসাবে বিবেচনা করতে পারেন যা কোন বাহ্যিক লাইব্রেরি ব্যবহার করছে তা মনোনীত করে।
নামকরণ সমস্যা
আপনার মূল স্কেচের নাম রাখবেন না "মেইন সিপিপি" - আইডিইতে তার নিজস্ব মেইন সিপিপি অন্তর্ভুক্ত থাকে যাতে আপনি এটি করেন তবে একটি নকল থাকবে।
আপনার মূল .ino ফাইলের মতো একই নামে আপনার .cpp ফাইলটির নাম রাখবেন না। যেহেতু .ino ফাইল কার্যকরভাবে একটি .cpp ফাইল হয়ে যায় এটি আপনাকে একটি নাম সংঘাত দেয় clash
একটি সি ++ - একই, একক .ino ফাইলে স্টাইলের ক্লাস ঘোষণা করা (শুনেছেন, তবে কখনও কাজ করতে দেখেননি - এটি কি সম্ভব?);
হ্যাঁ, এটি ঠিক আছে:
class foo {
public:
};
foo bar;
void setup () { }
void loop () { }
তবে আপনি সম্ভবত সাধারন অনুশীলনগুলি অনুসরণ করতে সবচেয়ে ভাল: আপনার ঘোষণাগুলি .h
ফাইলগুলিতে এবং আপনার সংজ্ঞাগুলি (বাস্তবায়ন )গুলিতে .cpp
(বা .c
) ফাইলগুলিতে রাখুন।
"সম্ভবত" কেন?
আমার উদাহরণ শো হিসাবে আপনি করতে পারেন একটি ফাইল সবকিছু একত্র করা। বড় প্রকল্পগুলির জন্য আরও সুসংহত হওয়া ভাল। অবশেষে আপনি একটি মাঝারি থেকে বড় আকারের প্রকল্পে মঞ্চে পৌঁছে যান যেখানে আপনি "কালো বাক্সগুলিতে" জিনিসগুলি আলাদা করতে চান - অর্থাত, একটি শ্রেণি যা একটি কাজ করে, এটি ভাল করে, পরীক্ষা করা হয় এবং স্বনির্ভর হয় ( যত দূর সম্ভব).
যদি এই শ্রেণিটি তখন আপনার প্রকল্পে অন্য একাধিক ফাইলে ব্যবহৃত হয় তবে এটিই আলাদা .h
এবং .cpp
ফাইলগুলি খেলতে আসে।
.h
ফাইল ঘোষণা বর্গ - যে, এটা জানা এটি কী অন্যান্য ফাইল জন্য যথেষ্ট বিস্তারিত, এটা আছে কি ফাংশন প্রদান করে, এবং তারা কিভাবে বলা হয়।
.cpp
ফাইল সংজ্ঞায়িত (কার্যকরী) বর্গ - যে, এটা আসলে ফাংশন, এবং স্ট্যাটিক বর্গ সদস্যদের প্রদান করে, যে বর্গ করা তার জিনিস করে। যেহেতু আপনি কেবল একবার এটি প্রয়োগ করতে চান, এটি পৃথক ফাইলে।
.h
ফাইল কি অন্যান্য ফাইল অন্তর্ভুক্ত পরার। .cpp
ফাইল বর্গ ফাংশন বাস্তবায়ন আইডিই একবার কম্পাইল করা হয়।
লাইব্রেরি
আপনি যদি এই দৃষ্টান্তটি অনুসরণ করেন তবে আপনি পুরো ক্লাসটি ( .h
এবং .cpp
ফাইলগুলি) খুব সহজেই একটি লাইব্রেরিতে স্থানান্তর করতে প্রস্তুত । তারপরে এটি একাধিক প্রকল্পের মধ্যে ভাগ করা যায়। যে সমস্ত প্রয়োজন বোধ করা হয় একটি ফোল্ডার (যেমন। করা হয় myLibrary
) এবং করা .h
এবং .cpp
তা ফাইল (যেমন। myLibrary.h
এবং myLibrary.cpp
) এবং তারপর আপনার ভিতরে এই ফোল্ডারটি করা libraries
যেখানে আপনার স্কেচ রাখা হয় ফোল্ডারে (স্কেচবুক ফোল্ডারের) এ ফোল্ডার।
আইডিই পুনরায় চালু করুন এবং এটি এখন এই লাইব্রেরি সম্পর্কে জানে। এটি সত্যিই তুচ্ছ সহজ এবং এখন আপনি একাধিক প্রকল্পের মাধ্যমে এই লাইব্রেরিটি ভাগ করতে পারেন। আমি এটা অনেক কিছু।
এখানে আরও কিছু বিশদ ।