کنترل موتور DC با درایور
موتور را نباید مستقیم به پایه آردوینو وصل کرد. درایور مناسب جریان راهاندازی موتور را از منبع جداگانه تأمین میکند.
کنترل موتور DC با آردوینو: وسایل و آمادهسازی
پیش از شروع، برد را از تغذیه جدا کنید، شماره پایهها و مشخصات قطعات را با نوشته روی همان برد و دیتاشیت تطبیق دهید. یک بردبورد، سیم جامپر و کابل USB برای آزمایش اولیه کافی است؛ قطعات مخصوص این درس را نیز بر اساس توضیح مدار انتخاب کنید.
مراحل انجام آزمایش
پایههای ورودی و خروجی را مطابق دیتاشیت درایور انتخاب کنید؛ با PWM سرعت و با پایههای جهت، چرخش را کنترل کنید.
- ابتدا نقشه اتصالات را روی کاغذ بکشید و اتصال زمین را مشخص کنید.
- اتصالات را با تغذیه قطعشده ببندید و یک بار کنترل کنید.
- برنامه یا مقدار ورودی را مرحلهای آزمایش کنید و نتیجه را در مانیتور سریال یا خروجی مدار ببینید.
- تنها پس از کار کردن نمونه ساده، بخش بعدی را اضافه کنید.
عیبیابی و نکته عملی
پیش از اتصال، جریان توقف موتور، ولتاژ منبع، محدودیت درایور و زمین مشترک را بررسی کنید. تغییر جهت ناگهانی را با توقف کوتاه انجام دهید.
تمرین: دو حالت ورودی یا دو مقدار زمانی متفاوت را امتحان کنید و مشاهده خود را یادداشت کنید. اگر نتیجه با انتظار فرق دارد، ابتدا تغذیه، زمین مشترک و شماره پایه را دوباره بررسی کنید.
درسهای مرتبط
ترانزیستور برای کنترل بار کوچک
خروجی آردوینو برای بار پرجریان مناسب نیست. ترانزیستور NPN میتواند بار کمولتاژ را با فرمان پایه دیجیتال روشن کند.
کنترل بار با ترانزیستور آردوینو: وسایل و آمادهسازی
پیش از شروع، برد را از تغذیه جدا کنید، شماره پایهها و مشخصات قطعات را با نوشته روی همان برد و دیتاشیت تطبیق دهید. یک بردبورد، سیم جامپر و کابل USB برای آزمایش اولیه کافی است؛ قطعات مخصوص این درس را نیز بر اساس توضیح مدار انتخاب کنید.
مراحل انجام آزمایش
بار را به منبع مناسب و کلکتور، امیتر را به زمین، و بیس را از طریق مقاومت مناسب به خروجی وصل کنید؛ انتخاب مقاومت و ترانزیستور را طبق جریان بار و دیتاشیت انجام دهید.
- ابتدا نقشه اتصالات را روی کاغذ بکشید و اتصال زمین را مشخص کنید.
- اتصالات را با تغذیه قطعشده ببندید و یک بار کنترل کنید.
- برنامه یا مقدار ورودی را مرحلهای آزمایش کنید و نتیجه را در مانیتور سریال یا خروجی مدار ببینید.
- تنها پس از کار کردن نمونه ساده، بخش بعدی را اضافه کنید.
عیبیابی و نکته عملی
برای بار القایی مانند موتور یا رله، دیود هرزگرد لازم است. زمین منبع بار و آردوینو را مشترک کنید و بار را مستقیم به پایه وصل نکنید.
تمرین: دو حالت ورودی یا دو مقدار زمانی متفاوت را امتحان کنید و مشاهده خود را یادداشت کنید. اگر نتیجه با انتظار فرق دارد، ابتدا تغذیه، زمین مشترک و شماره پایه را دوباره بررسی کنید.
درسهای مرتبط
خواندن دما و رطوبت با DHT11
حسگر DHT11 دما و رطوبت را با دقت محدود برای تمرینهای مبتدی میخواند. ترتیب پایههای ماژولهای آماده و حسگر خام یکسان نیست؛ برچسب یا دیتاشیت قطعه را ببینید.
آموزش DHT11 با آردوینو: وسایل و آمادهسازی
پیش از شروع، برد را از تغذیه جدا کنید، شماره پایهها و مشخصات قطعات را با نوشته روی همان برد و دیتاشیت تطبیق دهید. یک بردبورد، سیم جامپر و کابل USB برای آزمایش اولیه کافی است؛ قطعات مخصوص این درس را نیز بر اساس توضیح مدار انتخاب کنید.
مراحل انجام آزمایش
پس از اتصال تغذیه و داده طبق مدل قطعه، کتابخانه سازگار را نصب و قرائت را هر چند ثانیه یک بار در مانیتور سریال چاپ کنید.
- ابتدا نقشه اتصالات را روی کاغذ بکشید و اتصال زمین را مشخص کنید.
- اتصالات را با تغذیه قطعشده ببندید و یک بار کنترل کنید.
- برنامه یا مقدار ورودی را مرحلهای آزمایش کنید و نتیجه را در مانیتور سریال یا خروجی مدار ببینید.
- تنها پس از کار کردن نمونه ساده، بخش بعدی را اضافه کنید.
عیبیابی و نکته عملی
خطای NaN را با بررسی سیمبندی، تغذیه، مقاومت پولآپ مورد نیاز مدل خام و فاصله زمانی قرائت پیگیری کنید؛ از آن برای اندازهگیری حساس استفاده نکنید.
تمرین: دو حالت ورودی یا دو مقدار زمانی متفاوت را امتحان کنید و مشاهده خود را یادداشت کنید. اگر نتیجه با انتظار فرق دارد، ابتدا تغذیه، زمین مشترک و شماره پایه را دوباره بررسی کنید.
درسهای مرتبط
نمایشگر LCD کاراکتری با رابط I2C
نمایشگر I2C معمولاً چهار اتصال VCC، GND، SDA و SCL دارد. پایههای SDA و SCL را مطابق مدل برد خود بررسی کنید.
آموزش LCD I2C آردوینو: وسایل و آمادهسازی
پیش از شروع، برد را از تغذیه جدا کنید، شماره پایهها و مشخصات قطعات را با نوشته روی همان برد و دیتاشیت تطبیق دهید. یک بردبورد، سیم جامپر و کابل USB برای آزمایش اولیه کافی است؛ قطعات مخصوص این درس را نیز بر اساس توضیح مدار انتخاب کنید.
مراحل انجام آزمایش
با اسکنر I2C آدرس واقعی ماژول را بیابید؛ کتابخانه سازگار با نمایشگر را نصب و یک پیام کوتاه چاپ کنید.
- ابتدا نقشه اتصالات را روی کاغذ بکشید و اتصال زمین را مشخص کنید.
- اتصالات را با تغذیه قطعشده ببندید و یک بار کنترل کنید.
- برنامه یا مقدار ورودی را مرحلهای آزمایش کنید و نتیجه را در مانیتور سریال یا خروجی مدار ببینید.
- تنها پس از کار کردن نمونه ساده، بخش بعدی را اضافه کنید.
عیبیابی و نکته عملی
اگر صفحه روشن اما بیمتن است، آدرس I2C، پتانسیومتر کنتراست و نام تابع راهاندازی در کتابخانه نصبشده را بررسی کنید.
تمرین: دو حالت ورودی یا دو مقدار زمانی متفاوت را امتحان کنید و مشاهده خود را یادداشت کنید. اگر نتیجه با انتظار فرق دارد، ابتدا تغذیه، زمین مشترک و شماره پایه را دوباره بررسی کنید.
درسهای مرتبط
چراغ چشمکزن بدون delay
برای اجرای همزمان چند کار ساده، زمان روشن و خاموش شدن LED را بدون توقف حلقه مدیریت کنید. LED داخلی بسیاری از بردها روی LED_BUILTIN است.
چشمکزن بدون delay آردوینو: وسایل و آمادهسازی
پیش از شروع، برد را از تغذیه جدا کنید، شماره پایهها و مشخصات قطعات را با نوشته روی همان برد و دیتاشیت تطبیق دهید. یک بردبورد، سیم جامپر و کابل USB برای آزمایش اولیه کافی است؛ قطعات مخصوص این درس را نیز بر اساس توضیح مدار انتخاب کنید.
مراحل انجام آزمایش
در هر دور loop، اختلاف millis و زمان آخرین تغییر را با بازه ۵۰۰ میلیثانیه مقایسه کنید؛ هنگام رسیدن بازه، وضعیت LED را عوض کنید.
- ابتدا نقشه اتصالات را روی کاغذ بکشید و اتصال زمین را مشخص کنید.
- اتصالات را با تغذیه قطعشده ببندید و یک بار کنترل کنید.
- برنامه یا مقدار ورودی را مرحلهای آزمایش کنید و نتیجه را در مانیتور سریال یا خروجی مدار ببینید.
- تنها پس از کار کردن نمونه ساده، بخش بعدی را اضافه کنید.
عیبیابی و نکته عملی
برای محاسبه زمان از unsigned long استفاده کنید و اختلاف زمان را بسنجید تا سرریز millis هم درست مدیریت شود.
تمرین: دو حالت ورودی یا دو مقدار زمانی متفاوت را امتحان کنید و مشاهده خود را یادداشت کنید. اگر نتیجه با انتظار فرق دارد، ابتدا تغذیه، زمین مشترک و شماره پایه را دوباره بررسی کنید.
درسهای مرتبط
دیبانس دکمه بدون delay
کلید مکانیکی هنگام فشردن چند بار سریع وصل و قطع میشود؛ به همین علت یک فشار ممکن است چند بار شمرده شود.
دیبانس دکمه با millis: وسایل و آمادهسازی
پیش از شروع، برد را از تغذیه جدا کنید، شماره پایهها و مشخصات قطعات را با نوشته روی همان برد و دیتاشیت تطبیق دهید. یک بردبورد، سیم جامپر و کابل USB برای آزمایش اولیه کافی است؛ قطعات مخصوص این درس را نیز بر اساس توضیح مدار انتخاب کنید.
مراحل انجام آزمایش
زمان آخرین تغییر را با millis نگه دارید و پس از ۳۰ میلیثانیه پایداری، وضعیت را قطعی کنید. این روش برخلاف delay اجرای بقیه کارها را متوقف نمیکند.
- ابتدا نقشه اتصالات را روی کاغذ بکشید و اتصال زمین را مشخص کنید.
- اتصالات را با تغذیه قطعشده ببندید و یک بار کنترل کنید.
- برنامه یا مقدار ورودی را مرحلهای آزمایش کنید و نتیجه را در مانیتور سریال یا خروجی مدار ببینید.
- تنها پس از کار کردن نمونه ساده، بخش بعدی را اضافه کنید.
عیبیابی و نکته عملی
هر بار فشار را تنها هنگام گذار از رها به فشرده بشمارید؛ شمارش مداوم وضعیت LOW خطاست.
تمرین: دو حالت ورودی یا دو مقدار زمانی متفاوت را امتحان کنید و مشاهده خود را یادداشت کنید. اگر نتیجه با انتظار فرق دارد، ابتدا تغذیه، زمین مشترک و شماره پایه را دوباره بررسی کنید.
درسهای مرتبط
کلید و پولآپ داخلی آردوینو
برای خواندن مطمئن کلید، پایه ۲ را به یک سر کلید و سر دیگر را به GND وصل کنید. مقاومت پولآپ داخلی در حالت رها، ورودی را HIGH نگه میدارد و هنگام فشار LOW میخوانید.
آموزش INPUT_PULLUP آردوینو: وسایل و آمادهسازی
پیش از شروع، برد را از تغذیه جدا کنید، شماره پایهها و مشخصات قطعات را با نوشته روی همان برد و دیتاشیت تطبیق دهید. یک بردبورد، سیم جامپر و کابل USB برای آزمایش اولیه کافی است؛ قطعات مخصوص این درس را نیز بر اساس توضیح مدار انتخاب کنید.
مراحل انجام آزمایش
پایه را INPUT_PULLUP تعریف کنید؛ هر بار مقدار LOW شد، رویداد فشار را ثبت کنید. برای حذف لرزش مکانیکی، تغییر پایدار پس از حدود ۳۰ میلیثانیه را بپذیرید.
- ابتدا نقشه اتصالات را روی کاغذ بکشید و اتصال زمین را مشخص کنید.
- اتصالات را با تغذیه قطعشده ببندید و یک بار کنترل کنید.
- برنامه یا مقدار ورودی را مرحلهای آزمایش کنید و نتیجه را در مانیتور سریال یا خروجی مدار ببینید.
- تنها پس از کار کردن نمونه ساده، بخش بعدی را اضافه کنید.
عیبیابی و نکته عملی
اگر رویداد برعکس انتظار است، منطق فعال در LOW را بررسی کنید. هیچگاه پایه خروجی را مستقیم به زمین اتصال ندهید.
تمرین: دو حالت ورودی یا دو مقدار زمانی متفاوت را امتحان کنید و مشاهده خود را یادداشت کنید. اگر نتیجه با انتظار فرق دارد، ابتدا تغذیه، زمین مشترک و شماره پایه را دوباره بررسی کنید.
درسهای مرتبط
آموزش millis در آردوینو؛ چشمکزن بدون delay

