Jeg er ny med at bruge Arduino, og jeg har en Arduino Uno. Til de projekter, jeg har udført, har jeg kun brugt de digitale ben.
Jeg bygger et lille køretøj, der bruger trinmotorer. Jeg har løbet tør for ben for at kontrollere motorerne til dette køretøj. Hvad er de analoge ben til? Er det muligt for mig at bruge analoge ben til at styre resten af trinmotorer, som jeg forbinder til Arduino, eller skal jeg købe en større Arduino end Arduino Uno for at kontrollere denne indretning?
Svar
Ja, de analoge ben på Arduino kan bruges som digitale udgange.
Dette er dokumenteret i Dokumentation om Arduino-inputstifter i sektionen Pin Mapping:
Pin mapping
De analoge ben kan bruges identisk med de digitale ben ved hjælp af aliaserne A0 (til analog indgang 0), A1 osv. For eksempel vil koden se sådan ud for sæt analog pin 0 til en udgang, og indstil den HIGH:
pinMode (A0, OUTPUT);
digitalWrite (A0, HIGH);
Kommentarer
- Ja … undskyld. Jeg husker, det var sent, da jeg sendte det, og jeg blev søvnig og mistede koncentrationen. Jeg fjernede kommentaren.
Svar
Du kan altid bruge de analoge ben til digital skrivning.
-
digitalRead()
fungerer på alle ben. Det vil bare runde den modtagne analoge værdi og præsentere den for dig. HvisanalogRead(A0)
er større end eller lig med 512, vildigitalRead(A0)
være 1, ellers 0. -
digitalWrite()
fungerer på alle ben, med tilladt parameter 0 eller 1.digitalWrite(A0,0)
er det samme somanalogWrite(A0,0)
, ogdigitalWrite(A0,1)
er det samme somanalogWrite(A0,255)
-
analogRead()
fungerer kun på analoge ben. Det kan tage en værdi mellem 0 og 1023. -
analogWrite()
fungerer på alle analoge ben og alle digitale PWM stifter. Du kan levere den en hvilken som helst værdi mellem 0 og 255.
De analoge ben giver dig mulighed for at læse / skrive analoge værdier – dybest set i stedet for at give en spænding på 0 eller 5 (som med digital) , de kan give en række spændinger mellem 0 og 5 (både som input og output). Bemærk, at spændingen under analog udgang kun er den observerede spænding med et multimeter. I virkeligheden sender de analoge stifter impulser på 0V og 5V signaler for at få et output, der “ser” analog ud (dette er PWM).
Med hensyn til antallet af stifter: husk at PWM-stifterne kan være bruges til analog udgang. Hvis du løber tør for ben, kan du bruge multiplexing til at skabe mere. Det er ikke nødvendigt at få en anden Arduino.
Kommentarer
- AnalogWrite () udsender ikke spændinger mellem 0 og 5 (undtagen på grund)! AnalogWrite () ændrer kun signalets pulsbreddemodulation. Udgangsspændingen er stadig 5 volt (eller hvad VCC er). Stifterne, der er markeret med ” analog “, udsender kun 0V eller 5V. De er ikke variable og er note
- @ JamesC4S: Godt punkt, redigeret. Tak 🙂
- Meget bedre! 🙂
- Er digitalRead () og digitalWrite () på analoge ben langsommere? Hvis digitalRead () afrunder værdien, kan jeg forestille mig, at den er langt langsommere end digitalRead () på en digital pin?
- Dette er meget kortfattet og informativt, tak, men jeg mener, at der er en lille fejl. Ifølge fine docs :
the Arduino (ATmega) will report HIGH if: a voltage greater than 3.0V is present at the pin (5V boards)
som modsiger udsagnet i dette indlægIf analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0
.
Svar
De analoge ben på Arduino kan bruges som digitale ben som vist ud af Anindo Ghosh.
Men selvom du løber tør for ben til at kontrollere dine trinmotorer, behøver du virkelig ikke købe et andet kort. Du kan simpelthen bruge en mellemkomponent såsom et register eller en multiplexer til at styre den passende trinmotor.
Svar
Hvis du har råd til det, og du virkelig vil gøre arbejdet med en stepper super let tjek Easy Stepper . Jeg var meget tilfreds.
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); }
Også fra den samme side er her et eksempel på kode for at køre to motorer med to easystepper boards, med acceleration / deceleration: 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(); }
Kommentarer
- Dette svarer virkelig ikke ‘ ikke på spørgsmålet; det ville være bedre som en kommentar. Kunne du uddyber det, så det besvarer spørgsmålet?
- @AnnonomusPerson: EasyDriver Stepper Motor Driver ser ud til at være et aktivt produkt, på lager og alt.
Svar
Tilføjelse som svar, fordi kan ikke kommentere.
For at svare kort, ja du kan. Se til Anindo Ghoshs svar om, hvordan man gør det.
Bemærk dog at for Arduino Nano er pins A6 og A7 kun analoge og kan ikke bruges i digital tilstand.
Kommentarer
- Bemærk, at dette svar næsten kun indeholder et link. Links / websteder kan blive forældede, hvilket gør dette svar ubrugeligt. Behold linket, men resumér eller citer de relevante dele af hjemmesiden.
- @Huisman For at være retfærdig er links til andre spørgsmål om EE.SE mindre tilbøjelige til at afvige eller blive utilgængelige; men et kort resumé vil helt sikkert forbedre svaret.
- @JYelton Jeg ‘ følger ikke linket, men du ‘ har ret.