回答:
Tyiloの具体的な質問に答えるには:
analogRead(5)
そしてdigitalRead(5)
2つの異なる場所から読み込まれます。前者は、アナログチャンネルから読み取り、5
又はA5
、後者はピン5から読み出されます起こるデジタルピンであること。はい、アナログピンを読みたいdigitalRead
場合はを使用してくださいA5
。
どうして?
analogRead
内部でチャンネル番号が必要ですが、ピン番号も付けることができます。ピン番号を指定すると、対応するチャンネル番号に変換されます。私が知る限りanalogRead
、チャンネル番号を内部で使用する唯一の機能であり、チャンネル番号を許可する唯一の機能であり、この文書化されていないピンからチャンネルへの変換を持つ唯一の機能です。これを理解するために、いくつかの例から始めましょう。
analogRead
最初のアナログピンで使用する場合は、チャンネル番号を使用するか、ピン番号を使用するかを選択A0
できます。ピン番号バリアントを使用する場合、ピン番号を適切なチャネル番号に変換します。analogRead(0)
analogRead(A0)
analogRead
A0
0
あなたがdigitalWrite
最初のアナログピンで使用したい場合にのみ行うA0
ことができます。内部でアナログチャンネルを使用せず、チャンネル番号を渡せません。まあ、それはあなたを許可しますが、間違ったピンを選択します。同じことが適用されるにも。digitalWrite(A0, x)
digitalWrite
digitalRead
analogWrite
によって行われたピンからチャネルへの変換はanalogRead
どうですか?この関数のソースはhardware/arduino/avr/cores/arduino/wiring_analog.c
、ボードのタイプに基づいて簡単な減算を行うことがわかります。A0
/ A1
/ A2
/など。定数はアナログチャンネルのピン番号を表し、アナログ入力を参照する必要があるすべての場所で使用できます。そのため、異なる機能を使用している場合でも同じ物理ポートを使用していることは明らかであるため、Arduinoコードで使用するのに最適なオプションです。これらの定数の定義は、ボードによって異なります。
たとえば、Arduino Unoのアナログピン定義コードは次のとおりです。 hardware/arduino/avr/variants/standard/pins_arduino.h
static const uint8_t A0 = 14;
static const uint8_t A1 = 15;
static const uint8_t A2 = 16;
static const uint8_t A3 = 17;
static const uint8_t A4 = 18;
static const uint8_t A5 = 19;
static const uint8_t A6 = 20;
static const uint8_t A7 = 21;
比較のために、Arduino Megaのアナログピン定義コードを以下に示します。
static const uint8_t A0 = 54;
static const uint8_t A1 = 55;
static const uint8_t A2 = 56;
[...]
static const uint8_t A13 = 67;
static const uint8_t A14 = 68;
static const uint8_t A15 = 69;
アナログピンに関するEEの詳細な議論:Arduinoのアナログピンをデジタルプロジェクトとして使用できますか?
analogRead
ます!一方、analogWrite
アナログピンとPWMピンの両方で使用できます。
私はこれに何時間も費やしました。ハードウェアに問題があると思いました。analogRead()
間違って電話していたことがわかりました。
不正(からの誤ったサンプルコード DFRobot😣の):
val = analogRead(0); //connect sensor to Analog 0
正しい:
val = analogRead(A0); //connect sensor to Analog 0
更新:analogRead()
GPIOピン番号を取得します。A0
などは、Arduinoピン番号の#definesですA0 == 36
。
注意:FireBeetle ESP32などでは、「IO36 / A0」(GPIO36)というラベルのピンはArduino A0
と同じですが、「IO39 / A1」(GPIO39)はArduino A3
(not A1
)と等しく、「IO34 / A2」(GPIO34)はArduino A6
(not A2
)と等しいなど