差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
gimmickkouza:electronic_basic:3:5_variable [2024/05/27 19:36] lutamestagimmickkouza:electronic_basic:3:5_variable [2024/06/21 18:26] (現在) lutamesta
行 2: 行 2:
 Arduino言語のプログラミングでは、「変数」に数値や文字列を記憶させたり、呼び出したり、計算や処理をして便利に使うことができます。 Arduino言語のプログラミングでは、「変数」に数値や文字列を記憶させたり、呼び出したり、計算や処理をして便利に使うことができます。
 多くの人にはなじみのない言葉ですが、Arduinoでプログラミングをする上で変数は非常に大事な概念で、__**超便利かつ不可欠で将来にわたってめちゃくちゃ使います。**__ 多くの人にはなじみのない言葉ですが、Arduinoでプログラミングをする上で変数は非常に大事な概念で、__**超便利かつ不可欠で将来にわたってめちゃくちゃ使います。**__
 +  
  
 ===== 変数とは何か ===== ===== 変数とは何か =====
行 10: 行 10:
 {{:gimmickkouza:electronic_basic:3:3-11.png?|}} {{:gimmickkouza:electronic_basic:3:3-11.png?|}}
  
- +   
-=== 変数を定義しよう ===+=== 変数を宣言しよう ===
 変数を使うためには、 変数を使うためには、
   * データ型(=この変数には何を入れられるか)   * データ型(=この変数には何を入れられるか)
   * 変数名(=その変数の名前)    * 変数名(=その変数の名前) 
-を定義しておく必要があります。+を定義しておく必要があります。これを変数の宣言と呼びます。
  
 例えば、"データ型がint型のvalueという名前の変数"を宣言するときの書き方は以下の通りです。 例えば、"データ型がint型のvalueという名前の変数"を宣言するときの書き方は以下の通りです。
行 26: 行 26:
  
 {{:gimmickkouza:electronic_basic:3:3-12.png?|}} {{:gimmickkouza:electronic_basic:3:3-12.png?|}}
 +
 +=== 変数の名前ってどうつければいいの? ===
 +
 +変数の名前は英数字が使用でき、かつ変数名の最初の文字がアルファベットで始まる必要があります。
 +この章では説明の為に敢えて簡素な変数名(例えばvalue)にしていますが、一般的には英語を使った説明的な名前が望ましいです。
 +例えば光センサの値を入れる変数であればlightSensorとか、まばたきをするためのボタンならblinkButtonといった感じでしょうか。
 +何が分かりやすい名前かは、搭載する電子部品の種類や数、プログラムの内容によって変わってくるので、適宜考えましょう。
 +
 +またArduinoのプログラムで命令などに使われるお決まりの単語は変数名には使えません(これを予約語といいます)
 +
 +
 === 変数に入れられるものは型次第 === === 変数に入れられるものは型次第 ===
  
-int型は、-32768~32767までの2バイトの整数を入れることができるデータ型です(これはUno R3基準です。詳細は後述します)+さて、先程"データ型がint型のvalueという名前の変数"を宣言しました。 
 + 
 +int型は、__-32768~32767までの2バイトの整数__を入れることができるデータ型です(これはUno R3基準です。詳細は後述)
 なので、このvalueという変数には、420という数値を入れることができます。 なので、このvalueという変数には、420という数値を入れることができます。
 またこの420を、1や、32や、7786や、-459などの数値と入れかえることもできます。 またこの420を、1や、32や、7786や、-459などの数値と入れかえることもできます。
  
-ですが998750は…このvalueには大きすぎて入りません+ですが998750は…このvalueには大きすぎて入りません(32767までの数字しか入らないからね~)
 また小数に対応していないので、0.29も入りません。 また小数に対応していないので、0.29も入りません。
 大きな数を入れたい時のデータ型はlong型、小数を入れたい時はfloat型を使う必要があります。(各型の詳しい違いも後述するよ!) 大きな数を入れたい時のデータ型はlong型、小数を入れたい時はfloat型を使う必要があります。(各型の詳しい違いも後述するよ!)
行 43: 行 56:
 <code>int value = 90;</code> <code>int value = 90;</code>
  
-これによりできた右概念図の変数valueの中は、90という数値が初期値としてセットされています。+これによりできたint型の変数valueの中は、90という数値が初期値としてセットされています。
  
 {{:gimmickkouza:electronic_basic:3:3-14.png?|}} {{:gimmickkouza:electronic_basic:3:3-14.png?|}}
行 57: 行 70:
 === 変数の中身は計算もできる === === 変数の中身は計算もできる ===
  
