マイコンについて
マイクロコントローラ通称マイコンとは冷蔵庫や洗濯機などの電子機器に組み込まれた電子機器を制御するための電子部品。 マイクロコントローラという名称のほかにMCU(Micro Controller Unit)、マイクロコンピュータとも呼ばれている。
電子部品の説明
名前 | 目的 |
---|---|
抵抗 | 抵抗は電気を流れにくくする電子部品。 流れる電気の量を制限したり調整したりすることで、 電子回路を適正に動作させる役割をもつ大切な部品。 |
コンデンサ | コンデンサは電気を蓄えたり放出したりする電子部品。 直流を通さないで絶縁するはたらきもあります。 電子回路では必ず使うと言って良いほど、 電子機器に欠かせない部品 |
トランジスタ | トランジスタは電気の流れをコントロールする部品。 半導体でできた能動部品の代表と言われるぐらいとても重要な部品で、 いろんな電子回路で活躍している。 |
ダイオード | ダイオードは、電気の流れを一方通行にする部品。 トランジスタやICなどと同じ仲間で、能動部品と呼ばれる。 半導体を用いた基本的な部品。 |
Inputデバイス
- スイッチ
- 明るさセンサー
- 温度センサー
- 湿度センサー
- カラーセンサー
- ジャイロセンサー
- GPS
Outputデバイス
- モーター
- LED
- ディスプレイ
LEDについて
LEDを使ったプログラムを組んでみる。LEDは長い方が+(アノード)で短い方が-(カソード)と呼ばれる。 早速LEDのアノードを13番にカソードをGNDに接続し、以下のプログラムをArduinoに記述し、書き込む。 すると0.5秒おきに点灯、消灯を繰り返すようになる。
- void setup() {
- // put your setup code here, to run once:
- pinMode(13,OUTPUT);
- }
- void loop() {
- // put your main code here, to run repeatedly:
- digitalWrite(13,HIGH);
- delay(500);
- digitalWrite(13,LOW);
- delay(500);
- }
プログラムのルール
まずArduinoではプログラムの最後に;がつく。またsetupとloopがあるがsetupは最初に一回だけ実行されるプログラムであり、loopは ずっと繰り返し実行されるプログラムとなる。最初のpinmodeは定したピンを入力用に使うのか、出力用に使うのかを設定する構文。 今回はLEDを点灯させるために13番ピンから電気を流したい(出力したい)ので、pinMode(13,OUTPUT);と記述する。digitalWriteは デジタルピンの出力をLOWかHIGHで設定する。Lowだと消え、Highだと点灯する。delayは指定された時間を待つ命令。単位はミリ秒となる。 1000にすると1秒待つことになる。
For構文
for文は波カッコに囲まれたブロックを繰り返し実行する。さまざまな繰り返し処理に活用でき、データやピンの配列と組み合わせて使われることがある。 まず初期化が一度だけ行われる。処理が繰り返されるたびに条件式がテストされ、trueならば波カッコ内の処理が実行され、加算が行われる。次に条件式が テストされたときにfalseならば、そこでループは終了。構文は以下の通り。
for (初期化; 条件式; 加算) {
// 実行される文 ;
}
- void setup() {
- // put your setup code here, to run once:
- pinMode(13,OUTPUT);
- }
- void loop() {
- // put your main code here, to run repeatedly:
- for(int i=0; i < 10; i++){
- digitalWrite(13,HIGH);
- delay(300);
- digitalWrite(13,LOW);
- delay(300);
- }
-
- for(int i=0; i < 3; i++){
- digitalWrite(13,HIGH);
- delay(2000);
- digitalWrite(13,LOW);
- delay(2000);
- }
- }
if文
if else文を使うと複数のテストをまとめることができる。elseに続けてifを書くことで、さらに複数のテストを書くことができる。 以下は構文例。
if (条件1) {
// 動作A
} else if (条件2) {
// 動作B
} else {
// 動作C
}
- void setup() {
- // put your setup code here, to run once:
- pinMode(13,OUTPUT);
- }
- void loop() {
- // intervalという変数を作って、間隔を制御する
- int interval=0;
-
- for(int i=0; i < 13; i++){
- if(i<10){
- // もしiが10より小さかったら間隔は0.3秒
- interval=300;
- }else{
- // そうじゃなかったら間隔は2秒
- interval=2000;
- }
- digitalWrite(13,HIGH);
- delay(interval);
- digitalWrite(13,LOW);
- delay(interval);
- }
- }