۲۸ شهریور ۱۳۹۶

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

زئوس Zeus

زئوس Zeus

زئوس هستم خدای المپ

مطالب مشابه

25 Comments

  1. 12

    علی

    سلام
    ممنون از مطلب مفیدتون!
    من یه atmega 8a خریدم و برنامه رو روش پروگرم کردم.چه با کریستال خارجی ، چه با کریستال داخلی جواب نداد ( 8مگاهرتز)
    به نظرتون مشکل میتونه از کجا باشه!
    اینم بگم که من وقتی یه LED مستقیم به پایه دیتا ماژول متصل کردم و کلید ریموت رو فشار دادم روی LED تاثیر گذاشت (یعنی روشن و خاموش شد) آیا این موضوع میتونه گواه آن باشد که فرکانس فرستنده با فرکانس ماژول گیرنده برابر است؟! (همچنین وقتی LED رو به ماژول متصل کردم، LED روشن بود و چشمک میزد ولی وقتی کلید ریموت رو فشار میدادم با نور بیشتری چشمک میزد. مگه نباید LED کاملا خاموش باشد؟ مگر ماژول گیرنده هنگامی که ارسالی صورت نمیگیرد نباید در دیتا خروجی صفر داشته باشد؟)
    توی ریموت فرستنده یه کریستال 433 مگاهرتز وجود داره! اما نمیدونم چطور باید فرکانس گیرنده رو تسشیص بدم!؟
    ماژول گیرنده ای که استفاده میکنم ماژول pc-jc02 هست! (روی کریستال آن نوشته 6.7458) آیا این ماژول میتونه این کار رو به درستی انجام بده؟ (بدون آنتن) ماژول پیشنهادی شما کدام است؟!
    آیا میشه که دیتا ارسالی از فرستنده (با آیسی ev1527) کمتر یا بیشتر از 24 بیت باشه؟! یعنی با اینکه آیسی یکسان است اما دیتا ارسال متفاوت باشد؟ یا خیر حتما 24 بیت است؟!
    به نظر شما مشکل چیست؟
    با تشکر

    پاسخ
    1. 12.1
      زئوس Zeus

      زئوس Zeus

      سلام درود دوست عزیز
      اگر کریستال ماژول شما 6.7458 هست یعنی فرکانس ماژول شما 433 مگاهرتز هست
      اگر LED رو به خروجی ماژول وصل میکنید و بعد فشردن کلید ریموت چشمک زدن LED قائده مند و مرتب میشه یعنی فرکانس گیرنده و فرستنده با هم یکی است
      در مورد atmega8 هم سری a و غیر a فرقی نمی کنه و باید با هر دو به صورت صحیح کار کنه
      شما مطمئن هستید که فیوز بیت های میکرو رو درست تنظیم میکنید ؟ ، وقتی میکرو رو روشن میکنید روی پورت سریال چیزی میفرسته ؟

      پاسخ
  2. 11

    مجتبی

    با تشکر از مطالب و سایت بسیار خوبتون

    پاسخ
    1. 11.1
      Sisoog Os
  3. 10

    هنرفر

    سلام
    من میخوام ریموت کدفیکس رو بر روی میکروی خودم لرن کنم
    با این سورس فقط ریموت کدلرن عمل میکنه
    ظاهرا باید تغییراتی بر روی قسمت اینتراپت اعمال بشه ولی من هر کاری میکنم جواب نمیده
    در صورت امکان بفرمائید این تغییر چطوری باید صورت بگیره که ریموت کدفیکسم دارای آی سی pt هم لرن بشه
    ممنون

    پاسخ
    1. 10.1
      زئوس Zeus

      زئوس Zeus

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

      پاسخ
  4. 9

    علی فلاح

    سلام
    خیلی عالی بود
    ممنون

    پاسخ
    1. 9.1
      زئوس Zeus

      زئوس Zeus

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

      پاسخ
  5. 8

    Hamed Akbari

    سلام
    اگر ممکن هست مطلبی در مورد ریموت های هاپینگ و دکد کردن آنها قرار دهید.
    با تشکر سایت خوبتون

    پاسخ
    1. 8.1
      زئوس Zeus

      زئوس Zeus

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

      پاسخ
  6. 7

    m.a

    ممنون بابت اطلاعات مفیدتون

    پاسخ
    1. 7.1
      زئوس Zeus

      زئوس Zeus

      خواهش میکنم دوست عزیز

      پاسخ
  7. بازخورد: پروژه ریموت کنترل 4 کانال کاملا رایگان به همراه مستندات - سیسوگ - Sisoog

  8. 6

    reza

    سلام
    چرا نسخه GCC که گذاشتید کامپایل نمیشه ظاهرا مشکلی داره یا کتابخونه ها براش فراخوانی نشده ؟؟

    پاسخ
    1. 6.1
      زئوس Zeus

      زئوس Zeus

      نسخه GCC مشکلی نداره ، اول باید توی نرم افزار ایکلیپس ایمپورت کنید بعد کامپایل کنید ، میک فایل مستقیم نداره که بتونید تو کامند لاین کامپایل کنید.

      پاسخ
  9. 5

    وحید

    باتشکر از برنامه خوبتون
    اگر بخواهیم از کریستال 16 مگا هرتز استفاده کنیم باید کجای برنامه تغییر کنه ؟
    کدوم دستورات رو باید تغییر بدیم ؟

    پاسخ
    1. 5.1
      زئوس Zeus

      زئوس Zeus

      برای این تغییر اول باید از توی کانفیگ پروژه فرکانس رو 16 تغییر بدید که تاخیر ها درست انجام بشه
      بعد باید تایمر 0 رو جوری کانفیگ کنید که سرریزش 1 میکرو ثانیه بشه !
      البته شما از کدوم سورس استفاده میکنید ؟ کدویژن یا GCC ، توضیحات من برای کدویژن هست

      پاسخ
      1. 5.1.1

        وحید

        من با کد ویژن انجام دادم
        شما در کتابخانه تایمر مقدار Clock value: 1000.000 kHz انتخاب کردید در صورتی اگه بخوایم از کریستال 16 مگ استفاده کنیم باید مقدار آن و همچنین ریجیستر TCCR1B=0x02 تغییر کنه یعنی چون فرکانس ما دوبرابر میشه باید مقدار تایمر ما نصف بشه که تاثیری در برنامه نویسی نداشته باشه حالا از شما سوال داشتم که باید مقدار ریجیسترها چگونه تغییر کنه ؟؟ ممنون میشم راهنمایی کنید متشکر

        پاسخ
        1. 5.1.1.1
          زئوس Zeus

          زئوس Zeus

          سلام دوست عزیز ، همانطور که مطلع هستید برنامه بر اساس زمان بندی 1 میکروثانیه نوشته شده است و زمان ها بر این اساس وارد شده است ، برای تغییر فرکانس میکرو ، باید زمان های مورد استفاده در قسمت کتابخانه EV رو اصلاح کنید.
          چرا که متاسفانه نمیتوان با استفاده از سخت افزار میکرو زمان 1 میکرو ثانیه را در فرکانس 16 مگ ایجاد کرد.

          پاسخ
  10. 4

    احمد رضا

    نه ببینید
    منظورم این بود که وقتی به عنوان مثال دکمه A ریموت فشرده شد و رها شد خروجی یک بمونه و وقتی که دوباره دکمه A زده شده خروجی صفر بشه و صفر بمونه تا وقتی که دوباره دکمه A زده بشه مثل کلید تاگل ( پوش باتن )
    بعد نکته بعدی اینکه شما گفتید اگر کد تغیییر کرد و کد جدید آمد حالت عوض بشه اصلا کد عوض نمیشه دکمه A ویا B در یک ریموت یک کد اختصاصی داره که هربار فشرده بشه همون کد ارسال میشه نرم افزار از کجا میخواد بفهمه که کد جدید آمده ؟؟ کد همون کده
    نکته آخر اینکه شما در برنامه تون در داخل whil از delay_ms استفاده کردید که یک اشتباه بزرگه و نباید استفاده بشه و تو کل سیستم تاخیر می اندازه کافیه این delay رو بردارید متوجه میشید مشکلات برنامه چیه
    ببیند من زیاد با این برنامه کار کردم و میخوام به کمک شما برنامه مشکلاتش حل بشه تا دوستان عزیز ازش استفاده کننند خواهشا اگه میتونید به آی دی بنده در تلگرام مراجعه کنید تا بهتر بشه روی این پروژه کار کرد کرد ممنون
    آی دی بنده :xxxxxxxxxxx

    پاسخ
    1. 4.1
      زئوس Zeus

      زئوس Zeus

      ببینید دوست عزیز ، کدهایی که من به شما ارائه میدم فقط نمونه هست و برای کاربردی شدن خودتون باید کامل کنید. من راهکار رو عرض کردم خدمتتون. حالا شما اونطوری که دوست دارید یا نیاز دارید پیاده سازی کنید !
      ببینید همونطور که در توضیحات پست عرض کردم 20 بیت کد ثابت وجود داره و 4 بیت آخر وضعیت کلید ها رو ارائه میکنه ، پس شما باید وضعیت کلید ها رو از بیت های شناسه جدا کنید و مورد بررسی قرار بدید.
      دلیل وجود اون تاخیر هم این بوده که توی کدویژن ما نوع volatile نداریم به همین دلیل متغیر های موجود ممکنه توی اینتراپت مقدار درستی رو دریافت نکنند (البته راهکار داره)، و دلیل دوم هم این بوده که کد ها رو توی سریال نمایش میداده است و شما لزومی در استفاده از اونها ندارید.
      این کد مشکلی نداره به نظر من ، فکر میکنم منظور شما اینه که برای منظور خودتون تغییرش بدید ، مشکلی نیست ، اتفاقا خوشحال میشم که یه کد کاربردی هم در این زمینه منتشر کنیم !
      آیدیتون توی تلگرام موجود نبود :/

      پاسخ
  11. 3

    احمد رضا

    سلام خدمت شما
    با تشکر از برنامه خوبی که گذاشتید
    من با این برنامه کار کردم مشکلی نداره و بدرستی کار میکنه ولی یک مشکلی که داره هر روشی سعی کردم روش پیاده کنم که درستش کنم نشد اینه که وقتی دکمه ریموت رو نگه میدارید پورت خروجی حالت چشمک زن پیدا میکنه و برنامه یک بار اجرا نمیشه یعنی تا وقتی که دست روی دکمه ریموت هست دائم خروجی چشمک میزنه در صورتی که باید طوری باشه اگر دست روی کلید بود خروجی 1 بشه و وقتی که دست رو برداشتی و دوباره زدی 0 بشه
    امیدوارم درست سوالم رو مطرح کرده باشم بسیار بسیار ممنون میشم که مننو کمک کنید چون نزدیک به چند ماه دارم روش کار میکنم ولی نتیجه نگرفتم
    ممنون

    پاسخ
    1. 3.1
      زئوس Zeus

      زئوس Zeus

      سلام دوست عزیز ، وقت شما بخیر
      خواهش می کنم
      خوب اگر درست متوجه شده باشم شما نیاز دارید کدی داشته باشید که تا مادامی که کلید ریموت فشرده هست خروجی مورد نظر 1 باشه و بعد از رها کردن خروجی صفر بشه !
      توجه داشته باشید که کد منتشر شده فقط یک مثال بوده جهت نحوه استفاده از کتابخانه مربوطه ، اما حالا چطور میشه کد رو به این شیوه تغییر داد ، باید عرض کنم خدمتتون که کار زیاد پیچیده ای نیست ، روش کار به این شکله که شما آخرین کد دریافتی از ریموت رو باید توی یک متغییر ذخیره کنید و کد جدید رو با کد آخر مقایسه کنید اگر یکی بودن یعنی همان کلید قبلی است و نیاز نیست عکس العملی انجام بشه و اگر به مدت مشخصی از ریموت کدی دریافت نکردید آخرین کد دریافتی رو صفر کنید تا با این کار رها شدن کلید شناسایی بشه
      به نمونه زیر دقت کنید

      https://paste.ofcode.org/JMPZdeVCupCuvm9D3PBebQ

      پاسخ
  12. 2

    علی

    سلام‌…در دیکد کردن ریموت های لرن چگونه سیگنال اصلی فرستنده را از نویز جدا کنم…لطفا هر کس بلده کمک کنه…نویز اجازه هیچ کاری نمیدهد…

    پاسخ
    1. 2.1
      زئوس Zeus

      زئوس Zeus

      سلام دوست عزیز ، یک مقداری سوال شما مبهم هست. در خصوص این که اجازه هیچ کاری رو نمیده. ببینید محیط پیرامون ما مملو از انواع مختلف نویز هست !
      در واقع نیازی به جدا کردن نیست؛ شما باید سیگنال صحیح را شناسایی کنید. درست مثل وقتی که در یک جمع شلوغ ، کسی اسم شما را صدا میزند ، در میان تمام سر و صدای محیط ، مغز الگوی اسم شما را شناسایی میکند؛ اما باز جانب احتیاط را رعایت میکند و جواب نمیدهد. منتظر میماند تا دوباره صدا را بشنود !
      خوب اینجا هم دقیقا باید همین رفتار تکرار شود: یعنی اول اسم(الگوریتم ریموت) را درست تشخیص دهد که کد این کار رو انجام میده ، و در مرحله بالا تر ، چند بار یا حداقل دو بار اون الگوریتم درست تکرار بشه و این طور به راحتی میتونید بگید که ریموت بوده که کد رو فرستاده چراکه نویز قادر نخواهد بود دو بار پشت سر هم یک کد یونیک ایجاد کنه !

      پاسخ

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

کلیه حقوق این سایت متعلق به سیسوگ بوده و انتشار مطالب بدون ذکر نام و وب سایت سیسوگ اخلاقا مجاز نمی باشد. Sisoog