<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمدصالح کامیاب</title>
        <link>https://virgool.io/feed/@mskf1383</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-17 08:41:27</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/3305240/avatar/sL0i6R.png?height=120&amp;width=120</url>
            <title>محمدصالح کامیاب</title>
            <link>https://virgool.io/@mskf1383</link>
        </image>

                    <item>
                <title>ساخت یک رادار در خانه ۲</title>
                <link>https://virgool.io/@mskf1383/%D8%B3%D8%A7%D8%AE%D8%AA-%DB%8C%DA%A9-%D8%B1%D8%A7%D8%AF%D8%A7%D8%B1-%D8%AF%D8%B1-%D8%AE%D8%A7%D9%86%D9%87-%DB%B2-lpbjia7aju3c</link>
                <description>سلام! در فرستهٔ قبل راداری ساختیم که در زاویه‌های مختلف می‌ایستاد و فاصله را اعلام می‌کرد. شاید این خیلی به درد بخور نباشد. در این فرسته رادارمان را ارتقا خواهیم داد و کاربردی‌ترش خواهیم کرد.اگر هنوز فرستهٔ قبل را نخوانده‌اید، معطل نکنید!ایدهاینکه رادار در هر زاویه فاصله را به ما اعلام کند خیلی حوصله سر بر است. ایده است که رادار فقط هنگام بروز مشکل صدایمان کند. برای این کار لازم است رادار فاصلهٔ مورد انتظار در هر زاویه را بداند و اگر چیزی از آن فاصله نزدیک‌تر آمد، بوق هشدار به صدا در آید.لوازم مورد نیاز جدیدیک بلندگوی پیزوشمای کلیشمای کلیاندازه‌گیری اولیهمتغیر distance را به یک آرایهٔ ۱۹ تایی تبدیل می‌کنیم تا مقادیر اندازه‌گیری اولیه را در آن ذخیره کنیم. چون سروو از زاویهٔ ۰ تا ۱۸۰، ۱۰ درجه ۱۰ درجه می‌چرخد، در کل می‌شود ۱۹ تا. مقادیر اولیه‌اش را هم ۰ می‌گذاریم. یک متغیر جدید به نام newDistance هم تعریف می‌کنیم تا کار قبلی distance را انجام دهد! https://gist.github.com/mskf1383/50177c4fe6ba2a5f475d4d3baa2226d1 تابع getDistance را اصلاح می‌کنیم تا فاصلهٔ اندازه گرفته شده را به جای ذخیره در متغیر، برگرداند: https://gist.github.com/mskf1383/e76ef0ebb0cada2aac3833cf02e7b829 توجه کنید که در اولِ تابع، نوشته شده int؛ چون مقداری که برمی‌گرداند int است. قبلاً void بود. یعنی هیچ مقداری را برنمی‌گرداند.حالا که مقدار بر می‌گرداند، باید آن را به یک متغیر نسبت بدهیم!داخل تابع setup کدهای مربوط به چرخیدن سروو و فاصله‌سنجی اولتراسونیک را قرار می‌دهیم. این کدها فقط یک‌بار اجرا می‌شوند و نتیجهٔ فاصله‌سنجی در آرایهٔ distance ذخیره می‌شود: https://gist.github.com/mskf1383/8ce5732c3cb18c7d84d5e0371c2ed1aa به علامت «کوچک‌تر/مساوی» برای مقایسهٔ متغیر angle با ۱۸۰ توجه کنید. در تابع loop که علامت «کوچک‌تر» گذاشته شده، در حلقهٔ اول، از ۰ تا ۱۷۰ می‌رود و در حلقهٔ دوم، از ۱۸۰ تا ۱۰ (تمام زاویه‌ها پوشش داده می‌شود). اما اینجا فقط یه حلقه داریم و باید «کوچک‌تر/مساوی» بگذاریم تا از ۰ تا ۱۸۰ شمارش شود!می‌توانیم آرایهٔ distance را [با مشقّت] داخل سریال چاپ کنیم تا ببینیم فاصلهٔ مورد انتظار در هر زاویه چقدر است (داخل همان تابع setup): https://gist.github.com/mskf1383/5fbe01b8934899ff21091ebb4fc80f6d تابع هشدارقبل از هر چیز، پایانهٔ پیزومان را معرفی می‌کنیم (به پایانهٔ ۱۰) و در تابع setup هم آن را به عنوان خروجی تعیین می‌کنیم (برای شلوغ نشدن، فقط کدهای پیزو را گذاشته‌ام): https://gist.github.com/mskf1383/1720f0831d92c4dad327c08a7ef7fc20 نام تابع showResault را به warn تغییر می‌دهیم؛ چون قرار است تغییر کاربری بدهد. قرار است هر بار که فراخوانی شد، علاوه بر نمایش فاصلهٔ «اشیای ناخواسته» روی نمایشگر، یک بوق هم تحویل ما بدهد! برای این که از تابع tone استفاده می‌کنیم. این تابع یک موج مربعی با بسامد مورد نظر به پایهٔ مورد نظر می‌فرستد. https://gist.github.com/mskf1383/c4e723fcc48ae26f5a551e4791e7a673 چرخهٔ راداردر نهایت کدهای تابع loop را اصلاح می‌کنیم تا فقط وقتی که فاصلهٔ اندازه گرفته شده از فاصلهٔ مورد انتظار کمتر بود (البته با ۵cm خطا)، تابع warn را فرابخواند. https://gist.github.com/mskf1383/0dbdd07326702defd7c91bb81218f31d دقت کنید که در تابع setup، سروو تا زاویهٔ ۱۸۰ چرخیده بود. به همین خاطر در اینجا از زاویهٔ ۱۸۰ شروع کردیم. اگر دوباره از زاویهٔ ۰ شروع می‌کردیم، سروو یک حرکت ۱۸۰ درجه‌ای می‌کرد تا به زاویهٔ ۰ برسد!کد کامل https://gist.github.com/mskf1383/dcf260b96f09312afe41d3e80a2ae3b8 نتیجه https://www.aparat.com/video/video/embed/videohash/rbbz598/vt/frame </description>
                <category>محمدصالح کامیاب</category>
                <author>محمدصالح کامیاب</author>
                <pubDate>Thu, 10 Oct 2024 10:26:47 +0330</pubDate>
            </item>
                    <item>
                <title>ساخت یک رادار در خانه</title>
                <link>https://virgool.io/saakhtnaame/%D8%B3%D8%A7%D8%AE%D8%AA-%DB%8C%DA%A9-%D8%B1%D8%A7%D8%AF%D8%A7%D8%B1-%D8%AF%D8%B1-%D8%AE%D8%A7%D9%86%D9%87-oekmwabzsmqi</link>
                <description>عکسی از رادار قدس سپاه پاسداران جمهوری اسلامی ایرانسلام! در این فرسته بنا داریم با استفاده از آردوینو یک رادار ساده بسازیم. البته راداری که خواهیم ساخت، خیلی با رادار داخل عکس متفاوت خواهد بود!قطعات مورد نیازیک آردوینو (من از UNO استفاده می‌کنم) به عنوان مغز متفکر پروژهیک پودمان (ماژول) اولتراسونیک HC-SR04 (HC-SR05 هم کارکرد مشابهی دارد) برای سنجیدن فاصلهیک موتور سروو (من از SG92R استفاده می‌کنم) برای چرخاندن اولتراسونیکیک پودمان نمایشگر TM1637 برای نمایش فاصلهو البته مقداری سیم!راهنمای گام‌به‌گامشمای کلیشمای کلیبه کار انداختن اولتراسونیکپایانهٔ چکانه (Trigger): به پایانهٔ ۷ آردوینوپایانهٔ پژواک (Echo): به پایانهٔ ۸ آردوینوپایانه‌های VCC و GND هم که مشخص استاولتراسونیک این‌طور کار می‌کند که در ابتدا یک نشانک (سیگنال) صوتی می‌فرستد و پس از بازگشت نشانک، باید بر اساس زمان طی شده، مسافت را محاسبه کنیم (با توجه به سرعت صوت).برای این کار، ابتدا به مدت مشخص به پایانهٔ چکانه ولتاژ می‌دهیم تا نشانک فرستاده شود. هر وقت نشانک برگردد، پایانهٔ پژواک به ما ولتاژ می‌دهد. زمان طی شده را نصف می‌کنیم (به خاطر رفت و برگشت) و سپس در ۰٫۰۳۴ ضرب می‌کنیم. مقدار حاصل، فاصله با یکای سانتی‌متر است.همچنین پایانهٔ پژواک را هر دفعه صفر می‌کنیم تا بازنشانی شود. https://gist.github.com/mskf1383/b4b1bf8401b73fb035f61b46f33b5388 کدهای اولتراسونیک را داخل یک تابع نوشتم؛ چون بعداً لازم می‌شود.اگر این کد را روی آردوینو بارگذاری کنید، هر لحظه فاصله را می‌سنجد و در نمایشگر سریال چاپ می‌کند.توجه: حواستان به حداکثر برد فاصله‌سنجی اولتراسونیک باشد. همچنین زاویهٔ مانع نیز بسیار مؤثر است.چرخاندن اولتراسونیک با سرووسیم زرد: به پایانهٔ ۹ آردوینوسیم قرمز/نارنجی: به 5Vسیم سیاه/قهوه‌ای: به زمیناولتراسونیک را روی یک سروو می‌گذاریم. سروو را می‌توان به طور [تقریباً] دقیق روی یک زاویهٔ مشخص تنظیم کرد. هر چند لحظه، زاویهٔ سروو را عوض می‌کنیم و صبر می‌کنیم تا اولتراسونیک فاصله را بسنجد. بعد زاویه را عوض می‌کنیم و…برای راه‌اندازی سروو از کتابخانهٔ Servo ساختهٔ خود آردوینو استفاده می‌کنیم. می‌توانید از داخل نرم‌افزار آردوینو نصب کنید:نماگرفتی از نرم‌افزار آردوینو - نصب کتابخانهٔ Servoیک سروو تعریف می‌کنیم و نامش را baseServo می‌گذاریم. یک متغیر زاویه هم تعریف می‌کنیم و با استفاده از حلقهٔ for،‏ ۱۰ تا ۱۰ تا زیادش می‌کنیم تا به ۱۸۰ برسد. بعد در یک حلقهٔ دیگر، برعکس همین کار را انجام می‌دهیم.هر بار که زاویهٔ سروو عوض شد، فاصله را می‌سنجیم و چاپ می‌کنیم. البته قبل از سنجیدن یک تأخیر هم ایجاد می‌کنیم تا سروو آرام بگیرد و الکی دقت فاصله‌سنجی پایین نیاید! https://gist.github.com/mskf1383/ffb5739b317f7018ab89d9481fa798e0 استفاده از نمایشگرپایانهٔ CLK: به پایانهٔ ۲ آردوینوپایانهٔ DIO: به پایانهٔ ۳ آردوینوپایانه‌های VCC و GND هم که مشخص استبرای نمایشگر از کتابخانهٔ TM1637 ساختهٔ Avishay Orpaz استفاده می‌کنیم:نماگرفتی از نرم‌افزار آردوینو - نصب کتابخانهٔ TM1637نام نمایشگر را monitor می‌گذاریم. یک تابع جدید برای نمایش فاصله تعریف می‌کنیم و هم چاپ کردن در سریال و هم نمایش روی نمایشگر را داخل آن قرار می‌دهیم. https://gist.github.com/mskf1383/0417d781540105a8a72cbf80c2df1d74 توجه: به خط‌های اول دقت کنید: درون‌ریزی کتابخانه‌ها، تنظیم شمارهٔ هم پایانه، تعریف اشیا، تعریف متغیرهاو همچنین تابع setupنتیجه https://wokwi.com/projects/405108047753524225  https://www.aparat.com/video/video/embed/videohash/dfy2ivp/vt/frame  https://www.aparat.com/video/video/embed/videohash/rxq0ky8/vt/frame تقدیم به مجاهد شهید، اسماعیل هنیه</description>
                <category>محمدصالح کامیاب</category>
                <author>محمدصالح کامیاب</author>
                <pubDate>Wed, 31 Jul 2024 16:35:20 +0330</pubDate>
            </item>
            </channel>
</rss>