جدول المحتويات:

البرنامج التعليمي للتشفير الدوراني مع Arduino: 6 خطوات
البرنامج التعليمي للتشفير الدوراني مع Arduino: 6 خطوات

فيديو: البرنامج التعليمي للتشفير الدوراني مع Arduino: 6 خطوات

فيديو: البرنامج التعليمي للتشفير الدوراني مع Arduino: 6 خطوات
فيديو: Учебное пособие по Arduino: Учебное пособие по поворотному энкодеру на Arduino Mega с дисплеем Nokia 5110 2024, شهر نوفمبر
Anonim
البرنامج التعليمي للتشفير الروتاري مع الأردوينو
البرنامج التعليمي للتشفير الروتاري مع الأردوينو

جهاز التشفير الدوار هو مكون إلكتروني قادر على مراقبة الحركة والموقع عند الدوران. يستخدم المشفر الدوار أجهزة استشعار بصرية يمكنها توليد نبضات عندما يدور المشفر الدوار. يمكن أيضًا استخدام تطبيق المشفر الدوار كجهاز مراقبة حركة ميكانيكي أو آلي لاختيار القائمة على الشاشة. يحتوي المشفر الدوار على ناتجين بحيث يمكنه التمييز بين الدوران السلبي (CW) والإيجابي (CCW) ولديه أيضًا زر واحد.

الخطوة 1: التدفق النبضي لجهاز التشفير الدوار

التدفق النبضي لجهاز التشفير الدوارة
التدفق النبضي لجهاز التشفير الدوارة

إن تدفق النبض الناتج عن المشفر الدوار التالي يشبه الصورة أعلاه.

الخطوة 2: Pinout of Rotary Encoder

Pinout من الروتاري التشفير
Pinout من الروتاري التشفير

تفسير:

  • GND GND
  • + + 5 فولت
  • زر SW لجهاز التشفير الدوار عند الضغط عليه
  • بيانات DT
  • بيانات CLK 2

يجب توصيل أحد دبابيس DT أو CLK بقاعدة المقاطعة في Arduino Uno ، أو أن كلا من DT و CLK متصلان بدبوس المقاطعة.

الخطوة 3: التخطيطي

تخطيطي
تخطيطي
  • GND à GND اردوينو أونو
  • + à + 5V اردوينو أونو
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

الخطوة 4: الكود

الشفرة
الشفرة

في البرنامج التعليمي التالي ، والذي سيتم استخدامه كمقاطعة هو PIN 2 من Arduino Uno ، بينما يتم استخدام PIN 3 فقط كمدخل منتظم.

# تعريف encoder0PinA 2 # تعريف encoder0PinB 3 # تعريف encoder0Btn 4 int encoder0Pos = 0 ؛ إعداد باطل () {Serial.begin (9600) ؛ pinMode (encoder0PinA ، INPUT_PULLUP) ؛ pinMode (encoder0PinB ، INPUT_PULLUP) ؛ pinMode (encoder0Btn ، INPUT_PULLUP) ؛ attachInterrupt (0، doEncoder، CHANGE)؛ } int valRotary، lastValRotary؛ حلقة باطلة () {int btn = digitalRead (encoder0Btn) ؛ Serial.print (btn) ؛ Serial.print ("") ؛ Serial.print (ValRotary) ؛ if (valRotary> lastValRotary) {Serial.print ("CW") ؛ } إذا (valRotary {

Serial.print ("CCW") ؛

} lastValRotary = valRotary ؛ Serial.println ("") ؛ تأخير (250) ؛ } doEncoder () باطل {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++ ؛ } آخر {encoder0Pos-- ؛ } valRotary = encoder0Pos / 2.5 ؛ }

في السطر 10 من الرسم أعلاه يستخدم لتمكين مقاطعة pin 2 Arduino Uno. في دالة "doEncoder" يتم حسابها من المشفر الدوار. إذا كانت قيمة DT و CLK (مقاطعة دبوس Arduino Uno) هي نفسها ، فسيتم زيادة / إضافة متغير "encoder0Pos" ، بالإضافة إلى هذا الشرط ، يتم إنقاص متغير "encoder0Pos".

الخطوة الخامسة: الشرح

قيمة ValRotary هي قيمة عدد الخطوات التي تم تشغيلها. يتم الحصول على قيمة ValRotary من قيمة قراءة مشفر المستشعر الدوار مقسومة على 2.5. يتم الحصول على قيمة 2.5 من الاختبار ، نظرًا لأن خطوة واحدة من المشفر الدوار قد تتجاوز 1 ، لذا اقسم على 2.5 لقيمتها وفقًا للخطوة وكذلك إضافة تأخير القراءة.

بينما في السطر 19-25 هو برنامج لتحديد ما إذا كان المشفر الدوار CW أو CCW. تفسير الأسطر 19-25 هو عندما تكون قراءات المشفر الدوار الحالية أكبر من البيانات الدورانية السابقة ثم يتم التعبير عنها على أنها CW. بينما إذا كانت القراءة الحالية أصغر من القراءة السابقة ، فسيتم ذكرها على أنها CCW.

الخطوة 6: الإخراج

انتاج |
انتاج |

1 = قيمة زر بدء الدوار عند عدم الضغط عليه

موصى به: