Bộ mã hóa quay PWM 360 độ breakout

      Bộ mã hóa quay PWM 360 độ breakout

      USD
      Model #
      Quantity
      qty limit cart limit

      Công cụ ước tính chi phí vận chuyển

      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.

      Mô tả

      Loại công tắc này là bộ mã hóa xoay gia tăng.  Trên thực tế, nó là bộ mã hóa quay được sử dụng rộng rãi nhất do chi phí thấp và khả năng cung cấp tín hiệu có thể dễ dàng giải thích để cung cấp thông tin liên quan đến chuyển động như vận tốc.

      Bằng cách xoay, bộ mã hóa quay có thể đếm tần số xung đầu ra theo hướng tích cực và đảo ngược trong quá trình quay, không giống như bộ đếm chiết áp quay mà không giới hạn. Với nút trên bộ mã hóa xoay, nó có thể được đặt lại về trạng thái ban đầu bắt đầu từ 0.

      Mã thử nghiệm

      int redPin = 2;
      int yellowPin = 3;
      int greenPin = 4;
      int aPin = 6;
      int bPin = 7;
      nút intPin = 5;
      trạng thái int = 0;
      int longPeriod = 5000; Thời gian ở màu xanh lá cây hoặc đỏ
      int shortPeriod = 700; Khoảng thời gian khi thay đổi
      int targetCount = shortPeriod;
      số int = 0;
      thiết lập void()
      {
      pinMode(aPin, ĐẦU VÀO);
      pinMode(bPin, ĐẦU VÀO);
      pinMode(buttonPin, INPUT);
      pinMode(redPin, OUTPUT);
      pinMode (yellowPin, OUTPUT);
      pinMode (greenPin, OUTPUT);
      }
      void loop()
      {
      đếm++;
      nếu (digitalRead(buttonPin))
        {
      setLights (CAO, CAO, CAO);
        }
      Khác
        {
      int thay đổi = getEncoderTurn();
      int newPeriod = longPeriod + (thay đổi * 1000);
      nếu (newPeriod >= 1000 & newPeriod <= 10000)
          {
      longPeriod = newPeriod;
          }
      nếu (đếm > targetCount)
          {
      setState();
      đếm = 0;
          }
        }
      chậm trễ(1);
      }
      int getEncoderTurn()
      {

      trả lại -1, 0 hoặc +1
      tĩnh int oldA = LOW;
      tĩnh int oldB = LOW;
      kết quả int = 0;
      int newA = digitalRead(aPin);
      int newB = digitalRead(bPin);
      nếu (newA != oldA || newB != oldB)
        {
      một cái gì đó đã thay đổi
      nếu (oldA == LOW & newA == CAO)
          {
      kết quả = -(oldB * 2 - 1);
          }
        }
      oldA = newA;
      oldB = newB;
      kết quả trả lại;
      }
      int setState()
        {
      nếu (trạng thái == 0)
          {
      setLights (CAO, THẤP, THẤP);
      targetCount = longPeriod;
      tiểu bang = 1;
          }
      khác nếu (nhà nước == 1)
          {
      setLights (CAO, CAO, THẤP);
      targetCount = shortPeriod;
      tiểu bang = 2;
          }
      khác nếu (nhà nước == 2)
          {
      setLights (THẤP, THẤP, CAO);
      targetCount = longPeriod;
      tiểu bang = 3;
          }
      khác nếu (nhà nước == 3)
          {
      setLights (THẤP, CAO, THẤP);
      targetCount = shortPeriod;
      tiểu bang = 0;
          }
        }
      void setLights (int red, int yellow, int green) void setLights(int red, int yellow, int green) void setLights(int red, int yellow, int green) void set
      {
      digitalWrite(redPin, màu đỏ);
      digitalWrite(yellowPin, màu vàng);
      digitalWrite(greenPin, màu xanh lá cây);