Pot folosi pinii analogici de pe Arduino pentru proiectul meu ca digital?

Sunt nou în ceea ce privește utilizarea Arduino și am un Arduino Uno. Pentru proiectele pe care le-am realizat, am folosit doar pinii digitali.

Construiesc un vehicul mic care utilizează motoare pas cu pas. Am rămas fără pini pentru a controla motoarele acestui vehicul. Pentru ce sunt pinii analogici? Este posibil să folosesc pini analogici pentru a controla restul motoarelor de pas pe care le conectez la Arduino sau trebuie să cumpăr un Arduino mai mare decât Arduino Uno pentru a controla acest dispozitiv?

Răspuns

Da, pinii analogici de pe Arduino pot fi folosiți ca ieșiri digitale.

Acest lucru este documentat în documentația pinilor de intrare Arduino , în secțiunea Pin Mapping:

Maparea pinilor
Pinii analogici pot fi utilizați identic pinilor digitali, folosind pseudonimele A0 (pentru intrarea analogică 0), A1 etc. De exemplu, codul ar arăta astfel setați pinul analogic 0 la o ieșire și setați-l HIGH:
pinMode (A0, OUTPUT);
digitalWrite (A0, HIGH);

Comentarii

  • Da … îmi pare rău. Îmi amintesc că a fost târziu când am postat asta și am devenit somnoros și am pierdut concentrarea. Am eliminat comentariul.

Răspuns

Puteți folosi oricând pinii analogici pentru scrierea digitală.

  • digitalRead() funcționează pe toți pinii. Acesta va rotunji valoarea analogică primită și ți-o va prezenta. Dacă analogRead(A0) este mai mare sau egal cu 512, digitalRead(A0) va fi 1, altfel 0.
  • digitalWrite() funcționează pe toți pinii, cu parametrul permis 0 sau 1. digitalWrite(A0,0) este același cu analogWrite(A0,0), și digitalWrite(A0,1) este același lucru cu analogWrite(A0,255)
  • analogRead() funcționează numai pe pinii analogici. Poate lua orice valoare între 0 și 1023.
  • analogWrite() funcționează pe toți pinii analogici și pe toți PWM pini. Îi puteți furniza orice valoare cuprinsă între 0 și 255.

Pinii analogici vă permit să citiți / să scrieți valori analogice – practic, în loc să dați o tensiune de 0 sau 5 (ca și în cazul digitalului) , pot da o gamă de tensiuni între 0 și 5 (atât ca intrare, cât și ca ieșire). Rețineți că tensiunea în timpul ieșirii analogice este doar tensiunea observată cu un multimetru. În realitate, pinii analogici trimit impulsuri de semnale 0V și 5V pentru a obține o ieșire care „arată” analogică (acesta este PWM).

În ceea ce privește numărul de pini: rețineți că pinii PWM pot fi utilizat pentru ieșire analogică. Dacă rămâneți fără pini, puteți utiliza multiplexare pentru a face mai multe. Nu este necesar să obțineți un alt Arduino.

Comentarii

  • AnalogWrite () nu generează tensiuni cuprinse între 0 și 5 (cu excepția celor Due)! AnalogWrite () modifică doar modulația lățimii impulsului semnalului. Tensiunea de ieșire este încă 5 volți (sau orice altceva este VCC). Pinii marcați ” analog ” vor genera numai 0V sau 5V. Acestea nu sunt variabile și sunt notate
  • @ JamesC4S: Punct bun, editat. Mulțumesc 🙂
  • Mult mai bine! 🙂
  • Sunt digitalRead () și digitalWrite () pe pinii analogici mai lent? Dacă digitalRead () rotunjește valoarea, îmi pot imagina că este mult mai lent decât digitalRead () pe un pin digital?
  • Acest lucru este foarte concis și informativ, vă mulțumesc, totuși cred că există o mică eroare. Conform documente fine : the Arduino (ATmega) will report HIGH if: a voltage greater than 3.0V is present at the pin (5V boards) care contrazice afirmația din această postare If analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0.

Răspuns

Pinii analogici de pe Arduino pot fi folosiți ca pini digitali, așa cum arătați de Anindo Ghosh.

Cu toate acestea, chiar dacă rămâneți fără pini pentru a vă controla motoarele pas cu pas, nu este nevoie să cumpărați o altă placă. Puteți utiliza pur și simplu o componentă intermediară, cum ar fi un registru sau un multiplexor pentru a controla motorul pas cu pas adecvat.

Răspuns

Dacă vă permiteți și doriți cu adevărat să lucrați cu un pas cu pas super ușor verificați Easy Stepper . Am fost foarte mulțumit.

Din exemplu de pagină de cod

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

Tot din aceeași pagină, iată un exemplu de cod pentru a rula două motoare cu două plăci easystepper, cu accelerare / decelerare: 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(); } 

Comentarii

  • Acest lucru nu răspunde cu adevărat ‘ la întrebare; ar fi mai bine ca un comentariu. îl concretizezi astfel încât să răspundă la întrebare?
  • @AnnonomusPerson: EasyDriver Stepper Motor Driver apare pentru un produs activ, în stoc și totul.

Răspuns

Adăugarea ca răspuns, deoarece nu poate comenta.

Pentru a răspunde pe scurt, da, puteți. Vă rugăm să consultați la Răspunsul lui Anindo Ghosh despre cum se face acest lucru.

Vă rugăm să rețineți totuși, pentru Arduino Nano , pinii A6 și A7 sunt doar analogici și nu poate fi utilizat în modul digital.

Comentarii

  • Vă rugăm să rețineți că acest răspuns conține aproape doar un link. Link-urile / site-urile web pot deveni învechite, făcând acest răspuns inutil. Păstrați linkul, dar vă rugăm să rezumați sau să citați părțile relevante ale site-ului web.
  • @Huisman Pentru a fi corect, linkurile către alte întrebări de pe EE.SE sunt mai puțin susceptibile de a deprecia sau a deveni inaccesibile; dar un scurt rezumat ar îmbunătăți cu siguranță răspunsul.
  • @JYelton Nu ‘ nu ați urmat link-ul, dar ‘ re right.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *