SSブログ

16x8マトリックスLED 第二弾 その3 [Arduino]

前回はシリアルモニターからのデータ送信だったので、テキストの送信しかできず、思い通りのイメージをマトリックスLEDに送信することができませんでした。
パソコンからバイナリーデータを送るプログラムが必要になります。
どんな言語でつくろうか考えてみたのですが、 Arduino と相性がよさそうな Processing で作ってみることにしました。

processing.png

Processing.org
http://processing.org/

Arduino が基本C言語なのに対して、Java ベースです。
初めての Processing でしたが、なんとか形にはなるくらいのものは作れました。

import processing.serial.*;
Serial myPort;       
int[] matrixImage=new int[16];

void setup() {
  println(Serial.list());                // 表示されたポートの中から、
  String portName = Serial.list()[0];    // 適切なポートを指定する
  myPort = new Serial(this, portName, 9600);
  size(255, 159);
  textSize(12);
}

void draw() {
  int x, y;
  if(mousePressed && mouseX >= 0 && mouseX < 256 && mouseY >= 0 && mouseY < 128) {
     if(mouseButton == LEFT)  matrixImage[mouseX / 16] |=   1 << (mouseY / 16) ;   // bit set
     if(mouseButton == RIGHT) matrixImage[mouseX / 16] &= ~(1 << (mouseY / 16));   // bit clear
  }
  for(y=0; y < 8; y++) {
    for(x=0; x < 16; x++) {
      fill( (matrixImage[x] >> y) % 2 == 1 ? 204 : 32 );
      rect(x * 16, y * 16, 15, 15);
    }
  }
  fill( 32 );
  rect(0, 128, 255, 15);
  rect(0, 144, 255, 15);
  fill( 204 );
  text("1 line", 16, 141);
  text("16 lines", 16, 157);
}

void mouseClicked() {
  int i, x, len;
  if      (mouseY / 16 == 8) len =  1;
  else if (mouseY / 16 == 9) len = 16;
  else return;
  for(i=0; i < len; i++) {               // lenの分だけスライド
    myPort.write( matrixImage[0] );                          // データ送信
    for(x=1; x < 16; x++) matrixImage[x-1] = matrixImage[x];  // 一列スライド
    matrixImage[15] = 0;
  }
}

これを「Run」して、、

proc_matrix.png

こんな感じでお絵かきして、1ラインずつあるいは16ラインごと転送すると、、

proc_image.jpg

表示できました。

次は、Arduino からデータを送ってみたいと思います。


Processingをはじめよう (Make: PROJECTS)

Processingをはじめよう (Make: PROJECTS)

  • 作者: Casey Reas
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2011/10/22
  • メディア: 単行本(ソフトカバー)


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。