2017-12-10 12 views
0

RGB LEDのセットの基本アニメーションを作成しようとしています。通常の線形アニメーションは、ループやカウンターを使って光の色を変えるだけで十分です。円の円のアニメーション

私が持っているものは、24個のLEDのリングで、単純なカラーワイプなどの効果が上から下、または左右(基本的には任意の方向)から発生するようにアニメーションを適用できるようにしたいのですが、 。

IはLEDの各「行」の配列を格納する以外の共有、価値の任意の進歩を遂げていない

0 => 0 
1 => 1, 23 
2 => 2, 22 
3 => 3, 21 
and so on 

これは粗溶液であり、そしてIは/ COSを使用して、より良い方法がある期待していますおそらくタン。

私の質問は、アニメーションを上から下に(または任意のn度から)実行するときに、順番に各LEDをどのように扱うかです。

+1

質問は、それが立っているように、かなり曖昧です。あなたはi番目のled rgbコンポーネントを設定するインタフェースを持っている限り、異なる方法で実装されるあらゆる種類のエフェクトを実行できます。 – Jack

+0

要約された質問を最後に追加しました。私は基本的に、円の上から下にアニメートするときに各LEDにアクセスしようとしています –

答えて

1

三角(角度)から一対の数字(円上の点の座標)に移動する場合は、三角法が適しています。あなたのLEDアドレスは0から23の範囲の単一数字のようです。これらは本質的に角度です(360/24 = 15度に1度なので、変換を調整する角度は必要ありません)。

必要なのは、 。

def wipe_from(i): 
    leds = [[i]] 
    for j in range(1,12): 
     leds.append([(i+j) % 24, (i-j) % 24]) 
    leds.append([(i+12)%24]) 
    return leds 
:方法は、回転対称性をモデル化するために、それは単に剰余演算である(24 MOD作業)いくつかのアイデアを与えるために、ここでは24ポイントのいずれかから「拭く」に使用することができPythonスクリプトは、

たとえば、wipe_from(0)は既に所有しているものに対応し、wipe_from(5)は:

[[5], [6, 4], [7, 3], [8, 2], [9, 1], [10, 0], [11, 23], [12, 22], [13, 21], [14, 20], [15, 19], [16, 18], [17]] 
です。
+0

ファンタスティックな答えジョン、親切にありがとう。私は角度を使うと思ったのは、x、y座標を計算して、遷移が起こったときに、各LEDをその期間(例えば10秒)にわたって均等にフェードさせることでした。各 "行"の間隔が円の真ん中に向かって増加するので、想像しているタイマーループで遊んでいく必要があります。ありがとうございました。 –