¿Puedo usar los pines analógicos en el Arduino para mi proyecto como digital?

24

Soy nuevo en el uso de Arduino, y tengo un Arduino Uno. Para los proyectos que he hecho, solo he usado los pines digitales.

Estoy construyendo un pequeño vehículo que usa motores paso a paso. Me he quedado sin pines para controlar los motores de este vehículo. ¿Para qué son los pines analógicos? ¿Puedo usar pines analógicos para controlar el resto de los motores paso a paso que conecto al Arduino, o tengo que comprar un Arduino más grande que Arduino Uno para controlar este artilugio?

    
pregunta hakonbogen

4 respuestas

22

Sí, los pines analógicos en el Arduino se pueden usar como salidas digitales.

Esto se documenta en la documentación de los pines de entrada de Arduino , en la sección de asignación de pines:

  

Mapeo de pines
  Los pines analógicos se pueden usar de forma idéntica a los pines digitales, utilizando los alias A0 (para la entrada analógica 0), A1, etc. Por ejemplo, el código se vería así para configurar el pin analógico 0 en una salida, y para establecerlo en ALTO :
  pinMode (A0, SALIDA);
  escritura digital (A0, ALTA);

    
respondido por el Anindo Ghosh
25

enlace siempre puede usar los pines analógicos para digital escribiendo.

  • digitalRead() funciona en todos los pines. Solo redondeará el valor analógico recibido y se lo presentará. Si analogRead(A0) es mayor o igual a 512, digitalRead(A0) será 1, en otro caso 0.
  • digitalWrite() funciona en todos los pines, con el parámetro 0 o 1. digitalWrite(A0,0) es lo mismo que analogWrite(A0,0) , y digitalWrite(A0,1) es lo mismo que analogWrite(A0,255)
  • analogRead() funciona solo en pines analógicos. Puede tomar cualquier valor entre 0 y 1023.
  • analogWrite() funciona en todos los pines analógicos y en todos los pines digitales PWM . Puede proporcionarle cualquier valor entre 0 y 255.

Los pines analógicos le permiten leer / escribir valores analógicos: básicamente, en lugar de emitir un voltaje de 0 o 5 (como en digital), pueden proporcionar un rango de voltajes entre 0 y 5 (tanto como entrada como salida) . Tenga en cuenta que el voltaje durante la salida analógica es solo el voltaje observado con un multímetro. En realidad, los pines analógicos envían pulsos de señales de 0 V y 5 V para obtener una salida que "parece" analógica (esto es PWM).

Con respecto al número de pines: tenga en cuenta que los pines PWM se pueden usar para la salida analógica. Si se queda sin pines, puede usar multiplexación para hacer más. No es necesario conseguir otro Arduino.

    
respondido por el Manishearth
6

Los pines analógicos en el Arduino se pueden usar como pines digitales, como lo señaló Anindo Ghosh.

Sin embargo, incluso si te quedas sin pines para controlar tus motores paso a paso, realmente no necesitas comprar otra tabla. Simplemente puede usar un componente intermedio como un registro o un multiplexor para controlar el motor paso a paso apropiado.

    
respondido por el asheeshr
4

Si puede permitírselo, y realmente desea hacer que trabajar con un super sencillo paso a paso revise Paso a paso fácil . Me quedé muy satisfecho.

De la página de códigos de ejemplo

enlace



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);          
}

También desde la misma página, aquí hay un código de ejemplo para ejecutar dos motores con dos tableros de paso fácil, con aceleración / desaceleración: enlace


#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();
}
    
respondido por el Steve Cooley

Lea otras preguntas en las etiquetas