توسعه دانشمقالات

روتاری انکودر ESP32؛ آموزش اتصال، کدنویسی و تشخیص جهت

روتاری انکودر ESP32 یکی از روش‌های کاربردی برای اضافه کردن
کنترل چرخشی به پروژه‌های مبتنی بر ESP32 است. با استفاده از یک انکودر چرخشی
می‌توان جهت حرکت، تعداد پله‌ها و فشار دادن دکمه داخلی ماژول را تشخیص داد.

در این آموزش نحوه اتصال ماژول KY-040، تشخیص جهت چرخش، شمارش پله‌ها،
استفاده از کلید فشاری و روش‌های Polling و Interrupt را بررسی می‌کنیم.

📌 انکودر چرخشی و ESP32 در یک نگاه

نوع قطعه
Rotary Encoder
ماژول رایج
KY-040
خروجی چرخش
A / B
کلید فشاری
SW
روش خواندن
Polling / Interrupt
میکروکنترلر
ESP32

روتاری انکودر ESP32 چیست؟

Rotary Encoder ESP32 در واقع ترکیب یک انکودر افزایشی
با برد ESP32 است. این قطعه به جای ارائه یک ولتاژ متغیر مانند پتانسیومتر،
سیگنال‌های دیجیتال تولید می‌کند که از آن‌ها برای تشخیص حرکت و جهت استفاده می‌شود.

دو خروجی اصلی انکودر معمولاً با نام‌های A و B شناخته می‌شوند.
اختلاف فاز این دو سیگنال به میکروکنترلر اجازه می‌دهد جهت چرخش محور را مشخص کند.

محصولات این مقاله
برد توسعه با هسته ESP32-S
برد توسعه با هسته ESP32-S


مشاهده و خرید

انکودر چرخشی چگونه کار می کند؟

در هنگام چرخاندن محور، وضعیت دو کانال به ترتیب‌های مختلف تغییر می‌کند.
با بررسی این تغییرات می‌توان حرکت را به افزایش یا کاهش یک شمارنده تبدیل کرد.

روتاری انکودر ESP32

روتاری انکودر ESP32

روتاری انکودر ESP32

💡 چرا دو کانال A و B داریم؟

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

اتصال KY-040 به ESP32

یکی از ساده‌ترین روش‌ها برای ساخت یک کنترلر چرخشی با ESP32 استفاده از
ماژول KY-040 است. این ماژول معمولاً دارای CLK، DT، SW، VCC و GND است.

پایه اتصال وظیفه
+ 3.3V تغذیه
GND GND زمین
CLK GPIO25 کانال A
DT GPIO26 کانال B
SW GPIO27 کلید

پایه های انکودر در ESP32

در این مثال GPIO25 برای CLK، GPIO26 برای DT و GPIO27 برای SW در نظر گرفته شده است.
این شماره‌ها صرفاً نمونه هستند و در پروژه واقعی باید قابلیت‌ها و محدودیت‌های
برد ESP32 خود را بررسی کنید.

روتاری انکودر ESP32

کدنویسی انکودر با روش Polling

برای پروژه‌های ساده می‌توان وضعیت پایه‌ها را در حلقه اصلی برنامه بررسی کرد.
این روش برای آموزش و کاربردهای سبک، ساختار ساده‌ای دارد.

#define CLK_PIN 25
#define DT_PIN 26
#define SW_PIN 27

int counter = 0;
int lastStateCLK;

void setup() {
  Serial.begin(115200);

  pinMode(CLK_PIN, INPUT_PULLUP);
  pinMode(DT_PIN, INPUT_PULLUP);
  pinMode(SW_PIN, INPUT_PULLUP);

  lastStateCLK = digitalRead(CLK_PIN);
}

void loop() {

  int currentStateCLK = digitalRead(CLK_PIN);

  if (currentStateCLK != lastStateCLK &&
      currentStateCLK == HIGH) {

    if (digitalRead(DT_PIN) != currentStateCLK) {
      counter--;
    } else {
      counter++;
    }

    Serial.println(counter);
  }

  lastStateCLK = currentStateCLK;

  if (digitalRead(SW_PIN) == LOW) {
    Serial.println("Button Pressed");
    delay(200);
  }
}

کدنویسی Rotary Encoder با Interrupt

اگر پروژه شما به ثبت تغییرات سریع‌تر نیاز دارد، می‌توان از Interrupt استفاده کرد.
در این روش ESP32 هنگام تغییر وضعیت GPIO، تابع مربوط به وقفه را اجرا می‌کند.

این روش برای پروژه‌هایی که هم‌زمان وظایف دیگری نیز روی میکروکنترلر اجرا می‌شود،
می‌تواند انتخاب مناسب‌تری باشد.

Polling یا Interrupt؛ کدام بهتر است؟

ویژگی Polling Interrupt
سادگی ✅ زیاد متوسط
پروژه آموزشی ✅ مناسب مناسب
سرعت بالا محدودتر ✅ مناسب‌تر
پیچیدگی کدنویسی کم بیشتر

دکمه فشاری KY-040 چیست؟

بسیاری از ماژول‌های KY-040 علاوه بر خروجی‌های چرخشی، یک کلید فشاری نیز دارند.
این کلید با نام SW مشخص می‌شود و می‌توان از آن برای انتخاب گزینه، ورود به منو
یا اجرای یک فرمان استفاده کرد.

محصولات این مقاله
ماژول روتاری انکودر


مشاهده و خرید

رفع مشکل جهت اشتباه چرخش

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

💡 نکته عیب‌یابی