در این آموزش millis در آردوینو چراغ داخلی برد را بدون delay() چشمکزن میکنیم. delay() برای تمرینهای ساده خوب است، اما هنگام انتظار، اجرای بخشهای دیگر حلقه را عقب میاندازد. با بررسی ساعت برنامه در هر دور حلقه، میتوان همزمان ورودیها را نیز پیگیری کرد.
millis چگونه کار میکند؟
تابع millis() زمان سپریشده از شروع اجرای برنامه را برحسب میلیثانیه برمیگرداند. در بردهای رایج Arduino، این مقدار در نوع unsigned long نگهداری میشود. بهجای انتظار ثابت، اختلاف زمان فعلی و زمان آخرین تغییر را با فاصلهٔ دلخواه مقایسه میکنیم. این روش با سرریز شمارنده نیز به شکل معمول درست کار میکند، به شرط آنکه از تفریق unsigned و بازهٔ مناسب استفاده کنیم.
کد چشمکزن بدون delay
const int ledPin = LED_BUILTIN;
const unsigned long interval = 500;
unsigned long previousMillis = 0;
bool ledState = false;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
ledState = !ledState;
digitalWrite(ledPin, ledState ? HIGH : LOW);
}
// کارهای دیگر برنامه اینجا اجرا میشوند.
}
LED داخلی تقریباً هر نیم ثانیه تغییر وضعیت میدهد؛ بنابراین یک چرخهٔ کامل روشن و خاموش حدود یک ثانیه طول میکشد. previousMillis آخرین لحظهٔ تغییر را نگه میدارد. اگر بار پردازشی حلقه سنگین باشد، زمانبندی دقت سختافزاری نخواهد داشت. برای کارهای حساس به زمان، روش مناسب همان کاربرد را انتخاب کنید.
تفاوت با delay و خطاهای رایج
اگر در همین حلقه delay(500) بنویسیم، خواندن دکمه یا حسگر در این فاصله انجام نمیشود. نوع متغیر زمان را unsigned long بگذارید؛ int برای زمان سپریشده مناسب نیست. همچنین شرط را به صورت اختلاف زمان بنویسید، نه مقایسهٔ مستقیم زمان فعلی با جمع دو زمان. برای تمرین، دکمهٔ فشاری را بخوانید و وضعیت دکمه را در هر دور حلقه بررسی کنید.
تمرین
فاصله را به ۲۵۰ میلیثانیه تغییر دهید. سپس مقدار حسگر نور LDR را با مانیتور سریال نمایش دهید، در حالی که LED چشمک میزند. برای آشنایی با روش رسمی، نمونهٔ Blink Without Delay در مستندات آردوینو را ببینید.
آموزش سنسور نور LDR با آردوینو؛ مدار و کد

