Snippets

Alexander Boden KY-040 Rotary Encoder Python example

Created by Alexander Boden
#Python code for reading a KY-040 rotary encoder, adapted from Arduino example here:
#http://henrysbench.capnfatz.com/henrys-bench/arduino-sensors-and-input/keyes-ky-040-arduino-rotary-encoder-user-manual/

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)

pinA = 23 # Connect to CLK
pinB = 24 # Connect to DATA

encoderPos = 0

GPIO.setup(pinA, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.setup(pinB, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)

pinALast = GPIO.input(pinA)

try:

	while True:

		aVal = GPIO.input(pinA)	

		if (aVal != pinALast & aVal == 0):
			if (GPIO.input(pinB) != aVal):		
				encoderPos = encoderPos + 1
			else:
				encoderPos = encoderPos - 1
	
			print("Position: " + str(encoderPos))

		pinALast = aVal

except KeyboardInterrupt:
		GPIO.cleanup()

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.