「テトリス」任天堂版を、オクラホマ州在住の13歳の少年ウィリス・ギブソンさんが「完全攻略」したそうです。レベル157です。得点「999999」でした。過去にはAIしか到達したことのない水準です。テトリスは古くからあるゲームですが、まだ攻略されてなかったんですね。すごいですね。人がゲームに勝ったわけですから、みんなで祝杯をあげないといけません。
「テトリス」任天堂版を、オクラホマ州在住の13歳の少年ウィリス・ギブソンさんが「完全攻略」したそうです。レベル157です。得点「999999」でした。過去にはAIしか到達したことのない水準です。テトリスは古くからあるゲームですが、まだ攻略されてなかったんですね。すごいですね。人がゲームに勝ったわけですから、みんなで祝杯をあげないといけません。
Arduino で遊・学・ Go & make (6) はリレーを使ってポンプを動かします。
プログラムの内容
容器に取り付けた液面検知器により水面を検知し、水面があるレベルに達するまでポンプを動かし、水を供給します。この容器にある出口から自然流下で水を流します。水面が所定のレベルより下がるのを検知した後600秒後にポンプを動かします。
ハードの準備
Arduino Mega 2560、水中ポンプ、液面検知器、5VDC電源、12VDC電源を使います。5VDC電源はリレーの駆動、12VDC電源はポンプの駆動に使います。これらの機器を下図のように接続します。
水の容器を2つ準備し、一つにはポンプを入れ、二つ目の容器にパイプを入れ、水が循環するようにします。二つ目の容器には液面検知器をつけます。
ソフトの準備
下記ソフトをArduino Mega 2560 に書き込んでください。Arduinoと電源に電気を供給するとシステムが動き始めます。
int val2 = 1;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(10,OUTPUT);
pinMode(8,INPUT);
}
// the loop routine runs over and over again forever:
void loop() {
val2 = digitalRead(8);
if(val2 == HIGH){digitalWrite(10, HIGH);}
else{digitalWrite(10,LOW);
delay(600000);
}
}
Arduino で遊・学・ Go & make (4) ではシリアルモニターの使い方について述べました。今回(5)はアナログピンを入力ピンとして使う方法について述べます。内容は下記の通りです。
プログラムの内容
アナログピン(A7)に0~5Vの電圧を入力し、その電圧を Arduino に読ませ、その値をシリアルモニターに出力します。読んだ電圧が1Vより大きければLEDを点灯させます。
ハードの準備
LED のプラス足を Digital 38 にさし、マイナス足を Arduino の GND に接続します。IDEは、ボードの設定(前回と同じなら、Arduino Mega 2560)とシリアルポートをcom1 に設定します。下図のようにA7とGNDを10Ωの抵抗を介して接続します。測定する電圧はA7とGND間にかけます。
ソフトの準備
1 シリアル」モニターのセットアップ
通信速度は 9600 になっています。IDEで ツールのシリアルモニタをクリックするとシリアルモニタが表示されます。このシリアルモニターの右下に通信速度を設定するところがありますので9600を選んでください。
2 プログラムの入力
下記のプログラムをIDEに入力し、Arduino に書き込んでください。
const int referenceVolts = 5;
const int batteryPin = A7;
void setup() {
Serial.begin(9600);
pinMode(38, OUTPUT);
}
void loop() {
float val = analogRead(batteryPin);
Serial.println(val);
float volts = (val / 1023) * referenceVolts;
Serial.println(volts);
delay(100);
if (volts > 1) {
digitalWrite(38, HIGH);
delay(100);
} else
digitalWrite(38, LOW);
delay(100);
}
書き込みが終わったら、シリアルモニターを駆動してください。Ref. Volt が5Vで、これを0-1023に分解して測定しています。シリアルモニターは、この0-1023間を比例配分した値と実際の電圧を表示します。電圧が1Vを超えるとLEDが点灯するのが分かります。
チェックポイント
1 if文のなかの数値 1を他の値に変更して書き込み、電圧判定基準が変わることをチェックする。
2 if文の中の比較記号を変えて (< など)判定基準が変わることをチェックする。
3 batteryPin の値を変え、接続を変えて動くことをチェックする。
ではまた次回。
Arduino で遊・学・ Go & make (3) でDigital 3が LOW の時にLEDを点滅させました。この時は、点滅間隔をプログラム上の数値を変えて変更しました。Arduinoには Human Interface としてシリアルモニターが準備されています。今回はこのシリアルモニターから数値を入力して点滅間隔を変更させます。内容は次の通りです。
ハードの準備
LED のプラス足を Digital 9 にさし、マイナス足を Arduino の GND に接続します。IDEは、ボードの設定(前回と同じなら、Arduino Mega 2560)とシリアルポートをcom1 に設定します。
ソフトの準備
1 シリアル」モニターのセットアップ
通信速度は 19200 になっています。IDEで ツールのシリアルモニタをクリックするとシリアルモニタが表示されます。このシリアルモニターの右下に通信速度を設定するところがありますので19200を選んでください。
2 プログラムの入力
下記のプログラムをIDEに入力し、Arduino に書き込んでください。
const int ledPin = 9;
int blinkRate = 0;
int incomingByte = 0;
void setup()
{
Serial.begin(19200);
pinMode(ledPin, OUTPUT);
}
void loop()
{
if (Serial.available())
{
char ch = Serial.read();
Serial.print("Received data : ");
Serial.println(ch, DEC);
if(ch >= '0' && ch <= '9')
{
blinkRate = (ch - '0');
blinkRate = blinkRate * 100;
}
}
if(blinkRate != 0)
{
blink();
}
}
void blink()
{
digitalWrite(ledPin, LOW);
delay(blinkRate);
digitalWrite(ledPin, HIGH);
delay(blinkRate);
}
プログラムが書き込めたらシリアルモニタを開きます。そして 0~9までの数字を入力してください。LEDが点滅を始めます。数字を変えれば点滅間隔が変わります。
さあ、 Arduino を 使ってみましょう。まず最小単位のハードは写真の通りです。
ボードは Arduino Mega 2560 です。
次のことを Arduino にやらせてみましょう。
Digital 9 ピンに抵抗内蔵のLEDをさし、Digital 3ピン がLOWになると、500msec 点灯させ、1000msec 消灯させます。 Digital 3 がLOW の間はこれを繰り返します。Digital 3 がHIGHになると消灯させます。
ハードの配線
1 抵抗内蔵 LED をArduino Mega 2560 の Digital 9に差し込みます。LEDはプラスとマイナスがあります。プラスの方を差し込みます。足の長いほうがプラスです。
2 LED のマイナスを Arduino の GND に接続します。
3 Arduino 5V と Digital 3にワイヤを差し込みます。 Digital 3 にワイヤがあったほうが反応がよくなるので入れてあります。Digital 3 をHIGHにする時は、5VとDigital 3のワイヤを接触させます。
ソフトウエアの作成
1 Arduino ボードとPCを接続ケーブルで接続します。
2 Arduino のIDE(開発ツール)をインストールしたフォルダーにいくと Arduino というフォルダーができています。その中に Arduino というファイルがあるので、それをダブルクリックしてください。そうすると IDEが立ち上がります。
3 Arduino の機種と ポートを合わせます。合わせ方は、ツールタブをクリックします。マイコンボードのところへマウスポインタを持っていくとボードの機種のリストが出てきますので、Arduino Mega 2560 を選んでクリックしてください。次にツール・シリアルポートにポインタを持っていき、com1が選ばれていることを確認してください。Arduinoのソフトの通信はcom1に決められていますので、com1でなければコントロールパネルから変更してください。
4 次のプログラムをIDEに入力してください。
int ledPin = 9; // LED connected to digital pin 9
int digitalPin = 3;
int val = 0; // variable to store the read value
void setup()
{
pinMode(ledPin, OUTPUT); // sets the pin as output
pinMode(digitalPin, INPUT);
}
void loop()
{
val = digitalRead(digitalPin); // read the input pin
if(val == LOW)
{
digitalWrite(ledPin, HIGH);
delay(500);
val = HIGH;
digitalWrite(ledPin,LOW);
delay(1000);
}
else
{
digitalWrite(ledPin, LOW);
}
}
入力が終わると、コンパイル(チェック記号)をクリックしてコンパイルしてください。エラーがなくなると、マイコンボードに書き込み(横矢印記号) を行ってください。書き込みが完了するとプログラムが動き出します。LEDの点滅が始まっているはずです。
ちょっとさわって、好奇心を満足させ、達成感を味わいましょう。
1 5VとDigital 3 に接続したワイヤを接触させてみましょう。LEDが消灯します。離すとLEDの点滅が始まります。
2 プログラムの下の方に、 delay(500); delay(1000);という記述がありますが、この数字はLED の点灯時間と消灯時間です。これらの数字を変えてコンパイル、書き込みをおこなうと LED の点滅時間が変わるのが分かります。
3 pinMode(ledPin, OUTPUT);という記述がありますが、これはピンの役割を指示しています。これをなくせばどうなるか見てみましょう。//pinMode(ledPin, OUTPUT); と//を追加するとこの行は無視されます。そうしてコンパイル、書き込みをやってみましょう。 LED の 輝きが弱くなったでしょう。LEDによってはほとんど点灯しないかもしれません。OUTPUT指示しなければ電流が少ししか流せなくなるのです。
プログラムの説明は http://www.solidphysics.co.jp/ArduinoTraining1.htm を見てください。
ちょっと気分がよくなってきましたか?本日はここまで。次回を楽しみにしていてください。
Arduinoを始める最初の一歩は開発環境の準備です。では順次そのやり方について記述します。
*ハードウエアの準備*
Arduinoの世界へのゲートをくぐったなと実感することが重要だと思います。ちょっとした達成感が自尊心をくすぐり、その後の進歩をサポートしてくれるでしょう。まず最小限のハードウエア(下記)を揃えましょう。
1 パソコン
2 Arduinoのボード
Arduinoのボードは多数準備されていて、どれを使おうかと迷われるかもしれません。それぞれちょっとした特徴を持っているのですが気にしていては前に進めません。ゲートをくぐることが重要ですので目をつぶって選択しましょう。私がよく使うのは、Arduino Mega 2560 や Arduino Uno です。それからパソコンとArduino ボードをつなぐケーブルが必要です。普通はボードに付属しています。
3 LED
LEDはArduinoボードにもついていてそれを使ってもよいのですが、Arduinoに対するイメージをクリアにするためにもLEDがあったほうがよいと思います。(そのほうが少しだけ達成感も大きいでしょう。)LEDといってもLED電球などではありません。2本足の単純なLEDです。通常のLEDは過電流を避けるために抵抗をつけますが、それよりも、すでに抵抗を内蔵しているLED(5V抵抗内蔵)が市販されていますのでそれを使うほうが簡単です。
*ソフトウエアの準備*
ArduinoのIDE(ソフト開発ツール)はArduinoのページからダウンロードします。Windows installer を使ってインストールしてもよいし、Windows ZIP file をダウンロードしてからインストールしてもよいです。ZIP ファイルがサブフォルダーにもある場合があって、パソコンによっては、サブフォルダーのZIPファイルを解凍してからでないとインストールできない場合があります。
ダウンロードのページは下記です。
http://arduino.cc/en/Main/Software#toc2
まずここまでやってみましょう。IDEを使ったソフト開発は次回からです。