-変数の中身は単純に入れ替えるだけでなく、計算によって加減乗除をすることもできます。+変数の中身は単純に入れ替えるだけでなく、計算によって加減乗除などをすることもできます。
  
 <code> <code>
行 64: 行 77:
 </code> </code>
  
-まず一行目の記述により、初期値として90入りの変数valueが宣言されました。 +まず一行目の記述により、初期値として90入りのint型の変数valueが宣言されました。 
-その次の行では「いま入っているvalueの中身に1600を足す」計算をしています。                   +その次の行では「いま入っているvalueの中身に1600を足す」計算をしています。
 1600 + 90 の結果、最終的にvalueの中には1690の数値が残りました。 1600 + 90 の結果、最終的にvalueの中には1690の数値が残りました。
 +(Arduinoで計算式を書くときのルールはこのページの一番下のTipsにまとめてるよ!)
  
 {{:gimmickkouza:electronic_basic:3:3-16.png?|}} {{:gimmickkouza:electronic_basic:3:3-16.png?|}}
行 75: 行 89:
 以上が変数の基本です! 以上が変数の基本です!
 ちょっとわかりにくいかもしれませんが、実際にプログラム上で扱いながら覚えていけばいいと思います。 ちょっとわかりにくいかもしれませんが、実際にプログラム上で扱いながら覚えていけばいいと思います。
- +   
 +  
 ===== 変数のデータ型について ===== ===== 変数のデータ型について =====
 ==== よく使うデータ型一覧表 ==== ==== よく使うデータ型一覧表 ====
行 82: 行 96:
 変数のデータ型(=変数の中身にどういうデータを入れられるか)には、さまざまな種類があります。 変数のデータ型(=変数の中身にどういうデータを入れられるか)には、さまざまな種類があります。
 よく使うものを一覧表にして比較しました。 よく使うものを一覧表にして比較しました。
 +  
 ^  データ型の名前    説明                                                                        ^  実際に利用できる数値                                                      備考(と講師の感想)                                                                                                                                                                                                                                                                                                ^ ^  データ型の名前    説明                                                                        ^  実際に利用できる数値                                                      備考(と講師の感想)                                                                                                                                                                                                                                                                                                ^
-| bool\\ (boolean)  | false(偽、数値なら0)か\\ true(真、数値なら1)の\\ どちらかを代入できる型      | 0か1                                                                      | 0か1の二値を扱えるので、LEDやスイッチのON/OFF等に使える。\\ 今はboolという名前だが、かつてはbooleanという名前が使われていた。                                                                                                                                                                                      |+| bool\\ (boolean)  | false(偽、数値なら0)か\\ true(真、数値なら1)の\\ どちらかを代入できる型      | false(0)true(1)                                                         | 0か1の二値を扱えるので、LEDやスイッチのON/OFF等に使える。\\ 今はboolという名前だが、かつてはbooleanという名前が使われていた。                                                                                                                                                                                      |
 | char              | 文字を数値として記憶する型\\ 1バイトで一文字                                 | -128~127                                                                 | Arduinoで文字データを扱いたい場合はこのchar型か、後述するStringクラスを使う。\\ charは文字を数値として扱う(例えば'A'は65、'B'は66)ので、\\ 'A'の入ったcharの変数に+1をすると中身が'B'に変化するといった使い方もできます。                                                                                          | | char              | 文字を数値として記憶する型\\ 1バイトで一文字                                 | -128~127                                                                 | Arduinoで文字データを扱いたい場合はこのchar型か、後述するStringクラスを使う。\\ charは文字を数値として扱う(例えば'A'は65、'B'は66)ので、\\ 'A'の入ったcharの変数に+1をすると中身が'B'に変化するといった使い方もできます。                                                                                          |
 | int               | R4系では4バイト、\\ R3系等の大半のArduinoでは\\ 2バイトの整数を代入できる型  | R4系では\\ -2,147,483,648\\ ~2,147,483,647\\ R3系では\\ -32,768~32,767  | そんなにケタが大きくない整数を扱う場合に一般的に使われる型。\\ R4系ではボードの性能がつよつよになった結果、\\ longと同じ範囲の整数を扱えるようになっているが、\\ 実際にきぐるみの実装に使うマイコンはR3系の可能性が高いです。\\ なので互換性の観点から、当面はR4でもR3と同じ基準でintを使った方が無難と思います。  | | int               | R4系では4バイト、\\ R3系等の大半のArduinoでは\\ 2バイトの整数を代入できる型  | R4系では\\ -2,147,483,648\\ ~2,147,483,647\\ R3系では\\ -32,768~32,767  | そんなにケタが大きくない整数を扱う場合に一般的に使われる型。\\ R4系ではボードの性能がつよつよになった結果、\\ longと同じ範囲の整数を扱えるようになっているが、\\ 実際にきぐるみの実装に使うマイコンはR3系の可能性が高いです。\\ なので互換性の観点から、当面はR4でもR3と同じ基準でintを使った方が無難と思います。  |
