بالاخره بعد از چند هفته تلاش اولین رباتم را ساختم. من هم بر اساس سنت موجود از تعقیب خط شروع کردم. معمولا کسانی که قصد شروع رباتیک را دارند از ربات های ساده ای مانند تعقیب خط شروع می کنند.( ربات تعقیب خط رباتی هست که یک خط سیاه را درون صفحه ای سفید رنگ دنبال می کند)
به طور کلی امروزه ساخت ربات ها ساده تر از قدیم شده است که دلیل اصلی آن هم متولد شدن میکرو کنترلر ها هست.
به عنوان مثال اگر به کیت های چشمک زن نگاه کنید می بینید که یک کیت چشمک زن ۴ تایی تشکلیل شده از تعدادی خازن و ترانزیستور و مقاومت که درک مدار آن برای افراد معمولی سخت می باشد. هر کسی نمی تواند بفهمد که کار این مدار به چه شکل است و به طور کل نمی تواند آن را تحلیل کرد.(برای افرادی که آشنایی کم به الکترونیک دارند)
اما با یک میکرو کنترل ساده و کوچک می توان یک چشمک زن چند تایی درست کرد که هیچ مدار پیچیده ای ندارد. و درک مدار آن برای افراد معمولی و نا آشنا با الکترونیک هم ساده می باشد.

