回答:
はい、Arduinoのアナログピンはデジタル出力として使用できます。
これは、ピンマッピングセクションのArduino入力ピンドキュメントに記載されています。
ピンマッピング
アナログピンは、エイリアスA0(アナログ入力0)、A1などを使用して、デジタルピンと同じように使用できます。たとえば、コードはこのようになり、アナログピン0を出力に設定し、 it HIGH:
pinMode(A0、OUTPUT);
digitalWrite(A0、HIGH);
デジタル書き込みにはいつでもアナログピンを使用できます。
digitalRead()
すべてのピンで動作します。受信したアナログ値を丸めて表示するだけです。analogRead(A0)
が512以上の場合、digitalRead(A0)
1になります。それ以外の場合は0になります。digitalWrite()
許可パラメータは0または1を持つ全てのピン上の作品は、digitalWrite(A0,0)
同じでありanalogWrite(A0,0)
、且つdigitalWrite(A0,1)
同じですanalogWrite(A0,255)
analogRead()
アナログピンでのみ機能します。0〜1023の任意の値を取ることができます。analogWrite()
すべてのアナログピンとすべてのデジタルPWMピンで動作します。0〜255の任意の値を指定できます。アナログピンを使用すると、アナログ値を読み書きできます。基本的に、0または5の電圧を出力する代わりに(デジタルの場合)、0〜5(入力および出力の両方)の電圧範囲を提供できます。アナログ出力時の電圧は、マルチメータで観測された電圧のみであることに注意してください。実際には、アナログピンは0Vおよび5V信号のパルスを送信して、アナログに見える出力(PWM)を取得します。
ピンの数に関して:PWMピンはアナログ出力に使用できることに注意してください。ピンが足りなくなった場合は、マルチプレキシングを使用してより多くを作成できます。別のArduinoを入手する必要はありません。
the Arduino (ATmega) will report HIGH if: a voltage greater than 3.0V is present at the pin (5V boards)
この投稿の声明と矛盾していIf analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0
ます。
余裕があり、ステッパーでの作業を非常に簡単にしたい場合は、Easy Stepperをご覧ください。私は非常に喜んでいました。
以下からのサンプルコード・ページ
http://www.sc-fa.com/blog/wp-content/uploads/2013/04/20130414-080645.jpg
Example 1: Basic Arduino setup
This is the most basic example you can have with an Arduino, an Easy Driver, and a stepper motor. Connect the motor's four wires to the Easy Driver (note the proper coil connections), connect a power supply of 12V is to the Power In pins, and connect the Arduino's GND, pin 8 and pin 9 to the Easy Driver.
Then load this sketch and run it on your Arduino or chipKIT:
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
void loop() {
digitalWrite(9, HIGH);
delay(1);
digitalWrite(9, LOW);
delay(1);
}
また、同じページから、加速/減速付きの2つのイージーステッパーボードで2つのモーターを実行するコードの例を次に示します。http://www.sc-fa.com/blog/wp-content/uploads/2013/04/20130414- 081018.jpg
#include <AccelStepper.h>
// Define two steppers and the pins they will use
AccelStepper stepper1(1, 9, 8);
AccelStepper stepper2(1, 7, 6);
int pos1 = 3600;
int pos2 = 5678;
void setup()
{
stepper1.setMaxSpeed(3000);
stepper1.setAcceleration(1000);
stepper2.setMaxSpeed(2000);
stepper2.setAcceleration(800);
}
void loop()
{
if (stepper1.distanceToGo() == 0)
{
delay(500);
pos1 = -pos1;
stepper1.moveTo(pos1);
}
if (stepper2.distanceToGo() == 0)
{
delay(500);
pos2 = -pos2;
stepper2.moveTo(pos2);
}
stepper1.run();
stepper2.run();
}