Kan ik de analoge pinnen op de Arduino voor mijn project als digitaal gebruiken?

Ik ben nieuw in het gebruik van Arduino, en ik heb een Arduino Uno. Voor de projecten die ik heb gedaan, heb ik alleen de digitale pinnen gebruikt.

Ik bouw een klein voertuig dat gebruikmaakt van stappenmotoren. Ik heb geen pinnen meer om de motoren voor dit voertuig te bedienen. Waar zijn de analoge pinnen voor? Kan ik analoge pinnen gebruiken om de rest van de stappenmotoren die ik op de Arduino aansluit te besturen, of moet ik een grotere Arduino dan Arduino Uno kopen om dit apparaat te besturen?

Answer

Ja, de analoge pinnen op de Arduino kunnen als digitale uitgangen worden gebruikt.

Dit wordt gedocumenteerd in de Arduino input pins documentatie , in de Pin Mapping sectie:

Pin mapping
De analoge pinnen kunnen op dezelfde manier worden gebruikt als de digitale pinnen, met behulp van de aliassen A0 (voor analoge ingang 0), A1, enz. De code zou er bijvoorbeeld als volgt uitzien stel analoge pin 0 in op een uitgang en om deze HOOG in te stellen:
pinMode (A0, OUTPUT);
digitalWrite (A0, HIGH);

Reacties

  • Ja … sorry. Ik herinner me dat het laat was toen ik dat plaatste en ik begon slaperig te worden en mijn concentratie te verliezen. Ik heb de opmerking verwijderd.

Antwoord

Je kunt altijd de analoge pinnen gebruiken voor digitaal schrijven.

  • digitalRead() werkt op alle pinnen. Het rondt de ontvangen analoge waarde gewoon af en presenteert deze aan u. Als analogRead(A0) groter is dan of gelijk is aan 512, is digitalRead(A0) 1, anders 0.
  • digitalWrite() werkt op alle pinnen, met toegestane parameter 0 of 1. digitalWrite(A0,0) is hetzelfde als analogWrite(A0,0), en digitalWrite(A0,1) is hetzelfde als analogWrite(A0,255)
  • analogRead() werkt alleen op analoge pinnen. Het kan elke waarde tussen 0 en 1023 aannemen.
  • analogWrite() werkt op alle analoge pinnen en alle digitale PWM pinnen. U kunt elke waarde tussen 0 en 255 opgeven.

Met de analoge pinnen kunt u analoge waarden lezen / schrijven – in feite, in plaats van een spanning van 0 of 5 te geven (zoals bij digitaal) , kunnen ze een bereik van spanningen tussen 0 en 5 geven (zowel als invoer als uitvoer). Merk op dat de spanning tijdens analoge uitvoer alleen de waargenomen spanning is met een multimeter. In werkelijkheid sturen de analoge pinnen pulsen van 0V- en 5V-signalen om een output te krijgen die analoog “lijkt” (dit is PWM).

Met betrekking tot het aantal pinnen: houd er rekening mee dat de PWM-pinnen gebruikt voor analoge output. Als je geen pinnen meer hebt, kun je multiplexing gebruiken om meer te maken. Het is niet nodig om een andere Arduino aan te schaffen.

Opmerkingen

  • AnalogWrite () geeft geen spanningen tussen 0 en 5 (behalve op de Due)! AnalogWrite () verandert alleen de pulsbreedtemodulatie van het signaal. De uitgangsspanning is nog steeds 5 volt (of wat dan ook VCC). De pinnen gemarkeerd met ” analoog ” geven alleen 0V of 5V uit. Ze zijn niet variabel en zijn opmerking
  • @ JamesC4S: goed punt, bewerkt. Bedankt 🙂
  • Veel beter! 🙂
  • Zijn digitalRead () en digitalWrite () op analoge pinnen langzamer? Als digitalRead () de waarde afrondt, kan ik me voorstellen dat het veel langzamer is dan digitalRead () op een digitale pin?
  • Dit is erg beknopt en informatief, maar ik denk dat er een kleine fout is. Volgens de goede documenten : the Arduino (ATmega) will report HIGH if: a voltage greater than 3.0V is present at the pin (5V boards) die in tegenspraak is met de verklaring in dit bericht If analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0.

Answer

De analoge pinnen op de Arduino kunnen worden gebruikt als digitale pinnen, zoals uit door Anindo Ghosh.

Maar zelfs als je geen pinnen meer hebt om je stappenmotoren te bedienen, hoef je niet echt een ander bord te kopen. U kunt eenvoudig een tussencomponent zoals een register of een multiplexer gebruiken om de juiste stappenmotor aan te sturen.

Antwoord

Als je het kunt betalen, en je wilt het werken met een stepper supergemakkelijk bekijk Easy Stepper . Ik was erg tevreden.

Van de voorbeeldcodepagina

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

Ook van dezelfde pagina, hier is een voorbeeldcode om twee motoren met twee te laten draaien easystepper boards, met versnelling / vertraging: 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(); } 

Opmerkingen

  • Dit geeft echt geen ‘ antwoord op de vraag; het zou beter zijn als een opmerking. u vult het uit zodat het de vraag beantwoordt?
  • @AnnonomusPerson: de EasyDriver-stappenmotorstuurprogramma verschijnt voor een actief product, op voorraad en alles.

Antwoord

Toevoegen als antwoord, want kan “geen commentaar geven.

Om kort te antwoorden, ja dat kan. Zie naar Anindo Ghosh “s Antwoord over hoe u dit moet doen.

Let op echter dat voor de Arduino Nano pinnen A6 en A7 alleen analoog zijn en kan niet worden gebruikt in de digitale modus.

Reacties

  • Let op: dit antwoord bevat bijna alleen een link. Links / websites kunnen verouderd raken, waardoor dit antwoord onbruikbaar wordt. Bewaar de link, maar vat de relevante delen van de website samen of citeer deze.
  • @Huisman Om eerlijk te zijn, zullen links naar andere vragen op EE.SE minder snel worden afgeschaft of ontoegankelijk worden; maar een korte samenvatting zou het antwoord zeker verbeteren.
  • @JYelton Ik heb ‘ de link niet gevolgd, maar jij ‘ re rechts.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *