Arduinoで制御できる個別のライトの数


19

通常のArduinoボードを使用してLEDを制御したい-ボードから個別に制御できるほとんどのライトは何ですか?

それを接続する方法に関するチュートリアルはありますか?


3
1つまたは複数のLEDを制御するかどうかを指定する必要があります。また、「シリアル制御と追加のICの回避」を追加します。リフレッシュレートまたはハードウェアパーツが制約でない場合、答えは無限になりがちです。
ppvi

回答:


26

Charlie-plexing Nラインを使用してN *(N-1)LEDを制御すると考えています。ウィキペディアには良い記事があります。

私の友人であるジミー・P・ロジャースは、Arduinoシールドに126個のLEDを取り付けています。彼はチャーリープレックスを使用してLEDを制御します。彼の掲示板の情報は -jimmieprodgers.com/2009/12/my-development-process/(archive.orgのコピー)にあります。


前回のボストンArduinoユーザーグループ会議で、ジミーP.ロジャースは、ラベル付きネットを持つマトリックスとしてチャーリープレックス図を描きました。この方法で描かれた回路図は、コンセプトを伝える上で良い仕事をしているように見えました。同様の回路図をいくつか作成しました-http ://wiblocks.luciani.org/FAQ/faq-charlie-plex.htmlを参照してください


今日新しいことを学びました。あなたは私の賛成票を持っています:-)
JonathanD

4
この方法では、一度にN-1個のLEDしか点灯できないことに注意してください。
AngryEE

2
jimmieprodgers.comこの回答のリンクにはウイルスがロードされています。
ビベックマハラジ

1
@vivekmaharajh:リンクを元のページのarchive.orgコピーへのリンクに置き換えました。
デイブツイード

13

Shift Registers(http://en.wikipedia.org/wiki/Shift_register)を使用して、単一のシリアルストリームから必要な数の並列出力を取得できます。

電力の制約に注意する必要があります。私は実際に自分でArduinoを使用したことはありませんが、PICのように電流制限があると想定しています。また、シフトレジスタには電流制限があります。これに遭遇した場合、MOSFETのようなものを使用して、マイクロコントローラーから多くの電力を直接引き出すことなくLEDを制御できるようにする必要があります。


7

所定のAVRマイクロコントローラーピンは最大40 mAをソースでき、チップによってソースまたはシンクされる(つまり、グランドおよびVccピンで)合計電源は200 mA未満である必要があります。

Charlieplexingは、大量のLEDが必要な場合に最適なソリューションですが、一度に1つのLEDのみを点灯させることで対処できます。標準のArduinoボード(Duemilanoveなど)は、TX、RX、リセット、またはピン13をカウントしない17個の「空き」I / Oピンを提供します。したがって、17 * 16 = 272個のLEDを接続できます。これは、特に1つのLEDを点灯したままにしている場合や、わずかな数の間ですばやくスキャンしている場合に有効です。しかし、パターン全体でマトリックス全体を点灯させようとすると、それぞれが1/272の時間(わずかに小さい)で点灯していることがわかります。そのため、駆動電流が任意の瞬間に30 mAの場合、各LEDは平均電流は約0.1 mAで、かなり暗いです。

それほど多くのLEDを必要とせず、代わりにより多くの輝度が必要な場合は、従来の多重化がより良いオプションです。この場合、行の一部を行として使用し、一部を行列の列として使用します。10 mA LED電流を使用する場合、4列13行のマトリックスを定義できます。この場合、1行の4つのLEDがすべて同時に点灯し、行をスキャンします。その後、各行は10 mAの電流で時間の1/13にあるため、平均LED電流は0.76 mAにもなりますが、4 * 13 = 104個のLEDしか得られません。(charlieplexingを使用した場合よりもLEDごとに確実に明るくなります。)

最後の例の制限は、ピンを駆動する各行が4x10 = 40 mAを供給するため、AVRのピンごとに40 mAです。外部トランジスタ(安価で小さくてもかまいません)を行出力に追加できるようにすると、その特定の制限を避けて明るくすることができます。たとえば、8行9列、合計72個のLEDを備えた8x9アレイを作成できます。トランジスタを介して選択された8つの行の1つが一度にオンになります。特定の列の最大9個のLEDを同時にオンにして、20 mAで駆動できるため、トランジスタから180 mAが供給され、AVRの電流制限内に留まります。LEDあたりの平均電流は20 mA / 8 = 2.5 mAになりました。通常はかなり明るいです。


6

ここには、Arduinoを使用して8x8x8 LEDキューブを実行するセクションを含む、非常に優れた詳細なチュートリアルあります。(彼らが持っているYouTube映画を見逃さないでください)

ここに画像の説明を入力してください


1979年頃のミネアポリスのUFO展示で見たもののように見えますが、4096個のミニチュア電球がどこかにあることを覚えています。他の誰かがそのようなものを見たことを覚えていますか?
-supercat

4

SPIまたはI2Cバスを使用する多くのI / Oエクスパンダーがあります。単一のMSSPモジュールで、LEDのようなほぼ無限の量のデジタル出力を制御できます。

次の部品については、マイクロチップ社のデータシートまたはアプリケーションノートを参照してください。SPI
- MCP23S08
I2C- MCP23008


1

17個のI / Oピン、17個のNPNトランジスタ(電流をブーストするエミッタフォロア)により、1/17デューティサイクルで任意の組み合わせで272個のLEDを表示し、平均電流または0.7mA(200mA / 272)一度に200mAをプルダウンするチップの能力。ダイオードを追加して0.7ボルトのドロップを得ると、別の17個のLEDを追加できます(デューティサイクルを1/18に減らします)が、輝度は他のLEDとは完全には一致しません。


ここで提案している回路の種類を明確にできますか?エミッターフォロワーはBJTトポロジーです。
ケビンフェルメール

@reemrevnivek:上記の編集をご覧ください。私は精神的にいくつかのバリエーションをいじり回していましたが、それらは一緒に混乱しました。ローサイドドライブではなくハイサイドドライブをブーストするためにトランジスタを追加する場合は、BJTである必要があります。両方にトランジスタを使用している場合、MOSFETの方が優れている可能性があります。
スーパーキャット

0

Windell Oskayは、トランジスタを追加せずに104個のLEDが最大であると主張していますが、 Tom Igoe は、単一のArduino Megaによって直接制御される128個のLEDのマトリックスの写真を投稿しました。

Tom Igoeは、データシートに記載されている「ピンごとの絶対最大電流」を短時間超えることで「不正行為」をしていますか?


2
いいえ、彼はarduinoメガを使用して不正をしています。:)メガには、通常のArduinoよりも多くのIOピンがあります。
クリストファービッグス

@unixbigot -悲しい、私はLEDを駆動、またはダイオード電圧降下用にリセットピンの再利用を含むクールなハックを見ることを望んでいた...
ケビン・フェルメール

1
リンクは無効です。おそらく、Windell Oskayの回答にリンクする必要があります。投稿することは重要ではないように思えるかもしれませんが、より多くの回答が表示されると、投稿は他の投稿から離れます。
ケビンフェルメール

@KevinVermeer:元のページのarchive.orgコピーを指すことでリンクが修正されました。
デイブツイード
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.