360-Grad-PWM-Drehgeberausbruch

      360-Grad-PWM-Drehgeberausbruch

      USD
      Model #
      Quantity
      qty limit cart limit

      Versandkostenschätzer

      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.

      Beschreibung

      Diese Art von Schalter ist ein Inkremental-Drehgeber. Tatsächlich ist es aufgrund seiner geringen Kosten und seiner Fähigkeit, Signale bereitzustellen, die leicht interpretiert werden können, um bewegungsbezogene Informationen wie Geschwindigkeit bereitzustellen, der am weitesten verbreitete aller Drehgeber.

      Durch Drehen kann der Drehgeber die Ausgangsimpulsfrequenz während der Drehung in positiver und umgekehrter Richtung zählen, im Gegensatz zu einem Drehpotentiometerzähler ohne Zählbegrenzung. Mit der Taste am Drehgeber kann ab Null auf den Ausgangszustand zurückgesetzt werden.

      Code testen

      int redPin = 2;
      int YellowPin = 3;
      int greenPin = 4;
      int aPin = 6;
      int bPin = 7;
      int buttonPin = 5;
      int state = 0;
      int longPeriod = 5000; // Zeit bei grün oder rot
      int shortPeriod = 700; // Zeitraum beim Ändern
      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 (HIGH, HIGH, HIGH);
        }
      sonst
        {
      int change = getEncoderTurn ();
      int newPeriod = longPeriod + (Änderung * 1000);
      if (newPeriod> = 1000 && newPeriod <= 10000)
          {
      longPeriod = newPeriod;
          }
      if (count> targetCount)
          {
      setState ();
      count = 0;
          }
        }
      Verzögerung (1);
      }
      int getEncoderTurn ()
      {

      // -1, 0 oder +1 zurückgeben
      statisch int oldA = LOW;
      statisch int oldB = LOW;
      int result = 0;
      int newA = digitalRead (aPin);
      int newB = digitalRead (bPin);
      if (newA! = oldA || newB! = oldB)
        {
      // etwas hat sich verändert
      if (oldA == LOW && newA == HIGH)
          {
      Ergebnis = - (oldB * 2 - 1);
          }
        }
      oldA = newA;
      oldB = newB;
      Ergebnis zurückgeben;
      }
      int setState ()
        {
      if (state == 0)
          {
      setLights (HIGH, LOW, LOW);
      targetCount = longPeriod;
      Zustand = 1;
          }
      sonst wenn (state == 1)
          {
      setLights (HIGH, HIGH, LOW);
      targetCount = shortPeriod;
      Zustand = 2;
          }
      sonst wenn (state == 2)
          {
      setLights (LOW, LOW, HIGH);
      targetCount = longPeriod;
      Zustand = 3;
          }
      sonst wenn (state == 3)
          {
      setLights (LOW, HIGH, LOW);
      targetCount = shortPeriod;
      Zustand = 0;
          }
        }
      void setLights (int rot, int gelb, int grün)
      {
      digitalWrite (redPin, rot);
      digitalWrite (yellowPin, gelb);
      digitalWrite (greenPin, grün);