Dotsduino で遊んでみたよ

Posted January 17th, 2011 in General. Tagged: , , .

Dotsduinoは @arms22 さん開発の Arduino + 8x8LEDドットマトリクス な収まりのいいガジェット。スイッチサイエンスさんから買えるとの告知に脊髄反射で購入してみたので、ひさしぶりの Arduino と戯れてみたり。

1/13朝注文して、1/14の午前中には届いてた。相変わらずスイッチサイエンスさんは速い。ありがたい。ちなみに、自分が注文した数時間後に商品ページ見たら売り切れになってた。。。速いな。迷ってるひまはないw

Dotsduino完成!

Dotsduino 公式情報

部品の確認

  • LEDドットマトリックス、メイン基板、ATmega328p、抵抗x9、コンデンサx3、ピンヘッダ ととってもシンプルな構成。これならはんだ付けも楽そう

Dotsduinoの部品たち

はんだ付け

  • まずは背の低い抵抗x9から〜。R1だけ10kΩなので、気をつける。ほかは一緒。

Dotsuduinoはんだ付け

  • 上の写真は抵抗だけはんだ付け完了したあとの基板。基板が白いのでフラックスの色が目立っちゃう
  • 次にマイコン、コンデンサ、ピンヘッダの順ではんだ付けした
  • 抵抗、コンデンサは足を入れて曲げて固定したら、余分な足を切っておいて一気にはんだ付け
  • ピンヘッダは斜めについちゃうと使いにくくなるし、カッコ悪いので、1本だけはんだ付けして位置調整してから他のピンも固定
  • 公式ページでは ICSP と A4,A5 に何もつけてないけど、いろいろ遊びたくなるかもしれないから、両方ともピンヘッダつけといた。
  • 最後にドットマトリックスに基板をはめて(向きに注意)上下各8本のピンをはんだ付けすれば完成〜


Dotsduino完成!

  • 電池に単四x3本入れて VCC=赤、GND=黒 になるように電源ケーブルを接続して、スイッチをON すれば、一番上の写真のように はあと がビートするはず
  • 公式ページによると 約2.7V~5Vの範囲で動作するとのこと

Arduinoなのでスケッチを書き換えてみる

  • Arduinoは AVRを中心としたハードウェアで構成されていて、ブートローダーが予め書きこまれており、PCとArduinoをシリアル接続して、スケッチと呼ばれるユーザープログラムを専用のIDEから書きこんで動作させることができるシロモノ
  • PCに接続するためには USB-シリアル(TTLレベル)変換モジュールが必要。公式では3.3vのやつ↓を勧めているが、5V(手元にそれしかなかった)でも正常に書き込めた。以下候補
  • 以下のように接続すればおk
Dotsduino USBシリアル
GND GND
VCC VCC
RXI TXD
TXD RXD
DTR DTR
  • 写真は FT2232Dのモジュールと接続したところ

Dotsduino スケッチの書き込み

  • Dotsduino はリセットスイッチがないので、IDEからリセットかけられるようにするために DTRの接続が必要(ちょっとハマった)
  • IDEは以下からDLする
  • Dotsduino のライブラリを arms22 さんのページからDLして、説明通りに展開
    http://arms22.blog91.fc2.com/blog-entry-388.html
  • Arduino IDE を起動して、これも説明通りに ToolsメニューのBoard, Serial Port を適切に選ぶ
  • File→Examples→Dots 以下にいくつかサンプルが提供されている
  • サンプルファイルを開いて Upload すると自動的に Dotsduino にリセットがかかってスケッチが転送されて実行される
    • DTRを接続していないとリセットがかからないので、Uploadに失敗する\(ハマった)/

Dotsduino で 源氏物語

  • 8×8ドットなら美咲フォント だな、ということで
  • 美咲フォントのひらがな部分を組み込んで、源氏物語(一部)を読めるようにしてみたよ
  • 美咲フォントを BDF形式でDLしてきて、以下のような配列を生成するスクリプトを書いただけ
#include <Dots.h>

// ここから自動生成

const byte hira[][8] = {
  {
    B00000000,
    B00010000,
    B00111100,
    B00010000,
    B00111100,
    B01011010,
    B00110010,
    B00000000,
  },
  {
    B00100000,
    B01111100,
    B00100000,
    B00111100,
    B01101010,
    B10110010,
    B01100100,
    B00000000,
  },
// 中略
  {
    B00010000,
    B01111100,
    B00100000,
    B01110110,
    B10011000,
    B00101000,
    B00011110,
    B00000000,
  },
  {
    B00010000,
    B00010000,
    B00100000,
    B00100000,
    B01010000,
    B01010010,
    B10001100,
    B00000000,
  },
};

// いつれのおほむときにかにようこかういあまたさふらひたまひけるなかにいとやむことなききはにはあらぬかすくれてときめきたまふありけり
const int seq[] = {3,35,75,45,9,58,63,39,12,42,10,42,71,5,18,10,5,3,1,61,30,20,52,72,49,30,61,49,16,74,41,10,42,3,39,67,63,18,39,41,12,12,46,42,46,1,72,43,10,24,14,75,37,39,12,64,12,30,61,52,1,73,16,73};
#define SEQ_SIZE 64

// ここまで自動生成

void setup()
{
  myDots.begin();
}

void loop()
{
  for(int i=0; i<SEQ_SIZE; i++) {
    myDots.write(0, hira[seq[i]], 8);
    myDots.updateWithDelay(500);
  }
  delay(5000);
}

とっても楽しいガジェット提供していただいた @arms22 さんに感謝!

Posted January 17th, 2011 in General. Tagged: , , .

One comment:

  1. groundwalker:

track feed