Uso Arduino per la prima volta e ho un Arduino Uno. Per i progetti che ho fatto, ho usato solo i pin digitali.
Sto costruendo un piccolo veicolo che utilizza motori passo-passo. Ho esaurito i pin per controllare i motori di questo veicolo. A cosa servono i pin analogici? Posso usare pin analogici per controllare il resto dei motori passo-passo che collego ad Arduino, o devo comprare un Arduino più grande di Arduino Uno per controllare questo aggeggio?
Risposta
Sì, i pin analogici su Arduino possono essere usati come uscite digitali.
Questo è documentato nella documentazione dei pin di input di Arduino , nella sezione Mappatura dei pin:
Mappatura dei pin
I pin analogici possono essere utilizzati in modo identico ai pin digitali, utilizzando gli alias A0 (per lingresso analogico 0), A1, ecc. Ad esempio, il codice sarebbe simile a questo imposta il pin analogico 0 su unuscita e per impostarlo su HIGH:
pinMode (A0, OUTPUT);
digitalWrite (A0, HIGH);
Commenti
- Sì … scusa. Ricordo che era tardi quando lho postato e stavo diventando assonnato e perdendo la concentrazione. Ho rimosso il commento.
Risposta
Puoi sempre utilizzare i pin analogici per la scrittura digitale.
-
digitalRead()
funziona su tutti i pin. Arrotonderà semplicemente il valore analogico ricevuto e te lo presenterà. SeanalogRead(A0)
è maggiore o uguale a 512,digitalRead(A0)
sarà 1, altrimenti 0. -
digitalWrite()
funziona su tutti i pin, con parametro consentito 0 o 1.digitalWrite(A0,0)
è uguale aanalogWrite(A0,0)
, edigitalWrite(A0,1)
è uguale aanalogWrite(A0,255)
-
analogRead()
funziona solo su pin analogici. Può assumere qualsiasi valore compreso tra 0 e 1023. -
analogWrite()
funziona su tutti i pin analogici e su tutti i PWM digitali perni. Puoi fornirgli qualsiasi valore compreso tra 0 e 255.
I pin analogici ti consentono di leggere / scrivere valori analogici – in pratica, invece di fornire una tensione di 0 o 5 (come con il digitale) , possono fornire un range di tensioni compreso tra 0 e 5 (sia come ingresso che come uscita). Si noti che la tensione durante luscita analogica è solo la tensione osservata con un multimetro. In realtà, i pin analogici inviano impulsi di segnali 0V e 5V per ottenere unuscita che “sembra” analogica (questo è PWM).
Per quanto riguarda il numero di pin: tieni presente che i pin PWM possono essere utilizzato per luscita analogica. Se esaurisci i pin, puoi utilizzare il multiplexing per crearne altri. Non è necessario procurarsi un altro Arduino.
Commenti
- AnalogWrite () non fornisce tensioni di uscita comprese tra 0 e 5 (eccetto su Due)! AnalogWrite () cambia solo la modulazione della larghezza di impulso del segnale. La tensione di uscita è ancora di 5 volt (o qualunque sia VCC). I pin contrassegnati con ” analogico ” emetteranno solo 0 V o 5 V. Non sono variabili e sono note
- @ JamesC4S: Buon punto, modificato. Grazie 🙂
- Molto meglio! 🙂
- digitalRead () e digitalWrite () sui pin analogici sono più lenti? Se digitalRead () arrotonda il valore posso immaginare che sia molto più lento di digitalRead () su un pin digitale?
- Questo è molto conciso e informativo, grazie, tuttavia credo che ci sia un piccolo errore. Secondo i bei documenti :
the Arduino (ATmega) will report HIGH if: a voltage greater than 3.0V is present at the pin (5V boards)
che contraddice laffermazione in questo postIf analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0
.
Risposta
I pin analogici su Arduino possono essere usati come pin digitali, come indicato fuori da Anindo Ghosh.
Tuttavia, anche se finisci i pin per controllare i tuoi motori passo-passo, non hai davvero bisogno di acquistare unaltra scheda. Puoi semplicemente utilizzare un componente intermedio come un registro o un multiplexer per controllare il motore passo-passo appropriato.
Rispondi
Se te lo puoi permettere e vuoi davvero rendere il lavoro con uno stepper super facile controlla Easy Stepper . Mi ha fatto molto piacere.
Dalla code page di esempio
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); }
Sempre dalla stessa pagina, ecco un codice di esempio per far funzionare due motori con due schede easystepper, con accelerazione / decelerazione: 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(); }
Commenti
- Questo non ‘ t risponde alla domanda; sarebbe meglio come commento. Potrebbe lo rimpolpate in modo che risponda alla domanda?
- @AnnonomusPerson: EasyDriver Stepper Motor Driver sembra un prodotto attivo, disponibile e tutto il resto.
Risposta
Aggiunta come risposta, perché non posso commentare.
Per rispondere brevemente, sì, puoi. Fare riferimento alla risposta di Anindo Ghosh su come farlo.
Nota tuttavia, per Arduino Nano , i pin A6 e A7 sono solo analogici e non può essere utilizzato in modalità digitale.
Commenti
- Tieni presente che questa risposta contiene quasi solo un collegamento. I link / siti web possono diventare obsoleti, rendendo inutile questa risposta. Mantieni il link, ma riassumi o cita le parti rilevanti del sito web.
- @Huisman Per essere onesti, è meno probabile che i link ad altre domande su EE.SE siano deprecati o diventino inaccessibili; ma un breve riepilogo migliorerebbe sicuramente la risposta.
- @JYelton Non ‘ ho seguito il link, ma tu ‘ re right.