38 votos

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

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

Estoy construyendo un pequeño vehículo que usa motores de paso. Me he quedado sin alfileres para controlar los motores de este vehículo. ¿Para qué sirven los pines analógicos? ¿Es posible para mí usar alfileres 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 el Arduino Uno para controlar este artilugio?

37voto

Eric Puntos 152

Sólo para que conste una respuesta...

PISTA: Imagina que llamas a los Anthony Smith en el orden en que aparecen en la guía telefónica (hasta llegar a tu amigo). ¿Es más probable que tu amigo sea el tercero de la lista que $23$ rd, o $17$ ¿? En términos más generales, ¿es más probable que su amigo esté en una posición de esa lista que en otra?

9 votos

¡AnalogWrite() no emite voltajes entre 0 y 5 (excepto en el Due)! AnalogWrite() sólo cambia la modulación del ancho de pulso de la señal. El voltaje de salida sigue siendo 5 voltios (o lo que sea VCC). Los pines marcados como "analógicos" sólo emitirán 0V o 5V. No son variables y son nota

1 votos

@JamesC4S: Buen punto, editado. Gracias :)

0 votos

¡Mucho mejor! :)

36voto

userid53 Puntos 116

Sí, los pines analógicos del Arduino se pueden utilizar como salidas digitales.

Esto está documentado en el Documentación sobre los pines de entrada de Arduino , en la sección de mapeo de pines:

Mapa de pines
Los pines analógicos pueden utilizarse 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 establecer el pin analógico 0 como una salida, y ponerlo en HIGH:
pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);

0 votos

Sí... lo siento. Recuerdo que era tarde cuando publiqué eso y me estaba dando sueño y perdiendo la concentración. He eliminado el comentario.

7voto

AsheeshR Puntos 572

Los pines analógicos del Arduino se pueden utilizar como pines digitales, como señala Anindo Ghosh.

Sin embargo, incluso si te quedas sin pines para controlar tus motores paso a paso, realmente no necesitas comprar otra placa. Puedes simplemente utilizar un componente intermedio como un registro o un multiplexor para controlar el motor paso a paso apropiado.

5voto

rasx Puntos 1858

Si te lo puedes permitir, y realmente quieres hacer el trabajo con un stepper súper fácil ver Easy Stepper . Estaba muy contento.

Desde el página de código de ejemplo

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 de la misma página, aquí hay un código de ejemplo para hacer funcionar dos motores con dos placas easystepper, con aceleración/deceleración:

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

0 votos

Esto realmente no responde a la pregunta; sería mejor como comentario. ¿Podría ampliarlo para que responda a la pregunta?

0 votos

@AnnonomusPerson: El Controlador de motor paso a paso EasyDriver parece un producto activo, en stock y todo.

2voto

Hazkaz Puntos 11

Añadiendo como respuesta, porque no se puede comentar.

Para responder brevemente, sí se puede. Consulte Respuesta de Anindo Ghosh sobre cómo hacerlo.

Por favor, tenga en cuenta Sin embargo, para el Arduino Nano , alfileres A6 y A7 son sólo analógicos y no se puede utilizar en el modo digital.

1 votos

Por favor, tenga en cuenta que esta respuesta casi sólo contiene un enlace. Los enlaces/sitios web pueden quedar obsoletos, haciendo que esta respuesta sea inútil. Conserve el enlace, pero resuma o cite las partes relevantes del sitio web.

0 votos

@Huisman Para ser justos, los enlaces a otras preguntas en EE.SE son menos propensos a depreciar o volverse inaccesibles; pero un breve resumen ciertamente mejoraría la respuesta.

0 votos

@JYelton No he seguido el enlace, pero tienes razón.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X