Ruptura del codificador giratorio PWM de 360 grados

      Ruptura del codificador giratorio PWM de 360 grados

      USD
      Model #
      Quantity
      qty limit cart limit

      Estimador de costos de envío

      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.

      Descripción

      Este tipo de interruptor es un codificador giratorio incremental.  De hecho, es el más utilizado de todos los codificadores rotativos debido a su bajo costo y capacidad para proporcionar señales que se pueden interpretar fácilmente para proporcionar información relacionada con el movimiento, como la velocidad.

      Al girar, el codificador giratorio puede contar la frecuencia del pulso de salida en dirección positiva e inversa durante la rotación, a diferencia de un contador de potenciómetro rotativo sin contar la limitación. Con el botón en el codificador giratorio, se puede restablecer a su estado inicial a partir de cero.

      Código de prueba

      int redPin 2;
      int yellowPin n.o 3;
      int greenPin n.o 4;
      int aPin n.o 6;
      int bPin 7;
      int buttonPin n.o 5;
      estado int 0;
      int longPeriod 5000; Tiempo en verde o rojo
      int shortPeriod 700; Período de tiempo al cambiar
      int targetCount á shortPeriod;
      int count á 0;
      void setup()
      {
      pinMode(aPin, INPUT);
      pinMode(bPin, INPUT);
      pinMode(buttonPin, INPUT);
      pinMode(redPin, OUTPUT);
      pinMode(yellowPin, OUTPUT);
      pinMode(greenPin, OUTPUT);
      }
      void loop()
      {
      count++;
      if (digitalRead(buttonPin))
        {
      setLights (ALTO, ALTO, ALTO);
        }
      Más
        {
      int change á getEncoderTurn();
      int newPeriod á longPeriod + (cambio * 1000);
      if (newPeriod > 1000 && newPeriod < 10000)
          {
      longPeriod á newPeriod;
          }
      if (cuenta > targetCount)
          {
      setState();
      conteo 0;
          }
        }
      retraso(1);
      }
      int getEncoderTurn()
      {

      retorno -1, 0 o +1
      static int oldA - LOW;
      static int oldB - LOW;
      Int resultado á 0;
      int newA - digitalRead(aPin);
      int newB - digitalRead(bPin);
      if (newA !- oldA || newB !- oldB)
        {
      algo ha cambiado
      si (oldA - LOW && newA - HIGH)
          {
      resultado -(oldB * 2 - 1);
          }
        }
      oldA - newA;
      oldB - newB;
      resultado de retorno;
      }
      int setState()
        {
      si (estado 0)
          {
      setLights (ALTO, BAJO, BAJO);
      targetCount á longPeriod;
      estado 1;
          }
      else if (estado n.o 1)
          {
      setLights (ALTO, ALTO, BAJO);
      targetCount - shortPeriod;
      estado 2;
          }
      else if (estado n.o 2)
          {
      setLights (LOW, LOW, HIGH);
      targetCount á longPeriod;
      estado 3;
          }
      else if (estado n.o 3)
          {
      setLights (LOW, HIGH, LOW);
      targetCount - shortPeriod;
      estado 0;
          }
        }
      void setLights(int rojo, int amarillo, int green)
      {
      digitalWrite(redPin, rojo);
      digitalWrite(yellowPin, yellow);
      digitalWrite(greenPin, green);