Arduino勉強会/07-LEDで文字を表示する
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[Arduino勉強会]]
#contents
2014/12/13からのアクセス回数 &counter;
今回はクリスマスも近くなので、参加者の皆さんと話し合ってL...
いうことになりました。
** 文字を表示するブレッドボード [#ocf8373f]
文字を表示するために、7個のLEDを使います。
以下の様に、Arduino Mini Pro, LED, 抵抗((手元にあった470Ω...
を配線します。
LEDとArduinoとの間は、手元にある線の長さで自由につないで...
図では、分かりやすいように順番でつないでいます。
&ref(LED_Display_brd.png);
*** LEDがきちんと点灯するか確かめる [#od7b8ab8]
一番右(振るときには一番上)のLEDから0〜6番と番号を付けて...
番号をledsにセットします。
以下のスケッチでLEDが順番に点灯し、最後にすべて点灯するか...
#pre{{
#define NUM_OF_LED (7)
#define NUM_OF_CHARS (8)
static int mojiStr[][NUM_OF_LED] = {
{1,0,0,0,0,0,0},
{0,1,0,0,0,0,0},
{0,0,1,0,0,0,0},
{0,0,0,1,0,0,0},
{0,0,0,0,1,0,0},
{0,0,0,0,0,1,0},
{0,0,0,0,0,0,1},
{1,1,1,1,1,1,1}
};
static int leds[] = {3,4,5,6,9,8,7};
void setup() {
for (int i = 0; i < NUM_OF_LED; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i < NUM_OF_CHARS; i++) {
for (int j = 0; j < NUM_OF_LED; j++) {
digitalWrite(leds[j], mojiStr[i][j]);
}
delay(500);
}
}
}}
*** 配列の話し [#e1471d35]
ledsやmojiStrは配列と呼ばれるものです。
これまで、配列についてきちんと説明していなかったので、
ここで改めて配列って何なのか説明します。
配列は、複数の値を連続した領域に保存したもので、[]の中...
使って配列の中の値を読み込んだり、セットしたりすることが...
ledsは、1個の[]で定義された1次元配列です。
ledsという変数は、数値3, 4, 5, 6, 9, 8, 7が連続して保存さ...
きます。
配列の添え字は、0からはじまっており、配列ledsから2番目...
#pre{{
leds[1]
}}
のように書きます。
先ほどのスケッチのsetup関数では、変数iを使ってledsに入っ...
pinModeをOUTPUTにしています。
#pre{{
for (int i = 0; i < NUM_OF_LED; i++) {
pinMode(leds[i], OUTPUT);
}
}}
&ref(1-array.png);
次に2個の[]で定義された2次元配列mojiStrをみてみましょ...
mojiStrの値は、以下の様にセットされています。
&ref(2-array.png);
2次元配列は、1次元配列を縦にしたものと各行の値を持ってい...
mojiStr[0]と指定すると一番上の1,0,0,0,0,0,0が入った領域を...
このようにして、7個のLEDの値を添え字jのループでセットして...
#pre{{
for (int j = 0; j < NUM_OF_LED; j++) {
digitalWrite(leds[j], mojiStr[i][j]);
}
}}
少しずつ点灯しているLEDを変えることで、文字のが形を作り出...
** 左右対称の文字の表示 [#f2510819]
縦に並んだLEDを左右に振ることで、文字のような形を写しだし...
表示する文字(図形)は、左右対称であれば何でもかまいませ...
以下のスケッチでは、「TAO」を表示してみます。
#pre{{
#define NUM_OF_LED (7)
#define NUM_OF_HEIGHT NUM_OF_LED
#define NUM_OF_WIDTH (5)
#define NUM_OF_CHARS (3)
static int mojiStr[][NUM_OF_HEIGHT][NUM_OF_WIDTH] = {
// TAO
{ {1,1,1,1,1},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0} },
{ {0,0,1,0,0},
{0,1,0,1,0},
{1,0,0,0,1},
{1,0,0,0,1},
{1,1,1,1,1},
{1,0,0,0,1},
{1,0,0,0,1} },
{ {0,1,1,1,0},
{1,0,0,0,1},
{1,0,0,0,1},
{1,0,0,0,1},
{1,0,0,0,1},
{1,0,0,0,1},
{0,1,1,1,0} }
};
static int leds[] = {3,4,5,6,9,8,7};
void setup() {
for (int i = 0; i < NUM_OF_LED; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i < NUM_OF_CHARS; i++) {
for (int j = 0; j < NUM_OF_WIDTH; j++) {
for (int k = 0; k < NUM_OF_HEIGHT; k++) {
digitalWrite(leds[k], mojiStr[i][k][j]);
}
delay(4);
}
delay(8);
}
}
}}
*** スケッチの説明 [#sd2d6f49]
できるだけ、文字の形を確認しながら動かしたいので、mojiStr...
3次元の配列は、2次元の配列が何枚も重なっているようなもの...
loop関数のforループの一番内側では、i, j, kの添え字が、i, ...
#pre{{
digitalWrite(leds[k], mojiStr[i][k][j]);
}}
このようにループの順番を変えることで、表示順と定義の順番...
LEDを左右に振ると何となくT, O, Aに似た文字が出てくると思...
** 振る方向で表示の順番を変える [#y9ab5c06]
3軸の加速度をアナログ電圧で出力するセンサーKXM52-1050((秋...
以下の様にKXM52-1050をつなぎます。
&ref(LED-Display-KXM52.png);
ブレッドボードは、以下の様に作成しました。
&ref(LED-Display-KXM52-brd.png);
*** スケッチ [#x56e4c90]
まだ、完成とまでは言えませんが、現段階のスケッチを以下に...
#pre{{
#define NUM_OF_LED (7)
#define NUM_OF_HEIGHT NUM_OF_LED
#define NUM_OF_WIDTH (5)
#define NUM_OF_CHARS (3)
#define ZERO 505
#define SHIKI_CHI 200
static int mojiStr[][NUM_OF_HEIGHT][NUM_OF_WIDTH] = {
// TAO
{ {1,1,1,1,1},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0} },
{ {0,0,1,0,0},
{0,1,0,1,0},
{1,0,0,0,1},
{1,0,0,0,1},
{1,1,1,1,1},
{1,0,0,0,1},
{1,0,0,0,1} },
{ {0,1,1,1,0},
{1,0,0,0,1},
{1,0,0,0,1},
{1,0,0,0,1},
{1,0,0,0,1},
{1,0,0,0,1},
{0,1,1,1,0} }
};
static int leds[] = {3,4,5,6,9,8,7};
int dir = 1;
int start_i = 0;
int start_j = 0;
static int accPin = A1;
void setup() {
Serial.begin(9600);
Serial.println("Output acc value");
for (int i = 0; i < NUM_OF_LED; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop() {
int value = analogRead(accPin);
// Serial.println(value);
// delay(100);
if (abs(value - ZERO) >= SHIKI_CHI) {
// 方向に合わせて順序を変える
if (value - ZERO > 0) {
dir = -1;
start_j = NUM_OF_WIDTH-1;
start_i = NUM_OF_CHARS-1;
}
else {
dir = 1;
start_j = 0;
start_i = 0;
}
int ii = 0;
int jj = 0;
for (int i = 0; i < NUM_OF_CHARS; i++) {
ii = dir < 0 ? start_i - i : 0;
for (int j = 0; j < NUM_OF_WIDTH; j++) {
jj = dir < 0 ? start_j - j : 0;
for (int k = 0; k < NUM_OF_HEIGHT; k++) {
digitalWrite(leds[k], mojiStr[ii][k][jj]);
}
delay(4);
}
// 消灯
for (int k = 0; k < NUM_OF_HEIGHT; k++) {
digitalWrite(leds[k], 0);
}
delay(4);
}
// 消灯
for (int k = 0; k < NUM_OF_HEIGHT; k++) {
digitalWrite(leds[k], 0);
}
}
}
}}
文字は、はっきりしませんが、以下の様にでました。
&ref(moji-display.png);
** コメント [#s879bdca]
#vote(おもしろかった[43],そうでもない[1],わかりずらい[1])
皆様のご意見、ご希望をお待ちしております。勉強会で分から...
スパム防止に画像の文字列も入力してください。
#comment_kcaptcha
終了行:
[[Arduino勉強会]]
#contents
2014/12/13からのアクセス回数 &counter;
今回はクリスマスも近くなので、参加者の皆さんと話し合ってL...
いうことになりました。
** 文字を表示するブレッドボード [#ocf8373f]
文字を表示するために、7個のLEDを使います。
以下の様に、Arduino Mini Pro, LED, 抵抗((手元にあった470Ω...
を配線します。
LEDとArduinoとの間は、手元にある線の長さで自由につないで...
図では、分かりやすいように順番でつないでいます。
&ref(LED_Display_brd.png);
*** LEDがきちんと点灯するか確かめる [#od7b8ab8]
一番右(振るときには一番上)のLEDから0〜6番と番号を付けて...
番号をledsにセットします。
以下のスケッチでLEDが順番に点灯し、最後にすべて点灯するか...
#pre{{
#define NUM_OF_LED (7)
#define NUM_OF_CHARS (8)
static int mojiStr[][NUM_OF_LED] = {
{1,0,0,0,0,0,0},
{0,1,0,0,0,0,0},
{0,0,1,0,0,0,0},
{0,0,0,1,0,0,0},
{0,0,0,0,1,0,0},
{0,0,0,0,0,1,0},
{0,0,0,0,0,0,1},
{1,1,1,1,1,1,1}
};
static int leds[] = {3,4,5,6,9,8,7};
void setup() {
for (int i = 0; i < NUM_OF_LED; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i < NUM_OF_CHARS; i++) {
for (int j = 0; j < NUM_OF_LED; j++) {
digitalWrite(leds[j], mojiStr[i][j]);
}
delay(500);
}
}
}}
*** 配列の話し [#e1471d35]
ledsやmojiStrは配列と呼ばれるものです。
これまで、配列についてきちんと説明していなかったので、
ここで改めて配列って何なのか説明します。
配列は、複数の値を連続した領域に保存したもので、[]の中...
使って配列の中の値を読み込んだり、セットしたりすることが...
ledsは、1個の[]で定義された1次元配列です。
ledsという変数は、数値3, 4, 5, 6, 9, 8, 7が連続して保存さ...
きます。
配列の添え字は、0からはじまっており、配列ledsから2番目...
#pre{{
leds[1]
}}
のように書きます。
先ほどのスケッチのsetup関数では、変数iを使ってledsに入っ...
pinModeをOUTPUTにしています。
#pre{{
for (int i = 0; i < NUM_OF_LED; i++) {
pinMode(leds[i], OUTPUT);
}
}}
&ref(1-array.png);
次に2個の[]で定義された2次元配列mojiStrをみてみましょ...
mojiStrの値は、以下の様にセットされています。
&ref(2-array.png);
2次元配列は、1次元配列を縦にしたものと各行の値を持ってい...
mojiStr[0]と指定すると一番上の1,0,0,0,0,0,0が入った領域を...
このようにして、7個のLEDの値を添え字jのループでセットして...
#pre{{
for (int j = 0; j < NUM_OF_LED; j++) {
digitalWrite(leds[j], mojiStr[i][j]);
}
}}
少しずつ点灯しているLEDを変えることで、文字のが形を作り出...
** 左右対称の文字の表示 [#f2510819]
縦に並んだLEDを左右に振ることで、文字のような形を写しだし...
表示する文字(図形)は、左右対称であれば何でもかまいませ...
以下のスケッチでは、「TAO」を表示してみます。
#pre{{
#define NUM_OF_LED (7)
#define NUM_OF_HEIGHT NUM_OF_LED
#define NUM_OF_WIDTH (5)
#define NUM_OF_CHARS (3)
static int mojiStr[][NUM_OF_HEIGHT][NUM_OF_WIDTH] = {
// TAO
{ {1,1,1,1,1},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0} },
{ {0,0,1,0,0},
{0,1,0,1,0},
{1,0,0,0,1},
{1,0,0,0,1},
{1,1,1,1,1},
{1,0,0,0,1},
{1,0,0,0,1} },
{ {0,1,1,1,0},
{1,0,0,0,1},
{1,0,0,0,1},
{1,0,0,0,1},
{1,0,0,0,1},
{1,0,0,0,1},
{0,1,1,1,0} }
};
static int leds[] = {3,4,5,6,9,8,7};
void setup() {
for (int i = 0; i < NUM_OF_LED; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i < NUM_OF_CHARS; i++) {
for (int j = 0; j < NUM_OF_WIDTH; j++) {
for (int k = 0; k < NUM_OF_HEIGHT; k++) {
digitalWrite(leds[k], mojiStr[i][k][j]);
}
delay(4);
}
delay(8);
}
}
}}
*** スケッチの説明 [#sd2d6f49]
できるだけ、文字の形を確認しながら動かしたいので、mojiStr...
3次元の配列は、2次元の配列が何枚も重なっているようなもの...
loop関数のforループの一番内側では、i, j, kの添え字が、i, ...
#pre{{
digitalWrite(leds[k], mojiStr[i][k][j]);
}}
このようにループの順番を変えることで、表示順と定義の順番...
LEDを左右に振ると何となくT, O, Aに似た文字が出てくると思...
** 振る方向で表示の順番を変える [#y9ab5c06]
3軸の加速度をアナログ電圧で出力するセンサーKXM52-1050((秋...
以下の様にKXM52-1050をつなぎます。
&ref(LED-Display-KXM52.png);
ブレッドボードは、以下の様に作成しました。
&ref(LED-Display-KXM52-brd.png);
*** スケッチ [#x56e4c90]
まだ、完成とまでは言えませんが、現段階のスケッチを以下に...
#pre{{
#define NUM_OF_LED (7)
#define NUM_OF_HEIGHT NUM_OF_LED
#define NUM_OF_WIDTH (5)
#define NUM_OF_CHARS (3)
#define ZERO 505
#define SHIKI_CHI 200
static int mojiStr[][NUM_OF_HEIGHT][NUM_OF_WIDTH] = {
// TAO
{ {1,1,1,1,1},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0},
{0,0,1,0,0} },
{ {0,0,1,0,0},
{0,1,0,1,0},
{1,0,0,0,1},
{1,0,0,0,1},
{1,1,1,1,1},
{1,0,0,0,1},
{1,0,0,0,1} },
{ {0,1,1,1,0},
{1,0,0,0,1},
{1,0,0,0,1},
{1,0,0,0,1},
{1,0,0,0,1},
{1,0,0,0,1},
{0,1,1,1,0} }
};
static int leds[] = {3,4,5,6,9,8,7};
int dir = 1;
int start_i = 0;
int start_j = 0;
static int accPin = A1;
void setup() {
Serial.begin(9600);
Serial.println("Output acc value");
for (int i = 0; i < NUM_OF_LED; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop() {
int value = analogRead(accPin);
// Serial.println(value);
// delay(100);
if (abs(value - ZERO) >= SHIKI_CHI) {
// 方向に合わせて順序を変える
if (value - ZERO > 0) {
dir = -1;
start_j = NUM_OF_WIDTH-1;
start_i = NUM_OF_CHARS-1;
}
else {
dir = 1;
start_j = 0;
start_i = 0;
}
int ii = 0;
int jj = 0;
for (int i = 0; i < NUM_OF_CHARS; i++) {
ii = dir < 0 ? start_i - i : 0;
for (int j = 0; j < NUM_OF_WIDTH; j++) {
jj = dir < 0 ? start_j - j : 0;
for (int k = 0; k < NUM_OF_HEIGHT; k++) {
digitalWrite(leds[k], mojiStr[ii][k][jj]);
}
delay(4);
}
// 消灯
for (int k = 0; k < NUM_OF_HEIGHT; k++) {
digitalWrite(leds[k], 0);
}
delay(4);
}
// 消灯
for (int k = 0; k < NUM_OF_HEIGHT; k++) {
digitalWrite(leds[k], 0);
}
}
}
}}
文字は、はっきりしませんが、以下の様にでました。
&ref(moji-display.png);
** コメント [#s879bdca]
#vote(おもしろかった[43],そうでもない[1],わかりずらい[1])
皆様のご意見、ご希望をお待ちしております。勉強会で分から...
スパム防止に画像の文字列も入力してください。
#comment_kcaptcha
ページ名:
SmartDoc