سیگنال آنالوگ و دستورات آنالوگ در آردوینو
این مقاله شامل مطالب زیر است
- سیگنال آنالوگ چیست؟
- تفاوت سیگنال آنالوگ و دیجیتال
- سیگنال آنالوگ و دستور آنالوگ در آردوینو
- نحوه ی استفاده از سیگنال آنالوگ در کدنویسی آردوینو
- ذکر یک مثال به همراه کدنویسی
سیگنال آنالوگ چیست؟
سیگنال آنالوگ به سیگنال پیوسته ای اطلاق می شود که دامنه و فرکانس آن در طول زمان تغییر می کند. اندازه سیگنال آنالوگ به دامنه یا سطح ولتاژ سیگنال اشاره دارد. شکل سیگنال آنالوگ به شکل موج آن یا الگوی تغییر آن در طول زمان اشاره دارد. فرکانس سیگنال آنالوگ به تعداد چرخه های شکل موجی اشاره دارد که در یک دوره زمانی معین رخ می دهد.
تفاوت سیگنال آنالوگ و دیجیتال
گفتیم که سیگنال آنالوگ سیگنال های پیوسته ای هستند که در طول زمان از نظر قدرت و دامنه متفاوت هستند. آنها می توانند هر مقداری را در محدوده مشخصی دریافت کنند و اغلب با امواج نشان داده می شوند. نمونه هایی از سیگنال های آنالوگ شامل امواج صوتی، امواج نور و سیگنال های ولتاژ است.
از سوی دیگر، سیگنال دیجیتال، سیگنال های گسسته ای هستند که با اعداد باینری (0s و 1s) نشان داده می شوند. آنها فقط می توانند مقادیر خاصی را در یک محدوده خاص دریافت کنند و به طور مداوم در طول زمان تغییر نمی کنند. نمونههایی از سیگنالهای دیجیتال شامل دادههای کامپیوتری، صوتی دیجیتال و ویدئوی دیجیتال است.
تفاوت اصلی بین سیگنال آنالوگ و دیجیتال در نحوه نمایش آنها و نحوه ارسال آنها است. سیگنال آنالوگ اغلب از طریق رسانه های فیزیکی مانند سیم های مسی یا امواج رادیویی منتقل می شوند، در حالی که سیگنال های دیجیتال می توانند از طریق شبکه های دیجیتال مانند اینترنت منتقل شوند. سیگنالهای دیجیتال معمولاً نسبت به سیگنال آنالوگ قابل اعتمادتر و کمتر مستعد خطا هستند، زیرا میتوانند با درجه دقت بیشتری ارسال و دریافت شوند. علاوه بر این، سیگنالهای دیجیتال انعطافپذیری بیشتری را از نظر دستکاری و ویرایش فراهم میکنند، زیرا میتوان آنها را به راحتی با استفاده از نرمافزار دیجیتال پردازش و پیکربندی کرد.
سیگنال آنالوگ و دستور آنالوگ در آردوینو
سیگنال آنالوگ در آردوینو برای خواندن و پردازش ورودیهای حسگرهای آنالوگ یا دستگاههایی که دامنه مقادیر پیوسته دارند استفاده میشوند. به عبارت ساده تر، سنسورهای آنالوگ تغییرات ولتاژ یا جریان را تشخیص می دهند و این داده ها به صورت یک سیگنال آنالوگ به میکروکنترلر ارسال می شود.
برای استفاده از سیگنال های آنالوگ در آردوینو، میکروکنترلر دارای مبدل های آنالوگ به دیجیتال (ADC) داخلی است که سیگنال آنالوگ را به یک مقدار دیجیتال تبدیل می کند که می تواند توسط کد آردوینو پردازش شود. ADCها با مقایسه ولتاژ ورودی با ولتاژ مرجع و نگاشت این محدوده ولتاژ به محدوده دیجیتال از 0 تا 1023 (برای ADC 10 بیتی) کار می کنند.
آردوینو چندین پایه آنالوگ دارد (معمولاً با برچسب A0 تا A5) که با استفاده از توابع ورودی آنالوگ مانند analogRead() قابل دسترسی هستند. این تابع مقدار آنالوگ روی پین مشخص شده را می خواند و یک مقدار دیجیتال بین 0 تا 1023 برمی گرداند. سپس مقدار برگشتی می تواند در کد آردوینو برای پردازش بیشتر استفاده شود یا به دستگاه خروجی ارسال شود.
استفاده از سیگنال های آنالوگ در آردوینو امکان اندازه گیری دقیق متغیرهایی مانند دما، سطح نور، سطح صدا و سایر عوامل محیطی را فراهم می کند. طیف گسترده ای از امکانات را برای ایجاد پروژه های تعاملی و پاسخگو، از جمله برنامه های روباتیک، اتوماسیون و اینترنت اشیا (اینترنت اشیا) باز می کند.
نحوه ی استفاده از سیگنال آنالوگ در کدنویسی آردوینو
برای استفاده از سیگنال های آنالوگ و دستورات آنالوگ برای کدنویسی در آردوینو، باید از ماژول مبدل آنالوگ به دیجیتال (ADC) برد آردوینو استفاده کنید. برد آردوینو می تواند ورودی های آنالوگ را از حسگرها یا منابع دیگر دریافت کند و سپس این سیگنال های آنالوگ را از طریق ماژول ADC به مقادیر دیجیتال تبدیل کند.
در اینجا مراحل استفاده از سیگنال ها و دستورات آنالوگ آمده است:
تنظیم پین ها برای ورودی آنالوگ: قبل از استفاده از سیگنال های آنالوگ، باید مطمئن شوید که پایه های ورودی آنالوگ به درستی تنظیم شده اند. برای خواندن ورودی های آنالوگ می توانید از پین های آنالوگ مانند A0، A1، A2 و … استفاده کنید.
از تابع analogRead() استفاده کنید: برای خواندن سیگنال های آنالوگ، می توانید از تابع analogRead() در کد آردوینو خود استفاده کنید. این تابع ولتاژ پین ورودی آنالوگ مشخص شده را می خواند و آن را به مقدار دیجیتال بین 0 تا 1023 تبدیل می کند.
از تابع analogWrite() استفاده کنید: می توانید از تابع analogWrite() برای تولید خروجی آنالوگ از پین های دیجیتال برد آردوینو استفاده کنید. این تابع یک مقدار دیجیتال (بین 0 تا 255) را به یک سیگنال PWM (مدولاسیون عرض پالس) مربوطه تبدیل می کند که می تواند برای کنترل یک دستگاه آنالوگ مانند موتور، LED و غیره استفاده شود.
استفاده از دستورات آنالوگ: دستورات آنالوگ برای کنترل دستگاه های آنالوگ بر اساس سیگنال ورودی خوانده شده توسط ماژول ADC استفاده می شود. برای مثال می توانید از دستورات آنالوگ برای کنترل سرعت موتور، روشنایی LED و غیره استفاده کنید.
به طور کلی، استفاده از سیگنال های آنالوگ و دستورات آنالوگ در آردوینو به شما این امکان را می دهد که با ورودی ها و خروجی های آنالوگ ارتباط برقرار کنید که برای بسیاری از پروژه های سخت افزاری ضروری است.
ذکر یک مثال به همراه کدنویسی
یک مثال برای استفاده از سیگنال ها و دستورات آنالوگ در آردوینو خواندن و کنترل روشنایی LED با استفاده از پتانسیومتر است.
برای انجام این کار، میتوانیم پتانسیومتر را به یک پایه ورودی آنالوگ (به عنوان مثال A0) و LED را به یک پایه خروجی دیجیتال (مثلا پایه 9) وصل کنیم. مقدار پتانسیومتر (0-1023) را می توان به مقدار روشنایی LED (0-255) با استفاده از تابع analogWrite () نگاشت.
این کد مقدار را از پتانسیومتر می خواند، آن را به مقدار روشنایی LED نگاشت می کند و با استفاده از analogWrite() آن مقدار را روی LED می نویسد. تابع Serial.println() می تواند برای خروجی مقدار پتانسیومتر به نمایشگر سریال برای اشکال زدایی استفاده شود. تابع delay() اختیاری است اما می تواند به کاهش لرزش در روشنایی LED کمک کند.
کد نوشته شده برای این مثال:
const int potPin = A0; const int ledPin = 9; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); // optional for debugging } void loop() { int potVal = analogRead(potPin); // read potentiometer value int ledVal = map(potVal, 0, 1023, 0, 255); // map pot value to led brightness analogWrite(ledPin, ledVal); // set led brightness Serial.println(potVal); // optional for debugging delay(50); // optional delay to reduce jitter }