Arduino - 如何在000000到FFFFFF之间循环显示十六进制颜色?

1 c rgb hex arduino

我有一个涉及LED模块的项目,该模块使用3色LED,可以通过传递RGB十六进制颜色来控制,例如 22AAFF

我怎么能周期从000000FFFFFF,如果我开始呢?

long color = 0x000000;
Run Code Online (Sandbox Code Playgroud)

我希望有一个循环来完成每次迭代并显示每种可能的颜色,最终得到

color = 0xFFFFFF
Run Code Online (Sandbox Code Playgroud)

我不确定我对颜色的十六进制表示的理解是否有意义!?

MSa*_*ers 12

显而易见的是什么问题for (int color = 0x000000; color <= 0xFFFFFF; ++color)


unk*_*ulu 6

你可以这样做

for (int color = 0x000000; color <= 0xFFFFFF; ++color)
Run Code Online (Sandbox Code Playgroud)

但正如评论中提到的那样,显示所有1600万种颜色需要很长时间,更不用说LED无法显示所有这些颜色了,所以你可能会想要这样的东西:

const int step = 8; // Select this to be a power of two if you want the maximum brightness to be reachable
for( int red = 0x00; red <= 0xFF; red += step ) {
    for( int green = 0x00; green <= 0xFF; green += step ) {
        for( int blue = 0x00; blue <= 0xFF; blue += step ) {
            const int color = blue << 16 + green << 8 + red;
            // Change the led settings here.
        }
    }
}  
Run Code Online (Sandbox Code Playgroud)