ایجاد مولد کدهای مورس در آردوینو
بخش اصلی کتابخانه ی(library) ما یک کلاس ++C به نام Telegraph است. در این بخش ما می خواهیم رابط کاربری آن را تعریف کنیم. اما باید یک اسکچ(sketch) جدید که به صورت زیر است را ایجاد کنیم:
void setup() {
}
void loop() {
}
کدهای بالا، حداقل ترین برنامه ای است که می توانیم در آردوینو بنویسیم. این برنامه کاری نمی کند جز اینکه تمام توابع الزامی را تعریف می کند؛ حتی اگر خالی باشند. ما این کار را انجام می دهیم تا بتوانیم کار خود را لحظه به لحظه تکامل ببخشیم و بررسی کنیم که آیا خطاهای سینتکسی (syntactical errors) وجود دارند یا نه. حالا این اسکچ را با نام TelegraphLibrary ذخیره کنید؛ خواهید دید که IDE آردوینو یک پوشه به نام TelegraphLibrary ایجاد می کند و یک فایل نیز در درون آن به نام TelegraphLibrary.ino ایجاد می کند.
تمام فایل ها و پوشه هایی که ما برای کتابخانه ی خود نیاز داریم در داخل پوشه ی TelegraphLibrary ذخیره می شود. اکنون یک تب(tab) جدید ایجاد کنید، و وقتی که از شما نام فایلی درخواست شد، عبارت telegraph.h را وارد کنید. زیرا ما قصد داریم یک فایل هدر(header) خوب اما قدیمی C را ایجاد کنیم. ( اگر بخواهیم دقیق تر بگوییم، این فایل حتی یک هدر ++C تلقی می شود).
/***
* Excerpted from "Arduino: A Quick-Start Guide, Second Edition",
* published by The Pragmatic Bookshelf.
* Copyrights apply to this code. It may not be used to create training material,
* courses, books, articles, and the like. Contact us if you are in doubt.
* We make no guarantees that this code is fit for any purpose.
* Visit http://www.pragmaticprogrammer.com/titles/msard2 for more book information.
***/
#ifndef __TELEGRAPH_H__
#define __TELEGRAPH_H__
class Telegraph {
public:
Telegraph(const int output_pin, const int dit_length);
void send_message(const char* message);
private:
void dit();
void dah();
void output_code(const char* code);
void output_symbol(const int length);
int _output_pin;
int _dit_length;
int _dah_length;
};
#endif
به طور مشخص، برنامه نویسی شیء گرا دیگر تنها مخصوص CPU های بزرگ نیست. این کدها، در حقیقت یک تشریح رابط کاربری از کلاس Telegraph است که ما می توانیم از آن در پروژه ی مهم بعدی خود استفاده کنیم( به شرطی که ما نیاز داشته باشیم تا برخی اطلاعات را به صورت کدهای مورس ارسال کنیم).
ما در بالا، کدهای خود را با یک مکانیزم پیش گیری به نام اینکلود گارد(include guard) شروع می کنیم. که بدنه ی(body) فایل هدر در درون آن قرار گرفته است و یک ماکروی پیش پردازنده( preprocessor macro) به نام __TELEGRAPH_H__ را تعریف می کند. ما بدنه یا body را که شامل تعریف ماکروی مذکور است را در داخل یک #ifndef قرار می دهیم تا بدنه ی کدها، تنها وقتی کامپایل شود که این ماکرو از قبل تعریف نشده باشد. به این طریق ما می توانیم هدر(header) مورد نظر را هر چند بار که بخواهیم اینکلود(include) کنیم و بدنه(body) تنها یک بار کامپایل می شود.
رابط کاربری(interface) کلاس Telegraph شامل یک بخش public است که کاربران این کلاس به آن دسترسی دارند؛ و همچنین شامل یک بخش خصوصی(private) است که تنها اعضای(members) این کلاس می توانند از آن استفاده کنند. در بخش public (به معنای عمومی) دو چیز قرار دارد: یک کانستراکتور(سازنده) که اشیاء یا آبجکت های جدیدی(new objects) از کلاس Telegraph ایجاد می کند؛ و یک متد(method) به نام send_message که یک پیغام را به وسیله ی انتشار آن از طریق کدهای مورس ارسال می کند. در اپلیکیشن(برنامه) ما، به صورت زیر می توانیم از کلاس مذکور استفاده کنیم:
Telegraph telegraph(13, 200);
telegraph.send_message("Hello, world!");
در خط اول، ما یک شیء جدید(Telegraph object) از کلاس Telegraph ایجاد می کنیم که از طریق پین 13 با آردوینو ارتباط برقرار می کند و تنظیم می کند که دیت ها(dits) 200 میلی ثانیه طول داشته باشند.سپس در خط بعدی پیغام Hello World! انتشار می یابد. به این طریق ما می توانیم هر پیغامی را که بخواهیم ارسال کنیم؛ همچنین ما به سادگی می توانیم شماره ی پین و طول دیت را مشخص کنیم. اکنون که ما رابط کاربری را تعریف کرده ایم، می خواهیم آن را توسعه دهیم.
{module کمک نقدی به نویسنده}
- بازدید: 589
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.