騎士のライダー。 マイクロコントローラでスムーズなアニメーションをプログラムします

良い一日。



今日は、LEDを使用してマイクロコントローラーでスムーズなアニメーションを作成する方法を説明します。 Atmel attiny2313チップがベースとして採用されました;まさにこれが私が横たわっているのを見つけたのです 。 ファームウェア、プログラマーの詳細については掘り下げません。これらはすべてハブにありました Linuxの ここここ



ほとんどの人が映画を覚えており、シリーズ「ナイトライダー」(ナイトライダー)を覚えています。 子供の頃、誰がそのような機械を夢見ていないのですか? ええと、例えば、私は機械自体の前などでアニメーションを作成することにしました。



画像







次の原理に従って回路をはんだ付けしました。

スキーム



Electron TVのLED付きのバーを取りましたが、ちょうど8個ありました。 3ボルトのLEDがあったので、私のバージョンでは、ダイオードに200オームの抵抗を直列に追加しました。



理論





些細なことですが、出力ポートに書き込まれた場合、ダイオードは点灯し、ゼロの場合は消灯します。 部分的に光る(光るが、フルパワーではない)ためには、各ポートでPWMをエミュレートする必要があります。



私は、パルス形成の精度を10回繰り返すことを決めました。 つまり、ダイオードの強度には10種類のオプションがあります。 すべての反復の出力が1の場合、これは最大グローです。10のうち5つであれば、半分になります。 つまり、出力1では点灯しますが、その後0になり、フェードします。 このようなPWM信号には数百キロヘルツがあり、ダイオード自体の慣性によって望ましい効果が得られます。



実装





アニメーション全体をマトリックスに配置します。これにより、アニメーション自体を簡単かつ簡単にプログラムできます。



const char mat[] =

{

10,0,0,0,0,0,0,0,

6,10,0,0,0,0,0,0,

2,6,10,0,0,0,0,0,

0,2,6,10,0,0,0,0,

0,0,2,6,10,0,0,0,

0,0,0,2,6,10,0,0,

0,0,0,0,2,6,10,0,

0,0,0,0,0,2,6,10,

0,0,0,0,0,0,2,6,

0,0,0,0,0,0,0,2,

0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,10,

0,0,0,0,0,0,10,6,

0,0,0,0,0,10,6,2,

0,0,0,0,10,6,2,0,

0,0,0,10,6,2,0,0,

0,0,10,6,2,0,0,0,

0,10,6,2,0,0,0,0,

10,6,2,0,0,0,0,0,

6,2,0,0,0,0,0,0,

2,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0

};



short timeAnim = 3000;




* This source code was highlighted with Source Code Highlighter .








したがって、timeAnimはアニメーション全体の時間です。 各行は1フレームの10回の繰り返しで、各セルはダイオードの「光パワー」です。



1フレーム(マトリックスの1行)のアニメーション時間を計算し、結果を作成してポートに出力するだけです。



//

sPeriodTime = timeAnim * 4 / sizeof (mat) * 8;

iCycle = 0;



//

iMaxCycle = sizeof (mat) / 8;



while (1)

{

PORTB = 0;

TCNT1 = 0;

iCycle = 0;

while (iCycle < iMaxCycle)

{

while (TCNT1 < (iCycle + 1)*sPeriodTime) //,

{

for (i = 0; i < 10; i++) // 10

{

iTemp = 0;

for (j = 0; j < 8; j++) //

{

iTemp <<= 1;

iTemp |= (mat[iCycle*8 + j] - i) > 0;

}

PORTB = iTemp; //

}

};

iCycle++;

}

};



* This source code was highlighted with Source Code Highlighter .








結果













まあ、誰が気に、 ソース



Habrの伝統によると、これは私の最初の記事です。あまり蹴らないでください。



成功。



All Articles