طراحی روبات تشخیص موانع با سنسور مافوق صوت

این روبات با استفاده از Arduino Pro mini طراحی شده است. تصاویر مدار و مراحل کار، کاملا روشن و گویا هستند. از یک آردوینو پرو مینی 5 ولت و IC L293D جهت درایو موتورها استفاده شده و به منظور زیبا سازی کار led و اسپیکر هم مورد استفاده قرار گرفته‌اند.

پس از شروع حرکت، با توجه به توابع random که در کد برنامه استفاده شده است، عملکردهای جالب و اتفاقی مانند توقف یا پخش موزیک انجام می‌گردد. همچنین در صورت نزدیک شدن روبات به موانع، حرکت متوقف شده و پس از بازگشت روبات، جهت دیگری به صورت تصادفی انتخاب شده و روبات مجددا در جهت جدید شروع به حرکت می‌نماید.

Arduino Sonar Robot

(ادامه مطلب…)


Arduino CDROM BLDC Motor Driver, Enhanced Performance

In the last BLDC project “Run-A-CDROM-Brushless-Motor-With-Arduino” I’ve used a L293 to drive a brushless DC motor. There were two important problems in that project as follow:
- Low speed and torque of the motor due to minimal signaling.
- IC overheating due to signal feedback.

arduino schematic

In this project I solve these problems via additional L293 and corresponding hi impedance state. According to grand Wikipedia, Hi-Z (or High-Z or high impedance) refers to an output signal state in which the signal is not being driven. The signal is left open, so that another output pin (e.g. elsewhere on a bus) can drive the signal or the signal level can be determined by a passive device.
(ادامه مطلب…)


بهینه‌سازی در AS3: پاسخدهی به رویدادها

اصولاً، AS3.0 یکی از زبان‌هایی است که تفاوت زیادی میان برنامه‌نویسان عادی و با تجربه، قائل می‌شود. چگونه؟ با کاهش کارایی!… چرا؟ از پدرش java به ارث برده است!

به دلیل شباهت زیادی که در ساختار این زبان با java وجود دارد، برنامه‌نویسان AS3.0 به مرور زمان، تمایل زیادی به برنامه‌نویسی ساخت یافته و لایه‌بندی شده پیدا می‌کنند. شئ‌گرایی بی حد و مرز باعث می‌شود که مفاهیم مخفی‌سازی (بخوانید Encapsulation) در تمام اجزای برنامه به وضوح دیده شود. تعریف انواع و اقسام Interface ها، کلاس‌های ایستا و پویا، ارث‌بری و اشیاء متنوع، به خودی خود، سبک برنامه‌نویسیان AS3.0 را به طراحی لایه‌های مستقل نزدیک می‌کند.

اما، خطری که همیشه در کمین این نوع از برنامه‌نویسی منطقی وجود دارد، کاهش کارایی در مدیریت حافظه است.

استفاده زیاد از الگوهای طراحی مانند Singleton برای بهینه‌سازی مصرف حافظه (هرچند که هدف اصلی آن نبوده است) و Proxy یا Facade جهت ساده‌سازی روابط بین کلاس‌ها و اشیاء در محیط‌های ManagedCode مانند Flash، گویای این مسئله است که گاهی، پس از طراحی منطقی کلاس‌ها و سازماندهی لایه‌ها، به میزان کمی از بی‌نظمی با هدف افزایش کارایی نیازمندیم.

از این پس، سعی می‌کنم در سلسله پست‌های بهینه‌سازی در کارایی، به طرح مواردی مانند نکات برنامه‌نویسی بهینه و حتی الگوهای طراحی سودمند در این رابطه بپردازم.

flash_logo

در این مطلب به یکی از مهمترین منابع کاهش کارایی که همان EventHandler ها هستند پرداخته می‌شود.

در زبان AS3.0، قدرت شئ‌گرایی java به همراه قدرت پردازش بصری محصولات شرکت Adobe در یک جا جمع می‌شوند.
نتیجه این می‌شود که کلیه ترسیمات و اشکال گرافیکی را به سادگی، در قالب اشیاء تعاملی (Interactive Objects) تعریف نموده و بارها از آنها استفاده می‌کنیم. تعریف ساده انواع کامپاننت‌های گرافیکی داده‌ای مانند List، Grid و Combo همگی از این دست هستند.

اما از آنجا که این اشیاء، بار تعاملی بودن را نیز به دوش می‌کشند، لاجرم به رویدادها نیز باید پاسخ دهند. اینجا است که بهینه‌سازی حرف اول را می‌زند. یک برنامه کاملا اصولی و منطقی نوشته شده، ممکن است فاقد کارایی لازم باشد.

(ادامه مطلب…)


Run A CDROM Brushless Motor With Arduino

A brushless dc motor or BLDC is a type of motor without any brush. It means that there is no direct connection (brush) between rotating spindle and other fixed parts like as coil. So the spinning is yield of changes in current direction of coil.
The spindle has a circular magnet (usually). And the coil is an electric controlled magnet itself. So by changing the poles of coil, you can turn the spindle.

Have you ever seen a BLDC? Yes, of course. There are many of them in every computer case.

Fan, CDROM and also Floppy drive (if you have yet) are devices that use BLDC. The fans usually use 2 phase motors with 2 pins for coil and 1 pin for Hall sensor.
CDROM or Floppy drive has 3 phase motor, with 3 pins for coil and 1 pin for Hall sensor.

The mentioned Hall, is a simple sensor to detect the current magnet pole of the spindle. Whenever a magnet reaches, it generates a signal. So you can use this pin to detect rounds of motor and also you can control the motor speed (RPM) by altering the signal speed according to this pin.

I thinks it’s enough of theory, let’s make!

(ادامه مطلب…)


استفاده از تاریخ هجری در ActionScript 3.0

یکی از بسته‌های بسیار مفیدی که با انتشار Adobe Flash Player 10.1 ارائه شد، مجمموعه کلاس‌های flash.globalization هستند که حاوی امکانات مختلفی جهت محلی سازی متون، تاریخ، اعداد و غیره می‌باشند.

کلاس DateTimeFormatter در این مجموعه دارای قابلیت تغییر قالب تاریخ جاری سیستم به قالبهای میلادی، هجری و ژاپنی می‌باشد. برای انجام این کار، کافیست که یک نمونه از این کلاس ایجاد کرده و یک شئ از نوع Date را به تابع format آن ارسال کنیم:

import flash.globalization.DateTimeFormatter;

var dt:Date = new Date();
var dtf:DateTimeFormatter = new DateTimeFormatter("ar-SA");
trace(dtf.format(dt));

و یا نمونه ساده تر آن در یک خط:

trace( (new DateTimeFormatter("ar-SA@calendar=islamic")).format(new Date) );

  • بایگانی:

  • کاربران:



  • RSS اشتراک‌ها:

  • .
    Copyright (c) 2010 www.mshams.ir