16x8マトリックスLED 第二弾 その3 [Arduino]
前回はシリアルモニターからのデータ送信だったので、テキストの送信しかできず、思い通りのイメージをマトリックスLEDに送信することができませんでした。
パソコンからバイナリーデータを送るプログラムが必要になります。
どんな言語でつくろうか考えてみたのですが、 Arduino と相性がよさそうな Processing で作ってみることにしました。
Processing.org
http://processing.org/
Arduino が基本C言語なのに対して、Java ベースです。
初めての Processing でしたが、なんとか形にはなるくらいのものは作れました。
これを「Run」して、、
こんな感じでお絵かきして、1ラインずつあるいは16ラインごと転送すると、、
表示できました。
次は、Arduino からデータを送ってみたいと思います。
パソコンからバイナリーデータを送るプログラムが必要になります。
どんな言語でつくろうか考えてみたのですが、 Arduino と相性がよさそうな Processing で作ってみることにしました。
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」して、、
こんな感じでお絵かきして、1ラインずつあるいは16ラインごと転送すると、、
表示できました。
次は、Arduino からデータを送ってみたいと思います。
Processingをはじめよう (Make: PROJECTS)
- 作者: Casey Reas
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/10/22
- メディア: 単行本(ソフトカバー)
2012-01-15 22:28
nice!(0)
コメント(0)
トラックバック(0)
コメント 0