思いつきdeものづくり

3Dプリンターで新しいものづくりを。素人が工作に奮闘する製作記です。

よく使うArduinoの関数まとめ【Arduinoのいろは】

 

 

オカラボです。今回は特に何か作るといった気も起きないので、よく使うArduinoの関数を紹介したいと思います。

大学でC言語をやっているので、Arduinoの言語を忘れないようにという意味もありますが・・・

ではいきましょう。

 

 

 

 

このあたりが安くて手が出やすいです。

 

 

delayMicroseconds()

 

ミリ秒オーダーのdelay関数よりもより小さな時間を指定したいときに使う関数です。

delay関数のような遅延関数はC言語にあるんですかね?大学の講義では出てきませんでしたが。

()内で時間を指定しますが、これはマイクロ秒オーダーです。

A4988でステッピングモーターを回すときに使いますね。

 

okayamalabo.hatenablog.com

 

servo.write(角度)

 

サーボを回すときに用いる関数です。この関数を使うときは<Servo.h>をインクルードしてください。

 

f:id:okayamalabo:20181213204058p:plain

 

Servo servo;という部分でServo型の変数を宣言しています。

int a ;でint型の変数aを宣言するのと同じです。

ですので、Servo motor;と宣言したらservo.writeではなくmotor.writeとなります。

サーボモーターは余っているのでいつか何かを作るかもしれません。

 

・analogRead()

 

アナログピンからアナログ値をデジタル値で読み取る関数です。

可変抵抗器でモーターの速度や角度を変化させるときによく使います。

()内は使用するピンを入力します。基本はAから始まるピンです。

 

・Serial.println()

 

シリアルモニターに値を表示させる関数です。C言語のprintfと同じような関数ですね。

ちなみに、print"l"nですからね!print"I"nではないですからね!

違い、わかりますか?正しいのはl(L)ですよ。I(i)じゃないです。

私も最初はここではまりました。print inの方が意味的にそれっぽいですもん。

 

関数の()内には表示したい変数や文字列を入れます。文字列の場合は” ”でくくります。

例えば、val=100とします。

Serial.println(val) ⇒ 表示は「100」

Serial.println("val") ⇒ 表示は「val」

 

あ、プログラム例は以下です。analogReadと組み合わせてみました。

 

f:id:okayamalabo:20181213205220p:plain

printlnの下にdelayは入れましょう。入れないとモニタの数値の更新速度が大変なことになります。

 

・digitalRead()

 

今度はデジタル値を読む関数です。この関数は結果をHIGHかLOWで返してきます。

入力があればHIGH、入力がなければLOWです。

スイッチのオンオフを判断するときに使うことが多いです。

 

f:id:okayamalabo:20181213210849p:plain

 

・analogWrite()

 

出力を制御したいときに使う関数です。

ArduinoではdigitalWriteでHIGHを指定すると無条件に5Vが出力されますが、analogWriteを使うことで5V以外の電圧を出力することができます。

いわゆるPWM制御ですね。これでモーターの速度を調節したりします。(直接は無理ですが)

例えば5番ピンに出力するとき、()内には(5,255)と入力します。

この255とは出力の度合いです。

analogWrite関数では出力の度合いを0~255の256段階で指定することができます。

0はdifgitalWriteでいうLOW。255はHIGHとほぼ同じですね。

 

・map関数

 

最後です。

ある範囲の値を任意の範囲の値に変換する関数です。

ArduinoではdigitalReadなどで読み取る値は0~1023の範囲です。

また、analogWrite()で出力するときは0~255の範囲です。

ですので、map関数を用いて読み取った値に対応する出力を定義することができるわけですね。

analogReadの値を格納している変数をvalとするとmap(val,0,1023,0,255)となります。

以下はプログラム例。読み取り値をサーボモータの回転と対応させています。

 

f:id:okayamalabo:20181213212605p:plain