「これ1冊でできる!Arduinoではじめる電子工作 超入門 改訂第5版」の感想・備忘録

スポンサーリンク

点数

70

感想

Arduinoの基本的な使い方や各種パーツを制御する方法が書かれていた。

モーターや各種センサーなどのパーツがないと試すことができない内容が多く、あまり勉強にならなかった。

用語など

スケッチ

  • Arduino IDEで作成するプログラムをスケッチと呼ぶ。

Arduino言語

  • C言語がベースになっている。
  • データ型はboolean, char, int, long, floatでboolean以外はunsignedも指定できる。
  • C言語と同じくString型はないので、char *str; str = “Hello”;のようにポインタを使う。

ブレッドボード

  • 固定的な電子回路を作成する場合は、基板に電子部品をはんだ付けする。
    そうでない場合はブレッドボードを使う。
  • ブレッドボードは縦に5個の穴があり、電気的に繋がっている。
  • 上下には電源・GND用の+-の穴が30個あり、横に電気的につながっている。

ジャンパー線

  • 列同士をつなげるにはジャンパー線(オス-オス)をブレッドボードの穴に差し込む。

抵抗

  • 電圧や電流を制御するための部品。
    極性はないのでどちら向きに差し込んでもよい。
  • 用途に応じて材料が異なるが、電子回路で利用する抵抗はカーボン抵抗(単位はΩ)である。
  • 抵抗の本体に描かれている線の色で抵抗値がわかるようになっている。 https://www.akaneohm.com/column/marking/

LED

  • 端子の長いアノード(A)をプラス、短いカソード(K)をマイナスに接続する。
  • 点灯に必要な順電圧と順電流を購入時にメモしておくとよい。

開発環境構築

Arduino IDEの準備

  • Arduino IDEをダウンロード、インストール
  • ツール > ボード、で使用するボード(Arduino Unoなど)を選択する。
  • ツール > シリアルポート、で/dev/cu.usbmodemXXXXXXを選択する、

LEDを光らせる電子回路

  • 基盤の5Vソケットとブレッドボードのプラス電源を接続
  • ブレッドボードのプラス電源とLEDのアノードを接続
  • LEDのカノードと抵抗を接続
  • 抵抗とブレッドボードのマイナス電源を接続
  • ブレッドボードのマイナス電源と基盤のGNDソケットを接続

プログラムで電子回路を制御

  • デジタル入出力ソケットとLEDのアノードを接続
    デジタル出力はPD0からPD13のどこでも良い。
  • カソードと抵抗を接続
  • 抵抗とGNDを接続
    GNDはPD13の隣でも、下側のPOWERのGNDでも良い。
void setup() {
  pinMode(8, OUTPUT);
}
void loop() {
  digitalWrite(8, HIGH);
  delay(1000);
  digitalWrite(8, LOW);
  delay(1000);
}

回路の状態を読み取る

デジタル入出力ソケットは入力にも対応していて、例えばスイッチのON/OFF状態を取得することができる。
ここではタクトスイッチを使う。
タクトスイッチは、ブレッドボード中央にある溝をまたぐようにして差し込む

  • タクトスイッチの一方をデジタル入出力ソケットおよび抵抗と接続
  • 抵抗とブレッドボードのマイナス電源を接続 ブレッドボードのマイナス電源と基盤のGNDソケットを接続
  • 基盤のGNDソケットとブレッドボードのマイナス電源を接続
  • タクトスイッチのもう一方と基盤の5Vを接続
void setup() {
  pinMode(8, INPUT);
  Serial.begin(9600);
}
void loop() {
    Serial.println(digitalRead(8));
    delay(1000);
}
// スイッチを押している時は1、押していない時は0、がシリアルモニタに表示される

ボタンを押した回数をカウントする

上記のプログラムを以下のように修正。

int count = 0;
void setup() {
  pinMode(8, INPUT);
  Serial.begin(9600);
}
void loop() {
  if (digitalRead(8) == 1) {
    count++;
    Serial.print("Count=");
    Serial.println(count);
    while(digitalRead(8) == 1) {
      delay(100);
    }
  }
}
// ボタンを押し続けている間はカウントされないように、while文でループさせ次の処理に進まないようにしている

コメント