Поворотный энкодер с ШИМ на 360 градусов

      Поворотный энкодер с ШИМ на 360 градусов

      USD
      Model #
      Quantity

      Add Warranty Plus +8%

      Standard Warranty (included in purchase price): 12 month warranty due to device malfunctions when it is used within the described conditions/limits.

      Warranty Plus: Your product will be replaced (including free shipping) with a new one within 12 months of purchase, even if it is damaged due to improper wiring, incorrect usage, a problem in the electrical installation or any other circumstance.

      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 state = 0;
      int longPeriod = 5000; // Время на зеленом или красном
      int shortPeriod = 700; // Период времени при изменении
      int targetCount = shortPeriod;
      int count = 0;
      установка void ()
      {
      pinMode (aPin, INPUT);
      pinMode (bPin, ВХОД);
      pinMode (buttonPin, ВВОД);
      pinMode (redPin, ВЫХОД);
      pinMode (yellowPin, ВЫХОД);
      pinMode (greenPin, ВЫХОД);
      }
      пустой цикл ()
      {
      count ++;
      если (digitalRead (buttonPin))
        {
      setLights (HIGH, HIGH, HIGH);
        }
      еще
        {
      int change = getEncoderTurn ();
      int newPeriod = longPeriod + (изменение * 1000);
      если (newPeriod> = 1000 && newPeriod <= 10000)
          {
      longPeriod = newPeriod;
          }
      если (количество> targetCount)
          {
      setState ();
      count = 0;
          }
        }
      задержка (1);
      }
      int getEncoderTurn ()
      {

      // возвращаем -1, 0 или +1
      статический int oldA = LOW;
      статический int oldB = LOW;
      int результат = 0;
      int newA = digitalRead (aPin);
      int newB = digitalRead (bPin);
      если (newA! = oldA || newB! = oldB)
        {
      // что-то изменилось
      если (oldA == LOW && newA == HIGH)
          {
      результат = - (oldB * 2 - 1);
          }
        }
      oldA = newA;
      oldB = newB;
      вернуть результат;
      }
      int setState ()
        {
      если (состояние == 0)
          {
      setLights (ВЫСОКИЙ, НИЗКИЙ, НИЗКИЙ);
      targetCount = longPeriod;
      состояние = 1;
          }
      иначе, если (состояние == 1)
          {
      setLights (ВЫСОКИЙ, ВЫСОКИЙ, НИЗКИЙ);
      targetCount = shortPeriod;
      состояние = 2;
          }
      иначе, если (состояние == 2)
          {
      setLights (LOW, LOW, HIGH);
      targetCount = longPeriod;
      состояние = 3;
          }
      иначе, если (состояние == 3)
          {
      setLights (НИЗКИЙ, ВЫСОКИЙ, НИЗКИЙ);
      targetCount = shortPeriod;
      состояние = 0;
          }
        }
      void setLights (int красный, int желтый, int зеленый)
      {
      digitalWrite (redPin, красный);
      digitalWrite (yellowPin, желтый);
      digitalWrite (greenPin, зеленый);