3
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

中級者向け Arduino(組み込み系)コーディング時 リファレンス集

Last updated at Posted at 2017-12-04

概要

私のよく使う、ArduinoでのReferenceの閲覧先を項目ごとにまとめさせていただきました。間違っている部分は、ご指摘いただけると助かります。

関数の定義方法

関数の定義方法

voidではない型を使う場合は、下記のような記述

float output(int input){
   ~hogehoge~
   return 10.222 + 20.5 + input;
}
上記の文字でいうと 項目 内容
float 返却値の型 関数が返す値の型。関数が返却できる値は0個もしくは1個。2個以上の値を返却することはできない。(もちろん、float以外の型も使用可能。適宜合わせる)
output 関数名 呼び出すときに使う名称。(内容に合わせ適宜合わせる)
int 仮引数の型 仮引数の型の定義(もちろん、int以外も使用可能。適宜合わせる)。複数使用可能
input 仮引数 関数に渡す入力値。0個以上の入力を指定することができる
~hogehoge~ 内容 関数の実行内容
return return文 呼び出し元に値が返る。普通の式ならば「xxx = 10.222 + 20.5」となるが、そちらの「xxx」を「return」にし、イコールをなくす。そうすると、呼び出し元にこちらの答えが入る。

関数の呼び出し方法

 answer = output(18);

このときanswerには「10.222 + 20.5 + 18」の答えが入る。つまり「output(18)」には「10.222 + 20.5 + input」の値が返されている。

※以下を参考にさせていただきました。
[Arduino(C/C++言語)での関数]
(https://garretlab.web.fc2.com/arduino/clang/function/index.html)

マイコン的ノウハウ・Tips

二択での条件分岐の場合、変数はintではなくbooleanを使う

下記のような、二択(0と1)で切り替えわれば十分な場合、このrunをintにするか、boooleanにするかでスケッチ容量がかなり変わる。

if (run == true){
   ~hogehoge~
   run = !run
}

あるスケッチで、このrunをintとbooleanにした場合の比較では、1回しか使わない変数にもかかわらず、18バイトも容量が変わった。int型自体は2バイトを使って格納するにもかかわらず。

スケッチサイズ
int 7800バイト
boolean 7782バイト

[int (整数型) - Arduino 日本語リファレンス]
(http://www.musashinodenpa.com/arduino/ref/index.php?f=0&pos=1105)

[sketch - Program button to switch between two values - Arduino Stack Exchange]
(https://arduino.stackexchange.com/questions/8647/program-button-to-switch-between-two-values)

You can set it to true or false, or change it to it's opposite (with
value=!value as shown above). You can also do if value or if !value ("if not value") - these are equivalent to if value=true or if value=false.

pinMode(hogehoge, INPUT); 利用の場合、INPUT_PULLUPを利用すると便利

スイッチ入力などでオフを判断するには、電圧が0である必要がある。入力するピンの電圧が不安定になり、うっかり1の判断しないよう、入力ピンはグラウンドに接続する。その際、スイッチオンの時もVCCからグラウンドに電流が流れてはOnが判断できないため、抵抗を挟んで利用する。

だが、それだと配線が煩雑になる。

そのときに、INPUT_PULLUPを利用すると、INPUTするピンが電流を流す側になり、電流が流れていないときHighになり、スイッチが導通しgroundにつながるとlowになる。このように、スイッチのオンオフの判定は逆になるが、抵抗を外に挟む必要がなくなり、回路がシンプルになる。

詳細は以下にて
意外と知られていない?INPUT_PULLUP | スイッチサイエンス マガジン

スイッチの意図せぬ瞬間的なオンオフ(チャタリング)対策

オンした時に、5〜10ミリ秒後もオンなら「オンと判定」とするようです。オフも同様。

Arduino Playground - Bounce
電子回路で跳ねたり、引っ張り上げたりする話。 - シアトル生活はじめました

資料

Arduino - ASCIIchart

[逆引きArduino]
(https://garretlab.web.fc2.com/arduino/reverse_lookup/index.html)

型一覧・データの有効範囲

[Arduino(C/C++言語)でのデータ操作]
(https://garretlab.web.fc2.com/arduino/clang/data/index.html)

I2C

[How I2C Communication Works & How To Use It with Arduino]
(http://howtomechatronics.com/tutorials/arduino/how-i2c-communication-works-and-how-to-use-it-with-arduino/)

マイコンの仕組み

Arduinoではないが、マイコンの基本的な仕組みの理解に役立つ
「マイコン入門!! 必携用語集」最新記事一覧 - ITmedia Keywords

3
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?