私はgemma用のarduinoコードを取得しようとしています。ネオピクセルで、5310バイトのメモリが小さいので、プログラムにもっと多くのものを入れることができます。
現在、私は以下のコードのサイズを縮小/山車を削除しようとしています:浮動小数点数を削除するか、コード関数の実際のファイルサイズを縮小するには? (Arduino)
void gradient(Color c1, Color c2, float time) {
for (float i = 0; i < time; i += 0.001) {
Color result(0, 0, 0);
result.Red = c1.Red * (1 - (i/time)) + c2.Red * (i/time);
result.Green = c1.Green * (1 - (i/time)) + c2.Green * (i/time);
result.Blue = c1.Blue * (1 - (i/time)) + c2.Blue * (i/time);
for (uint8_t x = 0; x < 20; x++)pixels.setPixelColor(x, result.Red, result.Green, result.Blue);
pixels.show();
delay(1);
}
}
私は30バイトで、それを軽減するために管理:
void gradient(Color c1, Color c2, float time) {
float stepsize = 0.01; // Stepsize in seconds
float lambda;
int maxiter = (int) (time/ stepsize);
Color result(0, 0, 0);
for (int i = 0; i <= maxiter; i++) {
lambda = (float) i/maxiter;
result.Red = c1.Red * (1 - lambda) + c2.Red * (lambda);
result.Green = c1.Green * (1 - lambda) + c2.Green * (lambda);
result.Blue = c1.Blue * (1 - lambda) + c2.Blue * (lambda);
for (uint8_t x = 0; x < 20; x++)pixels.setPixelColor(x, result.Red, result.Green, result.Blue);
pixels.show();
delay(stepsize * 1000); // delay in milliseconds
}
}
しかし、それを作るためにはまだしようとしています小さい。
Colorオブジェクトは、Red、Green、Blueという3つのintを持つオブジェクトに過ぎません。このコードの使用例は、次のようになります。
gradient(Color(255, 0, 0), Color(0, 255, 0), 2);
2秒間に亘って赤から緑の勾配があります。
ありがとうございます!
'stepsize'を1回だけ使うようです。その1つの使用を0.01fに置き換えてみてください(最後のfはdoubleの代わりに浮動小数点定数を示します)。数バイトを節約するかもしれません。 – GandhiGandhi
完全なコードを投稿してください。 – per1234