行 90: 行 104:
 | float             | 4バイトの小数を代入できる型                                                  | 3.4028235E+38\\ ~\\ -3.4028235E+38                                       | 小数を扱いたい場合に使う型。割り算の答えやセンサから読み取った値など、\\ 小数点以下の数値が出る場合はfloatを使うと覚えておけばOK。\\ 使える範囲が広い分intやlongといった整数型より計算に時間がかかるので、\\ 小数を使わない(整数のみ)のであれば整数型を使った方がいいです。                                        | | float             | 4バイトの小数を代入できる型                                                  | 3.4028235E+38\\ ~\\ -3.4028235E+38                                       | 小数を扱いたい場合に使う型。割り算の答えやセンサから読み取った値など、\\ 小数点以下の数値が出る場合はfloatを使うと覚えておけばOK。\\ 使える範囲が広い分intやlongといった整数型より計算に時間がかかるので、\\ 小数を使わない(整数のみ)のであれば整数型を使った方がいいです。                                        |
  
 +R4とR3で利用できる数値が異なる問題については、こちらで補足しています:[[gimmickkouza:electronic_basic:7:3-r3-r4#マイコンのbit数の違い|]] 
 +   
 +/*<alert type="danger">bool型は実際に利用できる値がtrue/falseのほうがわかりやすいかも 
 +https://garretlab.web.fc2.com/arduino.cc/www/reference/ja/language/variables/data-types/bool/ 
 +</alert>*/ 
 +  
 ==== 各データ型の使い方例 ==== ==== 各データ型の使い方例 ====
 各例はコピーしてloop部の内部に貼り付けることで動作確認ができます。 各例はコピーしてloop部の内部に貼り付けることで動作確認ができます。
行 189: 行 208:
  
  
 +----
 +
 +<panel type="warning" title="Tips:Arduinoでの計算記号">
 +人間の世界での計算式とArduinoの世界での計算式では、書き方に若干の違いがあります。
 +まずArduinoの世界では、加減乗除をする際には下記の記号を使う必要があります。
 +
 +  * 足し算:半角記号の「+」(プラス)
 +  * 引き算:半角記号の「-」(マイナス)
 +  * 掛け算:半角記号の「*」(アスタリスク)
 +  * 割り算:半角記号の「/」(スラッシュ)
 +
 +また変数の解説でも出てきましたが、Arduinoでの計算式の書き方は、
 +** 計算結果を入れる変数 = 項1 計算記号 項2**  となります。常に一番左側に計算結果が来ると覚えればOKです。
 +以下にArduinoでの計算例をいくつか挙げてみます(value1~3の変数はすべてint型とします)
 +
 +<code>value1 = 500 + 300;</code>
 +value1の結果は800となります
 +
 +<code>value2 = 1000 + 1000 - 500 - 100;</code>
 +複数の項を持つ計算ももちろん可能です
 +value2の結果は1400となります
 +
 +<code>value3 = (10+10) * 5;</code>
 +人間世界と同じように、Arduinoの計算式では()を使うことができます
 +value3の結果は100となります
 +
 +----
 +
 +最後に、加減乗除以外にも、計算に使える便利な記号があります。
 +
 +  * 半角記号の「%」→割った数の余りを求められます
 +<code>
 +int value4 = 0;
 +value4 = 9 % 4;
 +</code>
 +value4は9÷4の余りである1となります
 +
 +  * 半角記号の「++」(プラス2個)→整数値の変数の値に1を足す
 +<code>
 +int value5 = 5;
 +value5 = value5++;
 +</code>
 +value5は+1されて6となります(value5 = value5 + 1 と同じ効果を持ちます)
 +
 +  * 半角記号の「--」(マイナス2個)→整数値の変数の値から1を引く
 +<code>
 +int value5 = 5;
 +value5 = value5--;
 +</code>
 +value6は-1されて4となります(value6 = value6 - 1 と同じ効果を持ちます)
 +
 +
 +----
 +今すぐに全部覚えなくても大丈夫です。後の章で出てくるものもありますので、実践しながら覚えていきましょう。
 +
 +</panel>