اگر مقدار شمارنده هنگام چرخش پرش دارد، علاوه بر منطق نرم‌افزار،
وضعیت مکانیکی انکودر و Debounce را نیز بررسی کنید.

🛠️

برای انتخاب قطعه و طراحی پروژه نیاز به مشاوره دارید؟

اگر در انتخاب قطعات الکترونیکی، Arduino، سنسورها، ماژول‌ها یا نحوه اتصال
آن‌ها به مدار سوالی دارید، می‌توانید برای دریافت مشاوره فنی
با کارشناسان پژوهشگران تماس بگیرید.

قبل از خرید یا ساخت پروژه، انتخاب درست قطعه می‌تواند از هزینه‌های اضافی،
خطاهای طراحی و آسیب به تجهیزات جلوگیری کند.

📞 تماس برای مشاوره فنی

کاربردهای انکودر چرخشی ESP32

ترکیب این انکودر با ESP32 در پروژه‌هایی که به کنترل یک پارامتر توسط کاربر
نیاز دارند بسیار مفید است.

  • کنترل حجم صدا
  • تنظیم سرعت موتور
  • انتخاب گزینه‌های منو
  • تنظیم روشنایی
  • تنظیم دما
  • انتخاب فرکانس
  • رابط کاربری تجهیزات الکترونیکیروتاری انکودر ESP32

برای این پروژه چه قطعاتی لازم است؟

برای ساخت یک پروژه کامل ممکن است به ESP32، KY-040، بردبورد، سیم جامپر،
نمایشگر و سایر قطعات الکترونیکی نیاز داشته باشید.

🛒 قطعات پروژه را از پژوهشگران تهیه کنید

برای تهیه ESP32، ماژول‌های انکودر، سنسورها و سایر تجهیزات الکترونیکی
می‌توانید محصولات موجود در فروشگاه پژوهشگران را بررسی کنید.

🔧 مشاهده قطعات الکترونیکی

مقالات بیشتر درباره ESP32 و الکترونیک

📚 مقالات بیشتر پژوهشگران

آموزش‌های بیشتر درباره ESP32، آردوینو، سنسورها، ماژول‌ها و پروژه‌های
الکترونیکی را در مجموعه مقالات پژوهشگران ببینید.

📖 مشاهده همه مقالات

مشاوره فنی برای انتخاب قطعه

🛠️ برای انتخاب قطعه نیاز به مشاوره دارید؟

اگر برای انتخاب ESP32، KY-040، سنسورها، ماژول‌ها یا سایر قطعات پروژه
خود سوال دارید، قبل از خرید و طراحی مدار می‌توانید برای مشاوره فنی با
مجموعه پژوهشگران در ارتباط باشید.

سوالات متداول انکودر چرخشی و ESP32

روتاری انکودر ESP32 چگونه به برد متصل می شود؟

در یک اتصال نمونه می‌توان CLK و DT را به دو GPIO ورودی و SW را به یک
GPIO دیگر متصل کرد. در این مقاله از GPIO25، GPIO26 و GPIO27 استفاده شده است.

آیا KY-040 برای ESP32 مناسب است؟

بله، KY-040 یکی از ماژول‌های متداول برای پروژه‌های مبتنی بر میکروکنترلر
است و می‌توان از آن برای ساخت رابط‌های چرخشی استفاده کرد.

Polling بهتر است یا Interrupt؟

برای پروژه‌های ساده Polling راحت‌تر است، اما در پروژه‌های سریع‌تر یا
زمانی که پردازنده وظایف دیگری دارد، Interrupt گزینه مناسب‌تری است.

جمع بندی

استفاده از یک روتاری انکودر در کنار ESP32 روشی ساده برای ساخت رابط‌های
کاربری و کنترل پارامترهای مختلف است. دو کانال A و B جهت و مقدار حرکت را
مشخص می‌کنند و کلید SW نیز امکان اجرای یک فرمان جداگانه را فراهم می‌کند.

برای پروژه‌های ساده، Polling نقطه شروع خوبی است و برای کاربردهای سریع‌تر
می‌توان سراغ Interrupt رفت. انتخاب GPIO مناسب، توجه به Debounce و بررسی
مشخصات دقیق ماژول نیز در عملکرد نهایی اهمیت دارد.

💬 تجربه شما از کار با انکودر چیست؟

اگر قبلاً با KY-040، ESP32 یا انکودرهای چرخشی کار کرده‌اید،
تجربه‌تان را در بخش نظرات با ما و سایر کاربران به اشتراک بگذارید.

اگر با مشکل پرش شمارش، تشخیص جهت یا Debounce روبه‌رو شده‌اید،
راه‌حل خودتان را هم بنویسید؛ شاید تجربه شما مشکل یک کاربر دیگر را حل کند.

کارشناس فنی و طراح محصول

“یادگیری الکترونیک و رباتیک مثل وارد شدن به یک جنگل تاریک و بزرگ است؛ اما نگران نباشید، من اینجا هستم تا چراغ‌قوه را دستتان بدهم! کار من ساده‌سازی مفاهیم سختِ مهندسی، نوشتن مقالات پایه‌ای و طراحی نقشه‌های راهی است که به شما بگوید از کجا شروع کنید و چطور قدم‌به‌قدم پیش بروید. فرقی نمی‌کند دانش‌آموز باشید یا دانشجوی ترم اول دانشگاه؛ آغوش پژوهشگران همیشه به روی کنجکاوی‌های شما باز است!”

نوشته های مشابه

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

دکمه بازگشت به بالا