Arduino がどれだけすばらしいかって「発想から実現へ」の直截さが違うわけです。
例えばですね、明かりを消したいとします。つけた明かりが消えてほしい。一定時間たったら消えてほしいと思ったとします。
どうするかっていうとまず100V電源をいじらないといけないので、リレーを使います。5V回路で100Vを操作すると壊れるのでリレーで隔離するわけです。
このリレーですが、一定以上の電流が必要となります。Arduino 出力端子そのままだと心もとないので、こういうときはたいていトランジスタなどを使って電流を操作します。信号を増幅するわけですね。
まあ面倒なわけです。トランジスタ回路を組むというだけでなんか「仕事から帰ってきてこれって」とかいう気分が襲ってくる。
でそこは Arduino の世界なわけです。これがホントよくできててリレー・モジュールなるものが売っている。しかもいい値段で売っている。
(これです→http://www.ebay.com)
早い話がこれをつなぐとそれだけで明かりが消せます。そのままつなげばいい。タイマーをプログラムし、信号線をつなぐだけです。
まあしっかり懐中電灯など用意して動かしてみたわけなんですが、大丈夫でした。リセットボタンなど押すと明かりがついて、一時間たつと消えてくれます。
*)整数型では上限を超えてしまうので時間は long 型である必要があります。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int relayPin = 7; | |
int buttonPin = 3; | |
int ledPin = 13; | |
unsigned long start = 0; | |
void setup() { | |
pinMode(ledPin, OUTPUT); | |
pinMode(relayPin, OUTPUT); | |
pinMode(buttonPin, INPUT_PULLUP); | |
turnOn(); | |
delay(60*60*1000L); | |
turnOff(); | |
} | |
void turnOn() | |
{ | |
digitalWrite(relayPin, LOW); | |
digitalWrite(ledPin, HIGH); | |
} | |
void turnOff() | |
{ | |
digitalWrite(relayPin, HIGH); | |
digitalWrite(ledPin, LOW); | |
} | |
void loop() { | |
} |