Rotary Potentiometer
Changes its electrical resistance based on its rotation angle. Can detect rotation angles between 0° and 270°.
Learn how to make your own rotary potentiometer here.
Background
What is a Potentiometer?
Potentiometers are a type of variable resistor consisting of a resistive track with electrical contacts at both ends. Like a fixed-value resistor, potentiometers have a fixed resistance value between both ends (for example, 10 kΩ.) A third, movable contact is located between both ends. This contact (called wiper) allows us to achieve a variable resistance by flowing electricity through a shorter portion of the resistive track.
Basic Usage
# --- Imports
import time
import board
import analogio
# --- Variables
# Initialize analog input connected to rotation potentiometer
potentiometer = analogio.AnalogIn(board.A2)
# --- Functions
# --- Setup
# --- Main loop
while True:
val = potentiometer.value # Read the potentiometer value
print(val) # Output the value in the serial monitor
time.sleep(0.05) # Make the loop run a little bit slower
Rotation potentiometer example with conversion to voltage
# --- Imports
import time
import board
import analogio
# --- Variables
# Initialize analog input connected to rotation potentiometer
potentiometer = analogio.AnalogIn(board.A2)
# --- Functions
# Make a function to convert from analog value to voltage.
def analog_voltage(adc):
return adc.value / 65535 * adc.reference_voltage
# --- Setup
# --- Main loop
while True:
val = potentiometer.value # Read the photo resistor value
volts = analog_voltage(potentiometer) # Convert to voltage
# Print the values
print('Photo resistor value: {0} voltage: {1}V'.format(val, volts))
time.sleep(0.05) # Make the loop run a little bit slower
Rotation potentiometer example with angle mapping
# --- Imports
import time
import board
import analogio
# --- Variables
# Initialize analog input connected to rotation potentiometer
potentiometer = analogio.AnalogIn(board.A2)
# --- Functions
# Make a function to convert from analog value to 270 degrees
def get_angle(adc):
return adc.value / 65535 * 270
# --- Setup
# --- Main loop
while True:
val = potentiometer.value # Read the photo resistor value
angle = get_angle(potentiometer) # Convert to voltage
# Print the values
print('Potentiometer value: {0} Angle: {1}º'.format(val, angle))
time.sleep(0.05) # Make the loop run a little bit slower