差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
gimmickkouza:electronic_basic:3:5_variable [2024/05/27 19:14] – [テーブル] lutamesta | gimmickkouza:electronic_basic:3:5_variable [2024/06/21 18:26] (現在) – lutamesta | ||
---|---|---|---|
行 2: | 行 2: | ||
Arduino言語のプログラミングでは、「変数」に数値や文字列を記憶させたり、呼び出したり、計算や処理をして便利に使うことができます。 | Arduino言語のプログラミングでは、「変数」に数値や文字列を記憶させたり、呼び出したり、計算や処理をして便利に使うことができます。 | ||
多くの人にはなじみのない言葉ですが、Arduinoでプログラミングをする上で変数は非常に大事な概念で、__**超便利かつ不可欠で将来にわたってめちゃくちゃ使います。**__ | 多くの人にはなじみのない言葉ですが、Arduinoでプログラミングをする上で変数は非常に大事な概念で、__**超便利かつ不可欠で将来にわたってめちゃくちゃ使います。**__ | ||
+ | |||
===== 変数とは何か ===== | ===== 変数とは何か ===== | ||
行 10: | 行 10: | ||
{{: | {{: | ||
- | + | ||
- | === 変数を定義しよう === | + | === 変数を宣言しよう === |
変数を使うためには、 | 変数を使うためには、 | ||
* データ型(=この変数には何を入れられるか) | * データ型(=この変数には何を入れられるか) | ||
* 変数名(=その変数の名前) | * 変数名(=その変数の名前) | ||
- | を定義しておく必要があります。 | + | を定義しておく必要があります。これを変数の宣言と呼びます。 |
例えば、" | 例えば、" | ||
行 26: | 行 26: | ||
{{: | {{: | ||
+ | |||
+ | === 変数の名前ってどうつければいいの? === | ||
+ | |||
+ | 変数の名前は英数字が使用でき、かつ変数名の最初の文字がアルファベットで始まる必要があります。 | ||
+ | この章では説明の為に敢えて簡素な変数名(例えばvalue)にしていますが、一般的には英語を使った説明的な名前が望ましいです。 | ||
+ | 例えば光センサの値を入れる変数であればlightSensorとか、まばたきをするためのボタンならblinkButtonといった感じでしょうか。 | ||
+ | 何が分かりやすい名前かは、搭載する電子部品の種類や数、プログラムの内容によって変わってくるので、適宜考えましょう。 | ||
+ | |||
+ | またArduinoのプログラムで命令などに使われるお決まりの単語は変数名には使えません(これを予約語といいます) | ||
+ | |||
+ | |||
=== 変数に入れられるものは型次第 === | === 変数に入れられるものは型次第 === | ||
- | int型は、-32,768~32,767までの2バイトの整数を入れることができるデータ型です(これはUno R3基準です。詳細は後述します) | + | さて、先程" |
+ | |||
+ | int型は、__-32768~32767までの2バイトの整数__を入れることができるデータ型です(これはUno R3基準です。詳細は後述…) | ||
なので、このvalueという変数には、420という数値を入れることができます。 | なので、このvalueという変数には、420という数値を入れることができます。 | ||
- | またこの420を、1や、32や、7,786や、-459などの数値と入れかえることもできます。 | + | またこの420を、1や、32や、7786や、-459などの数値と入れかえることもできます。 |
- | ですが998,750は…このvalueには大きすぎて入りません。 | + | ですが998750は…このvalueには大きすぎて入りません(32767までの数字しか入らないからね~) |
また小数に対応していないので、0.29も入りません。 | また小数に対応していないので、0.29も入りません。 | ||
大きな数を入れたい時のデータ型はlong型、小数を入れたい時はfloat型を使う必要があります。(各型の詳しい違いも後述するよ!) | 大きな数を入れたい時のデータ型はlong型、小数を入れたい時はfloat型を使う必要があります。(各型の詳しい違いも後述するよ!) | ||
行 43: | 行 56: | ||
< | < | ||
- | これによりできた右概念図の変数valueの中は、90という数値が初期値としてセットされています。 | + | これによりできたint型の変数valueの中には、90という数値が初期値としてセットされています。 |
{{: | {{: | ||
行 57: | 行 70: | ||
=== 変数の中身は計算もできる === | === 変数の中身は計算もできる === | ||
- | 変数の中身は単純に入れ替えるだけでなく、計算によって加減乗除をすることもできます。 | + | 変数の中身は単純に入れ替えるだけでなく、計算によって加減乗除などをすることもできます。 |
< | < | ||
行 64: | 行 77: | ||
</ | </ | ||
- | まず一行目の記述により、初期値として90入りの変数valueが宣言されました。 | + | まず一行目の記述により、初期値として90入りのint型の変数valueが宣言されました。 |
- | その次の行では「いま入っているvalueの中身に1600を足す」計算をしています。 | + | その次の行では「いま入っているvalueの中身に1600を足す」計算をしています。 |
1600 + 90 の結果、最終的にvalueの中には1690の数値が残りました。 | 1600 + 90 の結果、最終的にvalueの中には1690の数値が残りました。 | ||
+ | (Arduinoで計算式を書くときのルールはこのページの一番下のTipsにまとめてるよ!) | ||
{{: | {{: | ||
行 75: | 行 89: | ||
以上が変数の基本です! | 以上が変数の基本です! | ||
ちょっとわかりにくいかもしれませんが、実際にプログラム上で扱いながら覚えていけばいいと思います。 | ちょっとわかりにくいかもしれませんが、実際にプログラム上で扱いながら覚えていけばいいと思います。 | ||
- | + | ||
+ | |||
===== 変数のデータ型について ===== | ===== 変数のデータ型について ===== | ||
==== よく使うデータ型一覧表 ==== | ==== よく使うデータ型一覧表 ==== | ||
行 82: | 行 96: | ||
変数のデータ型(=変数の中身にどういうデータを入れられるか)には、さまざまな種類があります。 | 変数のデータ型(=変数の中身にどういうデータを入れられるか)には、さまざまな種類があります。 | ||
よく使うものを一覧表にして比較しました。 | よく使うものを一覧表にして比較しました。 | ||
+ | |||
+ | ^ データ型の名前 | ||
+ | | bool\\ (boolean) | ||
+ | | char | 文字を数値として記憶する型\\ 1バイトで一文字 | ||
+ | | int | R4系では4バイト、\\ R3系等の大半のArduinoでは\\ 2バイトの整数を代入できる型 | ||
+ | | long | 4バイトの整数を代入できる型 | ||
+ | | float | 4バイトの小数を代入できる型 | ||
- | ^ データ型の名前 | + | R4とR3で利用できる数値が異なる問題については、こちらで補足しています:[[gimmickkouza: |
- | | bool\\ (boolean) | + | |
- | | char | 文字を数値として記憶する型\\ 1バイトで一文字 | + | /*<alert type=" |
- | | int | R4系では4バイト、\\ R3系等の大半のArduinoでは\\ 2バイトの整数を代入できる型 | + | https:// |
- | | long | 4バイトの整数を代入できる型 | -2, | + | </ |
- | | float | 4バイトの小数を代入できる型 | 3.4028235E+38\\ ~\\ -3.4028235E+38 | + | |
- | + | ||
==== 各データ型の使い方例 ==== | ==== 各データ型の使い方例 ==== | ||
各例はコピーしてloop部の内部に貼り付けることで動作確認ができます。 | 各例はコピーしてloop部の内部に貼り付けることで動作確認ができます。 | ||
行 153: | 行 172: | ||
配列はかなり難しい概念なので本資料での説明は割愛します(気になる人はぜひ調べてほしいですが、中級者以上になってからを推奨します…) | 配列はかなり難しい概念なので本資料での説明は割愛します(気になる人はぜひ調べてほしいですが、中級者以上になってからを推奨します…) | ||
- | 複数の文字列を扱いたい場合は、より複雑で便利な処理ができて、どちらかというとcharよりも簡単(個人の感想です)なStringクラス(後述)の使用をおすすめします。 | + | 複数の文字列を扱いたい場合は、より複雑で便利な処理ができて、どちらかというとcharよりも簡単(個人の感想です)なStringクラス(3-6を見てね!)の使用をおすすめします。 |
またシリアルモニタの項の復習になりますが、複数文字のデータなので、文字列は ' ' ではなく " " で囲います。 | またシリアルモニタの項の復習になりますが、複数文字のデータなので、文字列は ' ' ではなく " " で囲います。 | ||
行 161: | 行 180: | ||
=== long型 === | === long型 === | ||
< | < | ||
- | long hikazeide_hosii | + | long value1 |
- | long genzitu | + | long value2 |
- | genzitu | + | value2 |
</ | </ | ||
+ | 1行目: | ||
+ | long型の変数value1を宣言して、中身に500, | ||
+ | 2行目: | ||
+ | 同じくlong型の変数value2に、-150, | ||
+ | 3行目: | ||
+ | intの例と同じように、2つの変数同士で足し算の計算をさせています。 | ||
+ | この行のよりも後ろで Serial.println(value2); | ||
+ | シリアルモニタからvalue2の計算結果を表示できます。 | ||
+ | === float型 === | ||
+ | < | ||
+ | float sensor = 7.16; | ||
+ | sensor = sensor / 9.9999; | ||
+ | </ | ||
+ | 1行目: | ||
+ | float型の変数sensorを宣言して、中身に7.16の数値を入れます。 | ||
+ | 2行目: | ||
+ | sensorを9.9999で割り、その計算結果でsensorの中身を上書きしています。 | ||
+ | sensorの中身をシリアルモニタで表示すると、小数第3位が丸められ0.72と出ます。 | ||
+ | Serial.println(sensor, | ||
+ | ---- | ||
+ | <panel type=" | ||
+ | 人間の世界での計算式とArduinoの世界での計算式では、書き方に若干の違いがあります。 | ||
+ | まずArduinoの世界では、加減乗除をする際には下記の記号を使う必要があります。 | ||
+ | * 足し算:半角記号の「+」(プラス) | ||
+ | * 引き算:半角記号の「-」(マイナス) | ||
+ | * 掛け算:半角記号の「*」(アスタリスク) | ||
+ | * 割り算:半角記号の「/ | ||
- | === float型 | + | また変数の解説でも出てきましたが、Arduinoでの計算式の書き方は、 |
+ | ** 計算結果を入れる変数 = 項1 計算記号 項2** となります。常に一番左側に計算結果が来ると覚えればOKです。 | ||
+ | 以下にArduinoでの計算例をいくつか挙げてみます(value1~3の変数はすべてint型とします) | ||
+ | |||
+ | < | ||
+ | value1の結果は800となります | ||
+ | |||
+ | < | ||
+ | 複数の項を持つ計算ももちろん可能です | ||
+ | value2の結果は1400となります | ||
+ | |||
+ | < | ||
+ | 人間世界と同じように、Arduinoの計算式では()を使うことができます | ||
+ | value3の結果は100となります | ||
+ | |||
+ | ---- | ||
+ | |||
+ | 最後に、加減乗除以外にも、計算に使える便利な記号があります。 | ||
+ | |||
+ | * 半角記号の「%」→割った数の余りを求められます | ||
+ | < | ||
+ | int value4 = 0; | ||
+ | value4 = 9 % 4; | ||
+ | </ | ||
+ | value4は9÷4の余りである1となります | ||
+ | |||
+ | * 半角記号の「++」(プラス2個)→整数値の変数の値に1を足す | ||
+ | < | ||
+ | int value5 = 5; | ||
+ | value5 = value5++; | ||
+ | </ | ||
+ | value5は+1されて6となります(value5 = value5 + 1 と同じ効果を持ちます) | ||
+ | |||
+ | * 半角記号の「--」(マイナス2個)→整数値の変数の値から1を引く | ||
+ | < | ||
+ | int value5 | ||
+ | value5 | ||
+ | </ | ||
+ | value6は-1されて4となります(value6 | ||
+ | |||
+ | |||
+ | ---- | ||
+ | 今すぐに全部覚えなくても大丈夫です。後の章で出てくるものもありますので、実践しながら覚えていきましょう。 | ||
+ | |||
+ | </ |