Breakout رمزگذار روتاری 360 درجه PWM

      Breakout رمزگذار روتاری 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؛
      int yellowPin = 3 ؛
      int greenPin = 4 ؛
      int aPin = 6 ؛
      int bPin = 7؛
      int buttonPin = 5؛
      حالت int = 0؛
      int longPeriod = 5000 ؛ // زمان در سبز یا قرمز است
      int shortPeriod = 700؛ // دوره زمانی هنگام تغییر
      int targetCount = shortPeriod؛
      تعداد int = 0؛
      تنظیم باطل ()
      {
      pinMode (aPin ، INPUT) ؛
      pinMode (bPin ، INPUT) ؛
      pinMode (دکمه پین ​​، ورودی) ؛
      pinMode (redPin ، OUTPUT) ؛
      pinMode (زرد پین ، خروجی) ؛
      pinMode (greenPin ، OUTPUT) ؛
      }
      حلقه باطل ()
      {
      تعداد ++؛
      if (digitalRead (buttonPin))
        {
      setLights (HIGH ، HIGH ، HIGH) ؛
        }
      دیگر
        {
      int change = getEncoderTurn ()؛
      int newPeriod = longPeriod + (تغییر * 1000)؛
      if (newPeriod> = 1000 && newPeriod <= 10000)
          {
      longPeriod = newPeriod؛
          }
      if (شمارش> targetCount)
          {
      setState ()؛
      تعداد = 0؛
          }
        }
      تأخیر (1)
      }
      int getEncoderTurn ()
      {

      // بازگشت -1 ، 0 یا 1+
      static int oldA = کم ؛
      static int oldB = کم ؛
      نتیجه int = 0؛
      int newA = digitalRead (aPin) ؛
      int newB = digitalRead (bPin) ؛
      if (newA! = oldA || newB! = oldB)
        {
      // چیزی تغییر کرده است
      if (oldA == کم && newA == HIGH)
          {
      نتیجه = - (oldB * 2 - 1) ؛
          }
        }
      oldA = newA ؛
      oldB = newB ؛
      نتیجه بازگشت؛
      }
      int setState ()
        {
      if (حالت == 0)
          {
      setLights (بالا ، پایین ، کم)؛
      targetCount = longPeriod؛
      حالت = 1؛
          }
      در غیر این صورت (حالت == 1)
          {
      setLights (بالا ، بالا ، پایین) ؛
      targetCount = shortPeriod؛
      حالت = 2؛
          }
      در غیر این صورت (حالت == 2)
          {
      setLights (کم ، کم ، زیاد) ؛
      targetCount = longPeriod؛
      حالت = 3؛
          }
      در غیر این صورت (حالت == 3)
          {
      setLights (کم ، زیاد ، کم)؛
      targetCount = shortPeriod؛
      حالت = 0؛
          }
        }
      void setLights (int قرمز ، int زرد ، int سبز)
      {
      digitalWrite (redPin ، قرمز) ؛
      digitalWrite (زرد پین ، زرد) ؛
      digitalWrite (سبز پین ، سبز) ؛