Jag är ny med att använda Arduino och jag har en Arduino Uno. För de projekt jag har gjort har jag bara använt de digitala stiften.
Jag bygger ett litet fordon som använder stegmotorer. Jag har slut på stiften för att styra motorerna för det här fordonet. Vad är de analoga stiften för? Är det möjligt för mig att använda analoga stift för att styra resten av stegmotorerna som jag ansluter till Arduino, eller måste jag köpa en större Arduino än Arduino Uno för att kontrollera detta grepp?
Svar
Ja, de analoga stiften på Arduino kan användas som digitala utgångar.
Detta dokumenteras i Arduino-ingångsstiftdokumentation , i avsnittet Pin Mapping:
Stiftmappning
De analoga stiften kan användas identiskt med de digitala stiften, med alias A0 (för analog ingång 0), A1, etc. Koden skulle till exempel se ut så här för ställa in analog stift 0 till en utgång och ställa in den HÖG:
pinMode (A0, OUTPUT);
digitalWrite (A0, HIGH);
Kommentarer
- Ja … förlåt. Jag minns att det var sent när jag publicerade det och jag blev sömnig och tappade koncentrationen. Jag tog bort kommentaren.
Svar
Du kan alltid använda de analoga stiften för digitalt skrivande.
-
digitalRead()
fungerar på alla stift. Det kommer bara att runda det mottagna analoga värdet och presentera det för dig. OmanalogRead(A0)
är större än eller lika med 512, blirdigitalRead(A0)
1, annars 0. -
digitalWrite()
fungerar på alla stift, med tillåten parameter 0 eller 1.digitalWrite(A0,0)
är samma somanalogWrite(A0,0)
, ochdigitalWrite(A0,1)
är samma somanalogWrite(A0,255)
-
analogRead()
fungerar bara på analoga stift. Det kan ta vilket värde som helst mellan 0 och 1023. -
analogWrite()
fungerar på alla analoga stift och alla digitala PWM stift. Du kan leverera valfritt värde mellan 0 och 255.
De analoga stiften låter dig läsa / skriva analoga värden – i princip istället för att ge ut en spänning på 0 eller 5 (som med digital) , de kan ge ett spänningsintervall mellan 0 och 5 (både som in- och utgång). Observera att spänningen under analog utgång endast är den observerade spänningen med en multimeter. I verkligheten skickar de analoga stiften pulser på 0V- och 5V-signaler för att få en utgång som ”ser” analog ut (detta är PWM).
När det gäller antalet stift: kom ihåg att PWM-stiften kan vara används för analog utgång. Om du har slut på stift kan du använda multiplexing för att göra mer. Det är inte nödvändigt att skaffa ytterligare en Arduino.
Kommentarer
- AnalogWrite () matar inte ut spänningar mellan 0 och 5 (förutom på grund)! AnalogWrite () ändrar endast signalens pulsbreddsmodulering. Utgångsspänningen är fortfarande 5 volt (eller vad som helst VCC). Stiften märkta ” analoga ” matar bara ut 0V eller 5V. De är inte variabla och är noterade
- @ JamesC4S: Bra poäng, redigerad. Tack 🙂
- Mycket bättre! 🙂
- Är digitalRead () och digitalWrite () på analoga stift långsammare? Om digitalRead () avrundar värdet kan jag föreställa mig att det är långsammare än digitalRead () på en digital pin?
- Detta är väldigt kortfattat och informativt, tack, men jag tror att det finns ett litet fel. Enligt de fina dokumenten :
the Arduino (ATmega) will report HIGH if: a voltage greater than 3.0V is present at the pin (5V boards)
som strider mot uttalandet i det här inläggetIf analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0
.
Svar
De analoga stiften på Arduino kan användas som digitala stift ut av Anindo Ghosh.
Men även om du har slut på stiften för att styra dina stegmotorer behöver du inte köpa ett annat kort. Du kan helt enkelt använda en mellanliggande komponent som ett register eller en multiplexer för att styra lämplig stegmotor.
Svar
Om du har råd med det, och du verkligen vill göra arbetet med en stepper super lätt kolla in Easy Stepper . Jag var väldigt nöjd.
Från exempelkodssida
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); }
Även från samma sida, här är några exempelkoder för att köra två motorer med två easystepper-kort, med acceleration / retardation: 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
- Detta svarar verkligen inte ’, det skulle vara bättre som en kommentar. gör du det så att det svarar på frågan?
- @AnnonomusPerson: EasyDriver Stepper Motor Driver verkar vara en aktiv produkt, i lager och allt.
Svar
Lägger till som svar, för kan inte kommentera.
För att svara kort, ja du kan. Se till Anindo Ghoshs svar om hur man gör det.
Observera men för Arduino Nano är stift A6 och A7 endast analoga och kan inte användas i digitalt läge.
Kommentarer
- Observera att det här svaret nästan bara innehåller en länk. Länkar / webbplatser kan bli föråldrade, vilket gör detta svar värdelöst. Behåll länken, men sammanfatta eller citera de relevanta delarna av webbplatsen.
- @Huisman För att vara rättvis är det mindre troligt att länkar till andra frågor om EE.SE försämras eller blir otillgängliga; men en kort sammanfattning skulle säkert förbättra svaret.
- @JYelton Jag ’ följer inte länken, men du ’ är rätt.