و اما اساس کار این مدار که من طراحی کردم به این شکل هست که از خاصیت های رنگ سیاه و سفید در جذب نور استفاده شده است.
همانطور که می دانید رنگ سفید نور را منعکس می کند و رنگ سیاه بیشتر نور را جدب می کند.
برای تشخیص رنگ سیاه و سفید از گیرنده و فرستنده مادون قرمز استفاده می شود که فرستنده ی آن یک دیود نوری هست که نور مادون قرمز تولید می کند و گیرنده که فکر کنم ترانزیستوری هست مانند یک کلید عمل می کند و که در حالت عادی قطع است و زمانی که نور مادون قرمز به آن می تابد جریان را از خود عبور می دهد.
گیرنده و فرستنده در کنار هم قرار می گیرند و فرستنده نور را بر صفحه می تاباند و اگر صفحه رنگ سفید داشته باشد نور مادون قرمز را منعکس می کند و به گیرنده می رسد در نتیجه جریان را از خود عبور می دهد و در صورتی که صفحه سیاه باشد نور را جذب کرده و مقدار مادون قرمزی که به گیرنده می رسد خیلی ناچیز هست و جریان عبور نمی کند.
با این ویژگی به راحتی می توان ولتاژ دوسر گیرنده را در هر لحظه چک کرد و رنگ سفید یا سیاه را تشخیص داد.
ولتاژ دو سر گیرنده را به یک میکرو کنترلر می دهیم و با توجه به ورودی ها، موتورهای چپ و راست را روشن و خاموش می کنیم تا ربات در جهت خط قرار گیرد و خط سیاه را در صفحه سفید دنبال کند.
این رباتی که من الان ساختم هنوز یک ربات واقعی نشده، زیرا که هیچ حرکت مکانیکی هم نداره و فقط رنگ سیاه و سفید را تشخیص می دهد و روی بخش چپ و راست که جای موتور ها هست خروجی ۰ و ۱ می اندازه.
چون موتور ها جریان زیادی می کشند و نویز هم ایجاد می کنند فکر می کنم اگر آنها را مستقیم به میکرو و باتری آن متصل نمایم با مشکل مواجه می شوم برای همین باید از رله استفاده کنم که انشاالله در اولین فرصت آن را تکمیل کرده و بر روی یک ماشین کوچک قرار می دهم و بعد از تست اگر وقت شد تمامی قسمت ها و برنامه ی میکرو آن را توضیح می دهم. برای کسانی که مثل خودم علاقه دارند برای خودشون یک ربات بسازند اما مرجع مناسب پیدا نمی کنند.
اکثر آموزش هایی که در نت دیدم یا خیلی ناقص بودند و یا به کلی گویی بسنده کرده بودند.
اگر می خواهید خودتان ربات بسازید باید دست به کار شوید و با قطعات ساده به کار رفته در آن آشنا شوید و همراه با یک اهم متر و ولت متر آنها را تست کنید.
|
+
موضوع : برنامه نویسی, روباتیک |
تاریخ
| یک نظر
یک پروژه کامل سوکت نویسی (کلاینت)
سلام
در ۴ پست گذشته از بخش برنامه نویسی ++c در مورد اینکه سوکت نویسی برای چی هست و چطوری برنامه نویسی سوکت انجام بدیم توضیح داد.
امروز یک پروژه ی کامل از سوکت نویسی در ++Visual C قرار میدهم.
در این پروژه یک کلاینت نوشتم که اطلاعاتی را از یک فایل میخواند و به پورت ۸۰ یک آی پی (پروتکل http ) ارسال میکند و نتیجه را در فایل دیگری مینویسد.
آدرس آی پی و نام فایل ورودی و نام فایل خروجی با آرگومانهای خط فرمان گرفته میشوند .
این برنامه بر اساس پروتوکل http نوشته شده . بنابرین هر خط باید با r\n\ به پایان رسد و آخر دستورات هم با یک خط خالی مشخص میشود.
از این برنامه به راحتی میتوانید به عنوان یک مرورگر استفاده کنید و خروجی صفحات یک سایت را گرفته و پردازش کرد.
حوصله نوشتن توضیحات بیشتر را ندارم بنابرین اگر جایی ابهامی هست در بخش نظرات مطرح کنید تا جواب بدم.
|
+
موضوع : برنامه نویسی, سی پلاس پلاس |
تاریخ
| ۵ نظر
افزایش دادن کلیک ها بر روی تبلیغات کلیکی
سلام
موضوع چیه؟
در این پست می خواهم به شما یاد بدم که اگر در سیستم های تبلیغات کلیکی عضو هستید چکونه آمار کلیک های خود را بالا ببرید.
تبلیغات کلیکی؟
چند سالی هست که سایتهای تبلیغات کلیکی زیاد شده اند.کاربر با ثبت نام در این گونه سایت ها و قرار دادن کد دریافتی از آنها در سایت خود می تواند در ازای کلیک کاربران سایت یا وبلاگش بر روی تبلیغات مبلغی دریافت نماید.
اما ایرادی که به این شیوه ی تبلیغات می رود این است که کاربران برای نمایش تبلیغ هزینه ای در یافت نمی کنند و تنها اگر بازدید کننده سایت آنها بر روی تبلیغات کلیک کنند مبلغ اندکی از سایت های کلیکی دریافت می کنند.(این شد که آن شد و من تصمیم به نوشت این برنامه گرفتم)
من خودم مدتی از این شیوه ی تبلیغات در سایتم استفاده می کردم که متاسفانه زمانی که متوجه شدم که سایت تبلیغ دهنده ، کلیک های من را به درستی ثبت نمی کند و هر بار مبلغ زیادی از درآمد من را به بهانه ی کلیک های خارجی کسر می کند کد تبلیغات را برداشتم.
و متاسفانه یکی دیگر از این سایت ها درآمد من را پرداخت نکرد و بعد از ماه ها که تبلیغات آنها را نمایش می دادم وقتی تقاضای دریافت پول دادم معلوم شد که نمی خواهند پول را به حساب من بریزند.
اما امروز تکه برنامه ای نوشته ام که در ازای ورود هر کابر بر روی لینک تبلیغات درون سایت شما کلیک می کند.
یعنی اگر کاربری سایت شما را باز کند و ببیند ، چه بر روی تبلیغات کلیک کند و چه این کار را انجام ندهد یک کلیک برای شما ثبت می شود.
سایت های کلیکی ، کلیک های تکراری را ثبت نمی کنند. یعنی اگر با یک آی پی چندین بار کلیک شود تنها یک کلیک ثبت می شود و باید توجه داشت که در این برنامه ای که نوشته ام کلیک از روی کامپیوتر بازدید کننده انجام می شود. بنابرین شما باید به تعداد بازدید کننده گان کلیک داشته باشید که البته همیشه هم اینطور نیست .(چون سایتها ی کلیکی هم زرنگ تر از این حرفها هستند و از هر چند کلیک حتی اگر با آی پی های متفاوت باشند تنها یکی از آنها را برای شما ثبت می کنند).
|
+
موضوع : برنامه نویسی, طراحی وب, فناوری اطلاعات |
تاریخ
| ۷ نظر
سوکت نویسی (برنامه نویسی شبکه) – بخش چهارم سرور
ایجاد یک سرور:
برای ایجاد یک سرور تنها کاری که باید انجام دهیم باز کردن یک Port و قرار دادن آن در حالت شنود هست.
ابتدا یک Object از کلاس موجود سوکت سرور می سازیم
(کار بر روی پورت ۱۲۳۴)
نکته: اگر اشتباه نکنم : تعداد پورت ها به اندازه طول عددی دو بایت غیر منفی هست. یعنی از ۰ تا ۲ به توان ۳۲ ، یعنی برای ایجاد سوکتی می توانید عددی در این بازه انتخاب کنید. ولی باید توجه داشته باشید که بعضی از این پورت ها برای کار های خاصی هستند، مثلا پورت ۲۱ برای FTP می باشد یا پورت ۸۰ که برای وب هست. پیشنهاد من این هست که برای برنامه هایی که می نویسید از پورت های بالای ۱۱۱۱ استفاده کنید. چون ۱۱۱۱ عدد زیبایی هست.
شیء سوکت ایجاد شده است. با متد Accept آن را در حالت شنود قرار می دهیم.
زمانی که این متد را فراخوانی می کنیم کار اصلی یعنی شنود انجام می شود. در واقع بعد از فراخوانی این متد هست که پورت باز می شود.
|
+
موضوع : برنامه نویسی, سی پلاس پلاس |
تاریخ
| ۵ نظر
سوکت نویسی (برنامه نویسی شبکه) – بخش سوم کلاینت
ایجاد یک کلاینت:
کلاینت برنامه ای است که با یک سرور ارتباط برقرار کرده و با آن صحبت میکند.
ساخت سرور برای جلسه بعد هست. در این جلسه یک کلاینت ایجاد کرده و با سرور های موجود در اینترنت به بحث و گفت گو می نشینیم و از ان تبادل اطلاعات لذت می بریم.
برای ایجاد کلاینت باید یک Object ایجاد کنیم.
SocketClient s(IP, Port);
به جای IP میتوانیم نام کامپیوتر را نیز وارد کنیم.
با متد های ReceiveLine() و ReceiveBytes(Size) می توانیم اطلاعات ارسال شده به سوکت را بخوانیم.
و با متد های زیر اطلاعات را در یک سوکت می نویسیم.
در اینجا یک شبه مرورگر طراحی می کنیم.
|
+
موضوع : برنامه نویسی, سی پلاس پلاس |
تاریخ
| ۳ نظر
سوکت نویسی (برنامه نویسی شبکه) – بخش دوم
شروع به برنامه نویسی سوکت می کنیم.
در این درس من با زبان ++c کار میکنم.
به طور کلی مباحث موجود در مورد سوکت ها مانند ساخت سرور و کلاینت و … در تمام زبان های برنامه نویسی شبیه به هم هستند.
به دلیل وجود اینکه در ++c ساختمان ها و DataType های زیادی وجود دارد و توضیح آن ها کاری دشوار و خارج از حوصله هست خود را درگیر آن ها نمی کنیم و برای سوکت نویسی از یک کلاس نوشته شده و آماده استفاده می کنیم که کار ما را بسیار راحت می کند.
برای استفاده از این کلاس دو فایل Socket.h و Socket.cpp را در پروژه خود وارد کرده و از همه مهمتر نیاز به فایل ws2_32.lib داریم.
فایل ها را از اینجا دانلود کنید.
و فایل سرآمد winsock2.h که برای برنامه نویسی سوکت مورد نیاز هست و در کنار کامپایلر های ویندوزی موجود هست.
برای این کار ابتدا یک پروژه جدید در ++VC ایجاد می کنیم.
|
+
موضوع : برنامه نویسی, سی پلاس پلاس |
تاریخ
| ارسال نظر
سوکت نویسی (برنامه نویسی شبکه) – بخش اول
سوکت ها چه هستند؟
بهتر است به این سوال پاسخ دهیم که کامپیوتر ها درون یک شبکه چگونه با هم ارتباط برقرار می کنند؟
کامپیوتر ها در یک شبکه به وسیله سوکت ها با هم ارتباط برقرار کرده و با هم گفتگو می کنند. به عنوان مثال یک برنامه چت در یک شبکه را در نظر بگیرید یا حتی مرورگرهای وب ، این ها چگونه اطلاعات را دریافت می کنند؟
زیاد نام IP را شنیده ایم.برای یاد آوری باید گفت که هر کامپیوتری که در یک شبکه قرار می گیرد یک IP به آن تعلق می گیرد که در واقع یک نام برای شناسایی آن کامپبوتر می باشد.
دو کامپیوتر را در نظر بگیرید که با دو IP مختلف می خواهند در یک شبکه با هم ارتباط برقرار کرده و اطلاعاتی را رد و بدل کنند. این کار از طریق یک کانال ارتباطی امکان پذیر هست که به آن سوکت می گویند. بین دو کامپیوتر می توان سوکت های زیادی ایجاد کرد که همه از هم جدا می باشند و اطلاعاتی که بین دو کامپیوتر رد و بدل می شود باید در سوکت های خاص باشند.
مثال : بهترین مثالی که برای سوکت ها می توان زد مرورگر اینترنت شماست.
|
+
موضوع : برنامه نویسی, سی پلاس پلاس |
تاریخ
| ۵ نظر
تبدیل توابع بازگشتی ساده به توابع غیر بازگشتی
با مثال تبدیل تابع بازگشتی !n به حالت غیر بازگشتی آن این مطلب را توضیح می دهیم.
توابع بازگشتی مانند حلقه ها عمل می کنند با تفاوت در نوع محاسبه. به عنوان مثال تابع بازگشتی !n هر بار که خودش را فراخوانی می کند مانند یک حلقه عمل می کند اما برای محاسبه !n ابتدا !(n-1) را محاسبه می کند .
ابتدا توابع فراخوانی می شوند تا به یک مقدار از پیش تعریف شده برسند و سپس مقادیر به ترتیب در توابع بازگردانده می شوند و محاسبات انجام می شوند. در تابع !n فراخوانی تا زمانی انجام می شود که به مقدار از پیش تعریف شده !۰ که برابر ۱ می باشد برسد و سپس مقادیر بازگردانده می شوند و اعداد ۱ تا n در هم ضرب می شوند. برای ادامه کار ابتدا تابع بازگشتی !n را می نویسیم.
|
+
موضوع : برنامه نویسی |
تاریخ
| ۲ نظر
توابع با آرگومان های نا مشخص (آرگومان های متغیر) در PHP
سطح : پیشرفته
تعریف :
در PHP این امکان وجود دارد که تعداد آرگومان های ارسالی به تابع بیشتر و یا کمتر از پارامتر های موجود در تعریف تابع باشد.
بحث ما در این مطلب بیشتر بر روی آرگومان های اضافه هست.
هدف :
می خواهیم تابعی بنویسیم که تعداد زیادی آرگومان به آن ارسال شود در حالی که در تعریف آن هیچ گونه پارامتری موجود نباشد.
مثال :
تعریف تابع پیدا کردن ماکزیمم چند عدد به این شکل باشد :
و بتوانیم به شکلهای زیر فراخوانی کنیم:
|
+
موضوع : برنامه نویسی, پی اچ پی |
تاریخ
| یک نظر
توابع تاخیر زمانی در ++c توابع دوست داشتنی
توابع تاخیر زمانی توابعی هستند که یک وقفه در اجرای برنامه ایجاد می کنند و اجرای برنامه را به تاخیر می اندازند.
من این توابع را خیلی دوست دارم زیرا که با تاخیر زمانی کارهای زیبایی می توان انجام داد .
یک مثال ساده:
نوشته شدن متن به سبک ماشین چاپهای قدیمی.
در حالت عادی زمانی که ما برای چاپ متن از یک حلقه تکرار استفاده کنیم متن به سرعت چاپ شده به طوری که ما همه ی متن را یکجا می بینیم.
int i;
char *str = “salam \n in yek jomle braye test mibashad \n dblog.ir”;
for(i=0;str[i] != ‘\0′;i++)
cout << str[i];
چون سرعت پردازش سیستم بسیار بالا است ما متنی که به کمک حلقه بالا چاپ می شود را یکباره می بینیم اما با ایجاد یک تاخیر در حلقه این متن به شکل زیباتری چاپ می شود.
برای ایجاد تاخیر از دو تابع delay و sleep استفاده می شود.
اگر با IDE های قدیمی مثل Turbo C استفاده می کنید با وارد کردن فایل سرآمد dos.h می توانید از این توابع استفاده کنید.
دقت کنید که این دو تابع با هم تفاوت اندکی دارند.
این تابع یک عدد بر حسب میلی ثانیه می گیرد و تاخیری که ایجاد می کند بر حسب میلی ثانیه است.
مثلا delay(1000) تاخیری معادل ۱ ثانیه ایجاد میکند.
این تابع عددی بر حسب ثانیه می گرد و تاخیری در برنامه ایجاد می کند.
اگر از IDE های جدید مانند ++VC استفاده می کنید باید از فایل سرآمد windows.h استفاده کنید.
Sleep();
این تابع در فایل سرآمد windows.h قرار دارد و مانند تابع delay عمل کرده و تاخیری بر حسب میلی ثانیه ایجاد می کند. (به حرف S بزرگ توجه کنید)
همان مثال بالا با تاخیر زمانی:
char *str = “salam \n in yek jomle braye test mibashad \n dblog.ir”;
for(i=0;str[i] != ‘\0′;i++)
{
cout << str[i];
delay(500);
}
}
از جمله کارهای دیگری که می توانید با این توابع انجام دهید دیدن نتیجه ی اجرای برنامه با سرعت کمتر و همچنین جلوگیری از بالا رفتن استفاده از CPU در زمان اجرای برنامه است. وقتی برنامه ای که نوشته اید دارای حلقه ای با محاسبات زیاد باشد درصد استفاده از CPU بالا می رود که با تاخیر زمانی می توان از آن جلوگیری کرد.
فرض کنید یک تابع بازگشتی برای محاسبه فاکتوریل یک عدد نوشته اید . با قرار دادن یک دستور چاپ و ایجاد یک تاخیر زمانی می توانید نتیجه ی بازگشتی این تابع را به آرامی مشاهده کنید.
|
+
موضوع : برنامه نویسی, سی پلاس پلاس |
تاریخ
| ارسال نظر