جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
جهاز التشفير الدوار هو مكون إلكتروني قادر على مراقبة الحركة والموقع عند الدوران. يستخدم المشفر الدوار أجهزة استشعار بصرية يمكنها توليد نبضات عندما يدور المشفر الدوار. يمكن أيضًا استخدام تطبيق المشفر الدوار كجهاز مراقبة حركة ميكانيكي أو آلي لاختيار القائمة على الشاشة. يحتوي المشفر الدوار على ناتجين بحيث يمكنه التمييز بين الدوران السلبي (CW) والإيجابي (CCW) ولديه أيضًا زر واحد.
الخطوة 1: التدفق النبضي لجهاز التشفير الدوار
إن تدفق النبض الناتج عن المشفر الدوار التالي يشبه الصورة أعلاه.
الخطوة 2: Pinout of Rotary Encoder
تفسير:
- 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 = قيمة زر بدء الدوار عند عدم الضغط عليه