Overview
How many distinct colors can fit-statUSB display? The answer to that question is 256 Red x 256 Green x 256 Blue which equals 16,777,216. Realistically, the average human eye can't discern that many colors, but a bit of fun can be had by trying.
The perl app included in this post provides the user with a simple method of quickly exploring the various colors which fit-statUSB can display via 3 slide controls (red, green, and blue). The resulting color combination is displayed both on-screen and by fit-statUSB. The app prominently displays the corresponding hex code. Should the user arrive at a desirable color, the hex code can be written down for further use in applications.
Examples
Shade of Purple
Shade of Yellow
Shade of Blue-Green
Perl App
#!/usr/bin/perl -w
#
#fitStatColor.pl
# Darryl Hassell 8/14/2018
use Tk;
use Device::SerialPort;
use Time::HiRes ('sleep');
# Define & Initialize Variables
our $RedDec = 255;
our $GreenDec = 255;
our $Bluedec = 255;
our $RedHex = 'FF0000';
our $GreenHex = '00FF00';
our $BlueHex = '0000FF';
our $ColorString = '#FFFFFF';
# Configure Serial Port
my $port = Device::SerialPort -> new("/dev/ttyACM0");
$port -> baudrate(115200);
$port -> databits(8);
$port -> parity("none");
$port -> stopbits(1);
$port -> write_settings;
# Set Sleep Delay After Writes in Seconds
our $delay = 0.1;
#Initialize fit-statUSB to 10 mSec Fade
$port -> write("F10\n");
$port -> purge_rx;
sleep(0.5);
# Initialize fit-statUSB to Max Brightness White Then Off
$port -> write("#FFFFFF\n");
$port -> purge_rx;
sleep(1);
$port -> write("#000000\n");
# Create Main Window
$WinMain = MainWindow->new;
$WinMain -> resizable (0,0);
# Label Main Window
$myframe_label = $WinMain -> Frame ->pack();
$myframe_label -> Label (-text => 'fit-statUSB Color Explorer', -foreground => "black", -font => "helvetica 15 bold")->pack(-ipadx => 10,-ipady => 5);
# Create Window For All Controls
$myframe_Control = $WinMain -> Frame (-relief => 'groove', -bd => 5);
$myframe_Control -> Label (-text => 'Color Slide Controls', -foreground => "black", -font => "helvetica 12 bold")->pack(-ipadx => 110,-ipady => 5);
# Create Red Program Window and Slider
$myframe_Red = $myframe_Control -> Frame (-relief => 'groove', -bd => 5);
# Red Slider
$RedDec = 0;
$myframe_Red -> Scale(
-label => 'Red',
-font => 'helvetica 12 bold',
-foreground => "black",
-background => "#FF0000",
-orient => 'vertical',
-from => 255,
-to => 0,
-digits =>1,
-resolution => 1,
-tickinterval => 10,
-showvalue => 'yes',
-length => '4.0i',
-variable => \$RedDec,
-command => sub{ print "Red Decimal Value: $RedDec\n"; }
) -> pack( -side => 'left' );
$myframe_Red -> pack (-side => 'left');
$myframe_Red -> pack (-padx => 5, -pady => 5);
# Create Green Program Window and Slider
$myframe_Green = $myframe_Control -> Frame (-relief => 'groove', -bd => 5);
# Green Slider
$GreenDec = 0;
$myframe_Green -> Scale(
-label => 'Green',
-font => 'helvetica 12 bold',
-foreground => "black",
-background => "#00FF00",
-orient => 'vertical',
-from => 255,
-to => 0,
-digits =>1,
-resolution => 1,
-tickinterval => 10,
-showvalue => 'yes',
-length => '4.0i',
-variable => \$GreenDec,
-command => sub{ print "Green Decimal Value: $GreenDec\n"; }
) -> pack( -side => 'left' );
$myframe_Green -> pack (-side => 'left');
$myframe_Green -> pack (-padx => 5, -pady => 5);
# Create Blue Program Window and Slider
$myframe_Blue = $myframe_Control -> Frame (-relief => 'groove', -bd => 5);
# Blue Slider
$BlueDec = 0;
$myframe_Blue-> Scale(
-label => 'Blue',
-font => 'helvetica 12 bold',
-foreground => "white",
-background => "#0000FF",
-orient => 'vertical',
-from => 255,
-to => 0,
-digits =>1,
-resolution => 1,
-tickinterval => 10,
-showvalue => 'yes',
-length => '4.0i',
-variable => \$BlueDec,
-command => sub{ print "Blue Decimal Value: $BlueDec\n"; }
) -> pack( -side => 'left' );
$myframe_Blue -> pack (-side => 'left');
$myframe_Blue -> pack (-padx => 5, -pady => 5);
# Exit Button
$exitbutton = $myframe_Control -> Button (-text => 'Exit', -command => \&Exit, -foreground => 'white', -background => 'steelblue');
$exitbutton -> pack (-side => 'right', -padx => 10, -pady => 5,);
$myframe_Control -> pack (-side => 'top');
$myframe_Control -> pack (-padx => 10, -pady => 5);
# Create Window For Displaying Hex Value of Color
our $myframe_Color = $WinMain -> Frame (-bd => 75);
$myframe_Color -> Label (-textvariable => \$ColorString, -foreground => 'black', -font => "helvetica 32 bold")->pack(-ipadx => 125,-ipady => 5);
$myframe_Color -> pack (-side => 'top');
$myframe_Color -> pack (-padx => 10, -pady => 5);
$WinMain -> repeat(500, \&BuildColor);
MainLoop();
############### Subroutines ###############
sub BuildColor {
# Red Hex Value
if ($RedDec < 16){
$RedHex = "0".sprintf("%X", $RedDec);
}
else {
$RedHex = sprintf("%X", $RedDec);
}
# Green Hex Value
if ($GreenDec < 16){
$GreenHex = "0".sprintf("%X", $GreenDec);
}
else {
$GreenHex = sprintf("%X", $GreenDec);
}
# Blue Hex Value
if ($BlueDec < 16){
$BlueHex = "0".sprintf("%X", $BlueDec);
}
else {
$BlueHex = sprintf("%X", $BlueDec);
}
# Build Color String
$ColorString = "#".$RedHex.$GreenHex.$BlueHex;
$myframe_Color -> configure (-background => $ColorString);
print "$ColorString\n";
$port -> write("$ColorString\n");
$port -> purge_rx;
}
sub Exit {
$port -> write("#000000\n");
$port -> purge_rx;
sleep($delay);
exit;
}
Conclusions
fit-statUSB due to its very large number of available colors is suitable for a wide variety of applications. Whether for fun or for serious pursuits, fit-statUSB has something to offer where a wide palette of colors is required.
fit-statUSB: Color Explorer App
programmable multi-color LED that plugs into a USB port
-
- Posts: 106
- Joined: Mon May 28, 2012 3:25 pm
Jump to
- Announcements
- ↳ Read me first
- ↳ News
- ↳ Ordering
- Tensor-PC
- ↳ General Tensor-PC questions
- ↳ Tensor-PC Hardware
- ↳ Tensor-PC Software
- fitlet3
- ↳ General fitlet3 questions
- ↳ fitlet3 hardware
- ↳ fitlet3 software
- ↳ fitlet3 FACET Cards
- Airtop3
- ↳ General Airtop3 questions
- ↳ Airtop3 Hardware
- ↳ Airtop3 Software
- ↳ Airtop3 I3M
- fitlet2 and MBM2
- ↳ General fitlet2 questions
- ↳ fitlet2 hardware
- ↳ fitlet2 software
- ↳ fitlet2 FACET Cards
- ↳ Cool stuff with fitlet2
- Airtop2
- ↳ General Airtop2 questions
- ↳ Airtop2 Software
- ↳ Airtop2 Hardware
- ↳ Airtop2 I3M
- Mature products
- ↳ Airtop
- ↳ General Airtop questions
- ↳ I3M
- ↳ IPC2 (Intense PC2)
- ↳ General IPC2 questions
- ↳ IPC2 availability
- ↳ IPC2 Hardware
- ↳ Linux on IPC2
- ↳ Windows on IPC2
- ↳ Other operating systems on IPC2
- ↳ IPC2 BIOS
- ↳ IPC2 faults and troubleshooting
- ↳ Intense PC and MintBox 2
- ↳ General Intense PC questions
- ↳ Intense PC hardware
- ↳ CPU & Chipset
- ↳ Display interface
- ↳ Memory
- ↳ Storage
- ↳ Ethernet
- ↳ WLAN and miniPCI-e
- ↳ Audio
- ↳ USB
- ↳ Power and heat
- ↳ Linux on Intense PC
- ↳ Linux Mint
- ↳ Other distributions
- ↳ Windows on Intense PC
- ↳ Win7 on Intense PC
- ↳ Win8 on Intense PC
- ↳ Audio
- ↳ Intense PC BIOS
- ↳ Android on Intense PC
- ↳ Intense PC faults and troubleshooting
- ↳ fitlet and MintBox Mini
- ↳ General fitlet questions
- ↳ fitlet performance
- ↳ fitlet hardware
- ↳ Memory
- ↳ Storage
- ↳ Power and heat
- ↳ Mechanical
- ↳ fitlet BIOS
- ↳ Linux on MintBox Mini / Linux on fitlet
- ↳ Windows on fitlet
- ↳ Other operating systems on fitlet
- ↳ FACET Cards
- ↳ fitlet compatible devices
- ↳ Cool stuff with fitlet
- ↳ fitlet faults and troubleshooting
- ↳ fit-PC4
- ↳ General fit-PC4 questions
- ↳ fit-PC4 hardware
- ↳ Windows on fit-PC4
- ↳ Linux on fit-PC4
- ↳ Other operating systems on fit-PC4
- ↳ fit-PC4 BIOS
- ↳ fit-PC4 faults and troubleshooting
- ↳ fit-PC3
- ↳ General fit-PC3 questions
- ↳ fit-PC3 hardware
- ↳ Display interface
- ↳ Storage
- ↳ Audio
- ↳ WLAN and miniPCI-e
- ↳ USB
- ↳ Power and Heat
- ↳ Ethernet
- ↳ Windows on fit-PC3
- ↳ Linux on fit-PC3
- ↳ Other operating systems on fit-PC3
- ↳ fit-PC3 BIOS
- ↳ fit-PC3 accessories
- ↳ Using fit-PC3
- ↳ fit-PC3 faults and troubleshooting
- ↳ fit-PC2
- ↳ General fit-PC2 questions
- ↳ Buying fit-PC2
- ↳ Linux on fit-PC2
- ↳ Linux Mint
- ↳ Ubuntu 9.10
- ↳ Ubuntu 10.04
- ↳ Ubuntu 10.10
- ↳ Ubuntu 11.04
- ↳ Other Linux distributions
- ↳ Ubuntu 8.04
- ↳ Ubuntu 9.04
- ↳ Display driver
- ↳ Multimedia in Linux
- ↳ Multimedia in Mint
- ↳ Windows on fit-PC2
- ↳ Windows 7
- ↳ Windows 7 display driver
- ↳ Audio in Win7
- ↳ Windows XP
- ↳ XP installation
- ↳ Display driver
- ↳ Video playback
- ↳ Audio in XP
- ↳ Other Windows versions
- ↳ Other operating systems on fit-PC2
- ↳ FreeBSD
- ↳ fit-PC2 hardware
- ↳ fit-PC2i hardware
- ↳ Display interface
- ↳ Storage
- ↳ Audio
- ↳ WLAN and miniPCI-e
- ↳ USB
- ↳ Auto-ON
- ↳ Power and Heat
- ↳ Ethernet
- ↳ RTC & System clock
- ↳ fit-PC2 BIOS
- ↳ BIOS updates fit-PC2
- ↳ BIOS updates fit-PC2i
- ↳ fit-PC2 accessories
- ↳ Using fit-PC2
- ↳ HTPC
- ↳ Server
- ↳ Control
- ↳ Verified displays
- ↳ Car PC
- ↳ fit-PC1 questions
- ↳ fit-PC Slim questions
- ↳ uSVR
- ↳ General uSVR questions
- ↳ IPC3
- ↳ General IPC3 questions
- ↳ IPC3 Software
- ↳ IPC3 Hardware
- ↳ FACE modules
- ↳ FACE Modules
- ↳ General FACE Module questions
- Compulab accessories
- ↳ fit-Headless and fit-Headless 4K
- ↳ fit-Uptime
- ↳ fit-statUSB
- ECN/PCN
- ↳ fitlet3 ECN/PCN
- ↳ Tensor-I20 ECN/PCN
- ↳ Tensor-I22 ECN/PCN
- ↳ fitlet2 ECN/PCN
- ↳ Airtop3 ECN/PCN
- ↳ IPC3 ECN
- ↳ fitlet1 ECN
- ↳ IPC2 ECN
- ↳ IPC1 ECN
- ↳ Airtop2 ECN
- ↳ Airtop1 ECN
- ↳ fit-PC4 ECN
- ↳ fit-PC3 ECN
- ↳ fit-PC2 ECN
- ↳ FACE Modules ECN
- ↳ FACET Cards ECN
- Wish list
- ↳ Addressed requests