5 - Gamma Correction

Our eyes don't respond linearly, so we shouldn't increase our LED's brightness linearly. A little math goes a long way.

Video

Gamma Correction

Code

"""
Pico Slice 1 - RGB Mixer
Tutorial 5 - Gamma Correction
"""
​
import time
import board
from pwmio import PWMOut
from analogio import AnalogIn
​
# A funcion to handle gamma correction
def Gamma_Correct (linear_input):
gamma = 3
maximum = 65535
output = int(((linear_input/maximum)**gamma)*maximum)
return output
​
# Represent the Pot in code as an AnalogIn object.
r_pot = AnalogIn(board.A2)
​
# Represent the Red LED as a PWMOut object.
r_led = PWMOut(board.GP2, duty_cycle=0, frequency=5000, variable_frequency=False)
​
​
while True: # Loop Forever:
input_val = r_pot.value # Read the potentiometer's current value (16-bit)
r_led.duty_cycle = Gamma_Correct(input_val) # Set the red LED's duty-cycle (16-bit) to the gamma corrected pot value
time.sleep(0.1) # Do nothing for 100 milliseconds
​