5 # Generate an LED gamma-correction table for Arduino sketches.
6 # https://learn.adafruit.com/led-tricks-gamma-correction/the-longer-fix
8 my ( $gamma, $max_in, $max_out ) = @ARGV;
10 $gamma ||= 2.8; # Correction factor
11 $max_in ||= 255, # Top end of INPUT range
12 $max_out ||= 255; # Top end of OUTPUT range
14 print "// gamma.pl $gamma $max_in $max_out\n";
15 print "const uint8_t PROGMEM gamma[] = {";
16 foreach my $i ( 0 .. $max_in ) {
18 print "\n " if $i % 15 == 0;
20 ( ($i / $max_in) ** $gamma ) * $max_out + 0.5)