KY-040 Drehgeber Rotary Encoder Modul


KY-040 Drehgeber Rotary Encoder Modul

Artikel-Nr.: A-15.0006

Auf Lager
Lieferzeit: 1-2 Werktage

4,36
Preis inkl. MwSt., inkl. Standardversand


KY-040 Drehgeber Rotary Encoder Modul

 

Beschreibung:

KY-040 Drehgeber Rotary Encoder Modul

Mit dem KY-040 Drehgeber-Modul können Sie schrittweise verschiedene Einstellungen für Ihr Raspberry Pi oder Arduino Projekt vornehmen. Der Drehregler ist aus Metall und kann sogar gedrückt werden, funktioniert also auch als Schalter.

Der Drehgeber erzeugt 20 Impulse pro Umdrehung. Der DIR-Ausgang gibt dabei die Drehrichtung wieder. Außerdem kann beim Herunterdrücken ein weiterer Impuls am Pin SW erzeugt werden. Perfekt geeignet für beispielsweise die Navigation in Menüs, das Auswählen der Lautstärke usw. Für Arduino, Raspberry uvm.

Das Modul hat 5 Anschlüsse:            

  • CLK                           Clock (Takt/Impulse)
  • DT                              Direction (Drehrichtung)
  • SW                             Switch (Schalter)
  • Vcc                            
  • GND

    Lieferumfang:

    1 x Drehgeber, fertig aufgebaut

---------------------------------------------------------------------------------------------------------

Test Code:

    int redPin = 2;

    int yellowPin = 3;

    int greenPin = 4;

    int aPin = 6;

    int bPin = 7;

    int buttonPin = 5;

    int state = 0;

    int longPeriod = 5000; // Time at green or red

    int shortPeriod = 700; // Time period when changing

    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);

    }

    else

    {

    int change = getEncoderTurn();

    int newPeriod = longPeriod + (change * 1000);

    if (newPeriod >= 1000 && newPeriod <= 10000)

    {

    longPeriod = newPeriod;

    }

    if (count > targetCount)

    {

    setState();

    count = 0;

    }

    }

    delay(1);

    }

 

    int getEncoderTurn()

    {

    // return -1, 0, or +1

    static int oldA = LOW;

    static int oldB = LOW;

    int result = 0;

    int newA = digitalRead(aPin);

    int newB = digitalRead(bPin);

    if (newA != oldA || newB != oldB)

    {

    // something has changed

    if (oldA == LOW && newA == HIGH)

    {

    result = -(oldB * 2 - 1);

    }

    }

    oldA = newA;

    oldB = newB;

    return result;

    }

 

    int setState()

    {

    if (state == 0)

    {

    setLights(HIGH, LOW, LOW);

    targetCount = longPeriod;

    state = 1;

    }

    else if (state == 1)

    {

    setLights(HIGH, HIGH, LOW);

    targetCount = shortPeriod;

    state = 2;

    }

    else if (state == 2)

    {

    setLights(LOW, LOW, HIGH);

    targetCount = longPeriod;

    state = 3;

    }

    else if (state == 3)

    {

    setLights(LOW, HIGH, LOW);

    targetCount = shortPeriod;

    state = 0;

    }

    }

 

    void setLights(int red, int yellow, int green)

    {

    digitalWrite(redPin, red);

    digitalWrite(yellowPin, yellow);

    digitalWrite(greenPin, green);

    }

Zubehör

Produkt Hinweis Status Preis
Metallfilm-Widerstände, Set à 150 Stück (5x30 Sorten) Metallfilm-Widerstände, Set à 150 Stück (5x30 Sorten)
3,76 € *
LCD Display 16X2 mit HD44780 Controller LCD Display 16X2 mit HD44780 Controller
ab 5,08 € *
MB102 Breadboard Power supply Module MB102 Breadboard Power supply Module
5,70 € *
*
Preise inkl. MwSt., inkl. Standardversand
 
Details zum Zubehör anzeigen

Auch diese Kategorien durchsuchen: Produkte, Displays & Module, Aktionsprodukte, Startseite