در این آموزش سنسور نور LDR با آردوینو مقدار تقریبی روشنایی محیط را میخوانیم. LDR یا مقاومت نوری با تغییر نور، مقاومتش تغییر میکند. چون آردوینو ولتاژ را در ورودی آنالوگ میسنجد، LDR را همراه یک مقاومت ثابت به شکل تقسیم ولتاژ میبندیم. این مدار برای آزمایش و تشخیص تغییر نور مناسب است؛ مقدار خروجی بهتنهایی اندازهگیری دقیق لوکس نیست.
قطعات و سیمکشی سنسور نور LDR
به آردوینو Uno R3 یا برد مشابه، LDR، مقاومت ۱۰ کیلواهم، بردبورد و سیم رابط نیاز دارید. پیش از سیمکشی برق برد را قطع کنید. یک پایهٔ LDR را به 5V و پایهٔ دیگرش را به A0 وصل کنید. مقاومت ۱۰ کیلواهم را میان A0 و GND قرار دهید. A0 نقطهٔ مشترک LDR و مقاومت است. روی بردهای ۳٫۳ ولتی از ولتاژ تغذیهٔ متناسب با همان برد استفاده کنید و به حداکثر ولتاژ مجاز ورودی توجه کنید.
کد خواندن شدت نور
const int sensorPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int lightValue = analogRead(sensorPin);
Serial.println(lightValue);
delay(250);
}
کد را بارگذاری کنید و مانیتور سریال را روی 9600 baud باز کنید. دست خود را روی LDR بگیرید و سپس چراغی را به آن نزدیک کنید؛ مقدار باید تغییر کند. با سیمکشی بالا، روشنتر شدن معمولاً ولتاژ A0 و عدد خواندهشده را افزایش میدهد. بازهٔ عددی وابسته به برد و شرایط نور است. اگر ترتیب LDR و مقاومت را عوض کنید، جهت تغییر عدد نیز برعکس میشود.
چرا مقاومت ۱۰ کیلواهم لازم است؟
بدون مقاومت ثابت، ورودی آنالوگ ولتاژ تعریفشدهای از تغییر مقاومت LDR به دست نمیآورد. مقدار ۱۰ کیلواهم نقطهٔ شروع مناسبی برای بسیاری از LDRهای آموزشی است، اما حساسیت مدار به مشخصات قطعه و نور محیط بستگی دارد. برای جزئیات اتصال، آموزش بردبورد و خواندن مقدار مقاومت را مرور کنید.
عیبیابی و تمرین
اگر مقدار ثابت است، بررسی کنید A0 واقعاً به نقطهٔ مشترک دو قطعه وصل شده باشد و دو سر قطعات در یک ردیف اشتباه بردبورد کوتاه نشده باشند. اگر عددها نویز دارند، اتصالات را محکم کنید و چند خواندن را میانگین بگیرید. چند مقدار در تاریکی و روشنایی یادداشت کنید و آستانهای میان آنها انتخاب کنید. برای کار با دادههای نمایش دادهشده آموزش مانیتور سریال و برای کنترل LED با خروجی PWM درس تنظیم روشنایی LED را ببینید.
منبع تکمیلی: مرجع analogRead آردوینو.
آموزش مانیتور سریال آردوینو؛ دیدن دادهها و عیبیابی

