IT大生、洋楽和訳とプログラミング

これからのIT時代を生き抜くブログ。

Arduino の使い方

最終更新 2020/12/01 14:19

Arduino(アルディーノ)とはなんぞや

マイコンボードと、開発環境がセットになったものです。

ハードウェアの使用はこちらを参照してください。(英語)

Arduino - ArduinoBoardDuemilanove

 

できること

Aruduinoでできることは

  • ピンの電圧を5V/0Vで切り替えること
  • ピンにかかる電圧が
    2.5V以上なら1, 2.5V未満なら0を出力
  • ピンにかかる電圧を0~1023 で出力
  • プログラムを実行すること

が大まかなものです。

 

C言語との違い

C言語との違いは、main関数がない事です。代わりに、setup 関数とloop 関数があるので、その二つに命令を書いていきます。

setup() とloop()

setup() が「コンストラクタ」的な役割を持ち、loop() はfor文的な役割を持ちます。

do-while 文の関係と考えてもいいかもしれません。

 

まずはサンプルプログラムで動きを確認

Arduino IDEの「ファイル」、「スケッチ例」、「01.BASICS」、「Blink」の順に辿ると、以下のサンプルプログラムが表示されます。

 

void setup() {
// デジタルピンLED_BUILTINをアウトプット用に初期化する
pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
digitalWrite(LED_BUILTIN, HIGH); // LEDをON(HIGH is the voltage level)
delay(1000); // 1秒スリープ
digitalWrite(LED_BUILTIN, LOW); // 電圧を下げてLEDをOFF
delay(1000); // 1秒スリープ
}

 

 

プログラムをコンパイルした後、マイコンボードに書き込むと、LEDが1秒おきに点灯と消灯を繰り返すことが確認できます。

 

関数を見ていきましょうね。

  • pinMode 関数
    (設定するピンの番号, モード)を設定します。
  • digitalWrite 関数
    (設定するピンの番号, 書き込む内容)

 

ピンの構成とかはどうなってんねん

f:id:rhe_9:20201201142613j:plain

 見た目はこんな感じです。

写真の右下がパソコンと繋ぐための端子、その上が電源供給用で4つにわかれた端子の列があります。

それぞれのピンの役割は、以下の記事から引用します。

https://n.mtng.org/ele/arduino/board.pdf

DIGITAL の機能と、ピン番号

 

f:id:rhe_9:20201201142959p:plain

 POWER, ANALOG IN

f:id:rhe_9:20201201143037p:plain

出力に使えるピンは合計19本あります。2~13番のピンを使うと良いそうです。2~13ピンでデジタル「入力」を使う時や、A0~A5でアナログ「入力」を使う場合は、pinModeを書かなくても良いですが、それ以外の場合は次のようにプログラムを書いて、アナログとデジタルの切り替えを行います。これは、出力同士になっていると、どちらも出力しようとして壊れる恐れがあるからです。よって、出力に切り替えたい場合は先程出てきた関数、pinMode を使います。ex : pinMode(2, OUTPUT)for文を使えば複数のピンを一気に出力に切り替えることもできますね。

 

モーターを動かすには

マイコンから電圧を出力するにはデジタル出力を使えば良いです。プログラムの制御によってHIGH or LOW を設定できるので「プログラムから制御できる電源」として扱うことができます。しかし、それだけでは電圧が不足してしまうので、モータードライバを噛ませる必要があるようです。(流せる電流は10mAにするといい)

 

ArduinoにはFF Tのライブラリやサンプルがある!詳細のコーディングをしなくても使うことができる。

もっといい機能もある。パソコンで簡単にデバッグができる。どんな信号が来てるかエクセルなどで分析ができる。どんな周波数が来てるか。モーターのノイズはどんな周波数なのか。

ハードウェアには電源の機能があるので安定的に増幅回路やマイクロフォン。電池では容量がなくなると不安定になるので、アラディーノなら安定的な5Vの電源を供給できるので便利です。

サンプルコードが非常に多いので、それらの組み合わせだけでも動かすことができるでしょう。

 

リファレンスはこちら

Arduino 日本語リファレンス

超わかりやすいサイトはこっち

Arduino のすすめ

AD変換でモータを回したい

モータードライバー(TA7291P)の使い方 [Arduino]

www.petitmonte.com

Arduino電子工作の基本⑦ 電圧を読み取る | Device

https://ppdr.softether.net/esp-fft-test

 

FIRフィルタとは

ノイズを除去したいと考えた時、このワードがヒットしました。

FIRとはデジタルフィルタの一種で、インパルス応答が有限の長さで終わるものだそうです。

(Finite Impulse Response)

他にもIIRがあり、使い分けが明確に分かれているらしい。

FIRとIIRの選択 - Allisone

 FIRが適しているケース

位相歪が許されない場合。リアルタイム動作で、多少の遅延は許されるが「位相歪」