360 درجة PWM الدوارة التشفير الاختراق

      360 درجة PWM الدوارة التشفير الاختراق

      USD
      Model #
      Quantity
      qty limit cart limit

      مُقدر تكلفة الشحن

      Note: You must have items in your cart already before you can see the estimated costs to ship your cart. This shipping tool will estimate the total shipping cost for your entire basket.

      وصف

      هذا النوع من التبديل هو مُشفر دوار تزايدي.  في واقع الأمر ، هو الأكثر استخداما من جميع التشفير الدوارة بسبب انخفاض تكلفتها والقدرة على توفير إشارات التي يمكن تفسيرها بسهولة لتوفير المعلومات ذات الصلة بالحركة مثل السرعة.

      بالتناوب، يمكن للترميز الدوار عد تردد نبض الإخراج في الاتجاه الإيجابي وعكس أثناء الدوران، على عكس عداد التقوية الدوارة دون احتساب القيد. مع الزر الموجود على أداة الترميز الدوارة، يمكن إعادة تعيين إلى حالته الأولية بدءًا من الصفر.

      اختبار التعليمات البرمجية

      int redPin = 2؛
      صفراء intPin = 3;
      int greenPin = 4؛
      int aPin = 6؛
      int bPin = 7؛
      زر IntPin = 5؛
      حالة int = 0؛
      int longPeriod = 5000; الوقت باللون الأخضر أو الأحمر
      int shortPeriod = 700؛ الفترة الزمنية عند التغيير
      عدد الأهداف int = shortPeriod؛
      عدد عدد النت = 0؛
      إعداد الفراغ()
      {
      pinMode (aPin، INPUT)؛
      pinMode (bPin ، INPUT) ؛
      pinMode (buttonPin ، INPUT) ؛
      pinMode (redPin، إخراج)؛
      pinMode (yellowPin ، إخراج) ؛
      pinMode (greenPin ، إخراج) ؛
      }
      حلقة فارغة()
      {
      العد + + ، ولكن لا يمكن أن يكون لها أي شيء
      إذا (digitalRead(زرPin))
        {
      setLights (عالية ، عالية ، عالية) ؛
        }
      اخر
        {
      تغيير int = getEncoderTurn();
      int newPeriod = longPeriod + (تغيير * 1000);
      إذا كان (> جديد = 1000 & جديدPeriod < = 10000)
          {
      longPeriod = جديدPeriod;
          }
      إذا (عدد > الهدف عدد)
          {
      setState()؛
      العدد = 0؛
          }
        }
      التأخير (1)؛
      }
      int getEncoderTurn()
      {

      إرجاع -1 أو 0 أو +1
      ثابت منذ وقتين أو قديمA = منخفض;
      ثابت int oldB = منخفض;
      النتيجة int = 0؛
      int newA = digitalRead(aPin);
      int newB = digitalRead(bPin);
      إذا (newA!= oldA || newB!= oldB)
        {
      لقد تغير شيء
      إذا (oldA == منخفض & newA == عالية)
          {
      النتيجة = -(oldB * 2 - 1)؛
          }
        }
      oldA = newA؛
      oldB = newB؛
      عودة نتيجة؛
      }
      مجموعة intState()
        {
      إذا (الحالة == 0)
          {
      setLights (عالية ، منخفضة ، منخفضة) ؛
      targetCount = longPeriod;
      الحالة = 1؛
          }
      آخر إذا (الحالة == 1)
          {
      setLights (عالية ، عالية ، منخفضة) ؛
      targetCount = shortPeriod;
      الحالة = 2؛
          }
      آخر إذا (الحالة == 2)
          {
      setLights (منخفض، منخفض، مرتفع)؛
      targetCount = longPeriod;
      الحالة = 3؛
          }
      آخر إذا (الحالة == 3)
          {
      setLights (منخفض ، مرتفع ، منخفض) ؛
      targetCount = shortPeriod;
      الحالة = 0؛
          }
        }
      فراغ setLights (int الأحمر، أصفر int، أخضر int)
      {
      digitalWrite (redPin ، أحمر) ؛
      digitalWrite (yellowPin، أصفر)؛
      digitalWrite (greenPin ، الأخضر) ؛