در این آموزش مانیتور سریال آردوینو یاد میگیریم پیامهای برنامه و مقدار ورودی آنالوگ را روی رایانه ببینیم. این ابزار برای فهمیدن وضعیت مدار و پیدا کردن خطا بسیار کاربردی است. برای انجام تمرین به برد آردوینو، کابل USB و نرمافزار Arduino IDE نیاز دارید؛ قطعهٔ اضافی لازم نیست.
مانیتور سریال آردوینو چیست؟
مانیتور سریال پنجرهای در محیط برنامهنویسی است که متن فرستادهشده از برد را نشان میدهد. در این تمرین مقدار پایهٔ A0 را میخوانیم. اگر A0 به چیزی وصل نباشد، مقدار آن ممکن است شناور و متغیر باشد؛ برای مشاهدهٔ معنادار، یک پتانسیومتر را مانند درس خواندن ورودی آنالوگ به A0 وصل کنید. اتصال پایههای کناری پتانسیومتر به 5V و GND و پایهٔ میانی به A0 برای بردهای ۵ ولتی مانند Uno R3 مناسب است؛ مشخصات برد خود را بررسی کنید.
کد نمایش مقدار ورودی آنالوگ
void setup() {
Serial.begin(9600);
}
void loop() {
int value = analogRead(A0);
Serial.println(value);
delay(200);
}
برنامه را روی برد بارگذاری کنید، سپس Serial Monitor را باز کنید و سرعت پنجره را روی 9600 baud بگذارید. عددها با چرخاندن پتانسیومتر تغییر میکنند. Serial.begin(9600) ارتباط را آغاز میکند و Serial.println مقدار را همراه با رفتن به خط بعد میفرستد. در Uno R3 مقدار خواندهشده معمولاً در بازهٔ صفر تا ۱۰۲۳ است؛ دقت ADC در بردهای دیگر میتواند متفاوت باشد.
اگر چیزی دیده نمیشود
ابتدا برد و درگاه درست را در IDE انتخاب کنید. سرعت مانیتور باید با کد یکی باشد. مطمئن شوید کد بدون خطا بارگذاری شده و کابل USB انتقال داده را پشتیبانی میکند. اگر عددها بیقاعده تغییر میکنند، اتصال A0 و زمین مشترک را بررسی کنید. از اتصال مستقیم ولتاژ بالاتر از محدودهٔ مجاز ورودی برد خودداری کنید.
تمرین و مسیر بعدی
مقدار ورودی را هر ۲۰۰ میلیثانیه چاپ کنید و سپس فاصله را به ۱۰۰۰ تغییر دهید. تفاوت سرعت نمایش را ببینید. پس از این تمرین، در درس حسگر نور LDR همین پنجره را برای مشاهدهٔ نور به کار میبریم. برای نمایش داده بدون توقف برنامه، درس millis را بخوانید.
منبع تکمیلی: نمونههای ارتباط سریال آردوینو.