PDA

View Full Version : سوال: روشن کردن LED با دلفی



mikrob
شنبه 28 بهمن 1391, 11:46 صبح
سلام دوستان عزیز
یه سوال، می خوام یه کیت ردست کنم روش 2تا LED باشه که با USB وصل بشه به کامپیوتر و یه برنامه با دلفی بنویسم که با زدن Button روشن بشن؟
فقط هم دلفی بلدم.
ممنون مبشم کمکم کنید.

Mask
شنبه 28 بهمن 1391, 14:02 عصر
برای این کار نیاز به یه میکرو atmega32 داری.
یه تبدیل com به Usb
بعد با استفاده از کامپوننت ComPort به راحتی با میکرو ارتباط برقرار میکنی و میتونی Led رو ، روشن و خاموش کنی.

firststep
شنبه 28 بهمن 1391, 16:29 عصر
سلام دوست عزیز توضیح جناب GOLD درسته

اما اگر عجله داری و می خوای راحت تر به جواب برسی می تونی این کار رو بکنی اما اگر تنها دو LED داری

می تونی از بازار کابل تبدیل USB به SERIAL رو تحیه کنی این کابل ها اصولاً به همراه حود سوکت پارلل هم دارند
فقط کافی از طریق پورت USB با کمک همون کامپوننتی که اقا فرمودن مثلاً یک عددی رو به سمت سوکت ارسال نمایید
حالا روی پورت پرالل هشت عدد پین وجود داره که عدد زمانی که به دودیی تبدیل می شه روی این پایه یک می شود و شما می تونید باهاش LED روشن کنید ولی احتیاط کن درست وصل کنی چون خطرهای سوختن کابل هست (البته در هر دو صورت)

در این جور مواقع کافی است سوکت تبدیل پارالل رو بزنی و بعد دیتاشیت سوکت پارلل رو هم نگاهی کنین

Felony
شنبه 28 بهمن 1391, 16:56 عصر
V-USB (http://www.obdev.at/products/vusb/index.html) گزینه مناسبی هست ؛ در ظمن در موردی که Gold اشاره کرد حتما نیاز به استفاده از Atmega32 نیست ، این همه میکرو ( Atmega 16 , Atmega 8 ) .

یوسف زالی
شنبه 28 بهمن 1391, 17:16 عصر
8051 :لبخند:

Mask
شنبه 28 بهمن 1391, 17:18 عصر
در ظمن در موردی که Gold اشاره کرد حتما نیاز به استفاده از Atmega32 نیست ، این همه میکرو ( Atmega 16 , Atmega 8 ) .
البته در مورد این موضوع ، من خودم به شخصه از میکرویی استفاده میکنم که اگه قراره هزینه کنم ، یهویی فردا خاستم کاری بکنم ، مجبور نشم دوبار هزینه کنم و از قبل دیوایسی قویتر رو انتخاب میکنم.
وگرنه اگه قراره فقط فقط خاموش و روشن شدن یه LED باشه میتونید از atmega 8 SMD یا از IC AtTiny استفاده کرد.

mr13668248
شنبه 23 آبان 1394, 13:29 عصر
آقا من با دلفی آخر کدش رو پیدا کردم. لطفا دوستان کارهای زیر را انجام بدهند.
ابتدا فایل سیستمی زیر را دانلود کنید:
http://s3.picofile.com/file/8222667384/inpout32.dll.html
و سپس در پوشه system32 ویندوز کپی کنید.

سپس یه پروژه از دلفی باز کنید و کد های زیر را بنویسید:
در بخش implementation بعد از {$R *.dfm} کد زیر را بنویسید:
function Inp32(wAddr: word): byte; stdcall; external 'inpout32.dll';
function Out32(wAddr: word; bOut: byte): byte; stdcall; external 'inpout32.dll';

سپس تابع زیر را بنویسید:

function BinToByte(aString: string): byte;
var liCount : integer; i : double;
begin
Result := 0;
for liCount := 1 to Length(aString) do
begin
Result := Result shl 1;
if aString[liCount] <> '0' then
Inc(Result);
end;
end;

سپس تابع بعدی:
function ByteToBin(Value: Byte): String;
var
i: Integer;
begin
Result := StringOfChar( '0' , 8 );
for i := 0 to 7 do
begin
if (Value mod 2 ) = 1 then
Result[ 8-i] := '1' ;
Value := Value div 2 ;
End;
End;

سپس یک button و یک edit روی فرم بگذارید و کد زیر را بنویسید:
Out32($378,BinToByte(Edit1.Text));

سپس LED را در پورت LPT پایه مثبت در سوراخ شماره 2 و پایه منفی در سوراخ شماره 15 قرار بده.

حالا برنامه را اجرا کن:
اگر عدد 0 بزاری LED روشن و اگر 1 بزاری خاموش میشه.

نمونه پروژه اچرایی (http://s3.picofile.com/file/8222667526/printerPort.zip.html)

اینم خود سورس برنامه

(http://s6.picofile.com/file/8222672126/inp32.zip.html)موفق باشید؛ بوس بوس (http://s6.picofile.com/file/8222672126/inp32.zip.html)