定数
定数はあらかじめ定義された変数のようなもので、その値は変更できません。 これらは、プログラムの読み込みと変更をより簡単にするために使用されます。 このページでは、最も一般的に使用される定数について説明します。
ブール定数 :true 、false
真実と虚偽を表現するために使用される定数は、trueとfalseの2つです。
false :
falseは偽の ブール値です。 0の整数は、ブール値としてfalse(偽)と評価されます。
true :
trueは真のブール値です。 整数として、trueはしばしば1と呼ばれます。
これは、trueが1を整数として評価するという意味で正しいです。 しかし、ゼロ以外の整数はboolとして真です。
したがって、-1,2、-200はすべて真であり、ブール値の文脈ではこれらの数値は真と同じように扱われます。
trueとfalseの定数は、 HIGH、LOW、INPUT、およびOUTPUT(以下で説明します)と異となり、小文字となります。
ピンレベル:HIGH 、LOW
デジタル・ピンに読み書きするときは、ピンをHIGHとLOWの2つの値に設定できます。
HIGH:
HIGH(ピンを基準にして)の意味は、ピンがINPUTまたはOUTPUTのどちらに設定されているかによって多少異なります。 ピンがINPUT(pinMode()を使用)として設定され、digitalRead()で読み込まれると、ピンに3ボルト以上の電圧が存在する場合、マイクロコントローラはHIGHをレポートします。 pinがOUTPUTにpinMode()で設定され、digitalWrite()でHIGHに設定されると、ピンは3.3Vになります。 この状態では、電流を供給することができる。 シリーズ抵抗を介してグランドに接続されたLED、または出力として構成され、LOWに設定された別のピンに接続されたLEDを点灯させます。 LOW:
LOWの意味は、ピンがINPUTとOUTPUTのどちらに設定されているかによっても意味が異なります。
ピンがOUTPUTピンに設定され、digitalWrite()でLOWに設定されると、マイクロコントローラはそのピンの電圧を0Vに保つように試みます。 光は+3.3 Vの直列抵抗を介して、または出力として構成された別のピンに接続され、HIGHに設定されています。 ピンモード
デジタルピンはさまざまなモードで使用できます。 基本モードINPUTとOUTPUTが上に紹介されています。 ピンをINPUTからOUTPUTに変更すると、pinMode()はピンの電気的挙動を大幅に変更します。 ここでは、基本的なデジタル・ピン・モード(INPUTとOUTPUT)についてのみ説明します。 すべての可能なピンモードの詳細については、pinMode()のリファレンスページを参照してください。 INPUT:
INPUTとして構成されたピンは、ハイ・インピーダンス状態にあると言われています。 これを説明する1つの方法は、INPUTとして設定されたピンは、接続されている回路上にデマンをほとんど作成しないことです。 これにより、センサを読み取るのにLEDを動かすことはできません。
OUTPUT:
pinMode()でOUTPUTとして設定されたピンは、低インピーダンス状態にあると言われています。 つまり、他の回路に相当量の電流を供給することができます。 ピンは、他のデバイス/回路に最大50mA(ミリアンペア)の電流を供給(正電流を供給)またはシンク(負電流を供給)することができます。 これにより、LEDに電力を供給するのに便利ですが、センサーを読み取るのには役に立たなくなります。
出力として構成されたピンは、グランドまたは電源のいずれかに短絡すると損傷または破壊される可能性があります。 ピンによって供給される電流量は、ほとんどのリレーやモータに電力を供給するのに十分ではなく、一部のインタフェース回路が必要になります。
整数定数
整数定数は、123などのスケッチで直接使用される数値です。デフォルトでは、整数定数は(符号付き)intとして扱われますが、これはUおよびL修飾子(下記参照)で変更できます。 負の数を指定するには、-123のようにマイナス記号を前に付けます。
通常、整数定数は10進数の10進数として扱われますが、特殊な表記法(フォーマッタ)を使用して他の基数に数値を入力することもできます。 これらは次の表で説明されています。
table:整数定数
基底 例 形式 補足
10 (10進数) 123 なし
2 (2進数) 0b1111011 先頭に“0b” GCC拡張; 標準C++ではない
8 (8進数) 0173 先頭に “0” 文字 0-7 を利用
16 (16進数) 0x7B 先頭に “0x” 文字 0-9, A-F (または a-f) を利用
Arduinoとの互換性のために、0〜255の値のバイナリ定数(B1111011など)がサポートされています。 新しいプログラムでは使用しないでください。
10進数は10を基底とします。これは学校で学ぶ共通数字です。
他の接頭辞のない整数リテラルは、10進形式であるとみなされます。
たとえば、10進数 101は、$ {1*10^2+0*10^1+1*10^0=101}です。
2進数は2を基底とします。文字0と1のみが有効です。 バイナリリテラルは接頭辞0bで示されます。
たとえば、2進数 0b101は10進数では5です。$ {1*2^2+0*2^1+1*2^0=5}
8進数は8を基底とします。 0〜7の文字のみが有効です。 8進リテラルは接頭辞0で示されます。
たとえば、8進数 0101は10進数では65です。$ {1*8^2+0*8^1+1*8^0=65}
注意 :整数リテラルの前に先頭の「0」を入れることによって(意図せず)コンパイラが8進数として扱われることがあります。
16進数(または "16進数")は16が基底です。 有効な文字は0〜9、A〜Fの文字です。 Aの値は10、Bの値は11、Fの値は15です。16進数の値は接頭辞0xで示されます。 A-Fは大文字または小文字(a〜f)で入力できます。
たとえば、16進定数0x101は255です。$ {1*16^2+0*16^1+1*16^0=255}
16進数の定数0xCF2は3314です。$ {12*16^2+15*16^1+2*16^0=3314}
(16進数でAは10を意味し、B = 11であるのでC = 12、F = 15であることを忘れないでください)
接尾辞:U、L
デフォルトでは、整数定数はintとして扱われます(int型の範囲の制限内でなければなりません)。 別のデータ型で整数定数を指定するには、次のようにします。
uまたはUを使用して定数を符号なしの値として解釈します。 たとえば、33Uはunsigned intです。
定数をlong値として解釈するlまたはL たとえば、100000Lはlongです。 Maple(Arduino STM32)では、longはintの同義語です。
上記の両方を行うためのulまたはUL。 たとえば、32767ULはunsigned longです。 Maple(Arduino STM32)では、unsigned longはunsigned intの同義語です。
定数をlong long値と解釈するためのllまたはLL
定数をunsigned long long値として解釈するためのullまたはULL
浮動小数点定数
浮動小数点定数は、小数点を含む任意の数です。 たとえば、3.0は3の浮動小数点定数です。デフォルトでは、浮動小数点定数はdoubleです。 定数をfloatとして解釈するには、その直後にfを書くことができます。 たとえば、3.0fはfloat型の浮動小数点定数です。
浮動小数点定数は、さまざまな科学的記法で表現することもできます。 Eとeはどちらも有効な指数インジケータとして受け入れられます。 いくつかの例を次の表に示します。
table:浮動小数点定数
浮動小数点定数 評価値 別の表記
10.0 10
2.34E5 2.34×105 234000.0
67e-12 67.0×10-12 0.000000000067
ボード固有の定数
LeafLabsボード(Arduino STM32対応ボード)に依存するボード固有の定数がいくつかあります。 それらを使用すると、あなたのコードだけでなく、すべてのLeafLabsボード(Arduino STM32対応ボード)でコードがうまく動作するようになります。 これにより、コードを他の人と共有することが容易になります。
たとえば、ボードの内蔵LEDに接続されているピン番号はボードによって異なりますが、ボード固有の定数LED_BUILTINは常に各ボードの正しい値になります。
(注意) Arduino STM32ではLED_BUILTINはBlue Pillボートを想定したPC13に固定されています。
(注意) オリジナルLeafLabsではBOARD_LED_PINを利用しますが、Arduino STM32では利用出来ません。
関連項目
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。