Mohu použít analogové piny na Arduinu pro svůj projekt jako digitální?

Používání Arduina jsem nový a mám Arduino Uno. U projektů, které jsem „udělal“, jsem použil pouze digitální piny.

Stavím malé vozidlo, které využívá krokové motory. Docházely mi kolíky k ovládání motorů tohoto vozidla. K čemu jsou analogové piny? Je možné, abych používal analogové piny k ovládání ostatních krokových motorů, které připojuji k Arduinu, nebo musím koupit větší Arduino než Arduino Uno, abych mohl ovládat tuto mašinu?

Answer

Ano, analogové piny na Arduinu lze použít jako digitální výstupy.

Toto je dokumentováno v dokumentaci vstupních pinů Arduino , v sekci Mapování pinů:

Mapování pinů
Analogové piny lze použít stejně jako digitální piny pomocí aliasů A0 (pro analogový vstup 0), A1 atd. Například kód bude vypadat takto nastavit analogový pin 0 na výstup a nastavit jej VYSOKÝ:
pinMode (A0, VÝSTUP);
digitalWrite (A0, VYSOKÝ);

Komentáře

  • Ano … promiň. Pamatuji si, že bylo pozdě, když jsem to zveřejnil, a já jsem byl ospalý a ztrácel koncentraci. Komentář jsem odstranil.

Odpověď

Analogové piny můžete vždy použít pro digitální zápis.

  • digitalRead() funguje na všech pinech. Pouze zaokrouhlí přijatou analogovou hodnotu a představí vám ji. Pokud je analogRead(A0) větší nebo roven 512, digitalRead(A0) bude 1, jinak 0.
  • digitalWrite() funguje na všech pinech s povoleným parametrem 0 nebo 1. digitalWrite(A0,0) je stejný jako analogWrite(A0,0), a digitalWrite(A0,1) je stejný jako analogWrite(A0,255)
  • analogRead() funguje pouze na analogových kolících. Může nabývat jakékoli hodnoty od 0 do 1023.
  • analogWrite() funguje na všech analogových pinech a všech digitálních PWM kolíky. Můžete jej zadat jakoukoli hodnotu mezi 0 a 255.

Analogové piny vám umožňují číst / zapisovat analogové hodnoty – v zásadě místo rozdávání napětí 0 nebo 5 (jako u digitálních) , mohou poskytnout rozsah napětí mezi 0 a 5 (jak na vstupu, tak na výstupu). Všimněte si, že napětí během analogového výstupu je pouze pozorované napětí pomocí multimetru. Ve skutečnosti analogové piny vysílají impulsy signálů 0V a 5V, aby získaly výstup, který „vypadá“ analogově (to je PWM).

Pokud jde o počet pinů: mějte na paměti, že piny PWM mohou být používá se pro analogový výstup. Pokud vám dojdou piny, můžete pomocí multiplexování vydělat více. Není nutné pořídit si další Arduino.

Komentáře

  • AnalogWrite () nevydává napětí mezi 0 až 5 (s výjimkou splatnosti)! AnalogWrite () mění pouze modulaci šířky pulzu signálu. Výstupní napětí je stále 5 voltů (nebo jakýkoli VCC). Piny označené “ analogové “ budou mít pouze výstup 0V nebo 5V. Nejsou variabilní a jsou poznámky
  • @ JamesC4S: Dobrý bod, upraveno. Díky 🙂
  • Mnohem lepší! 🙂
  • Jsou digitalRead () a digitalWrite () na analogových pinech pomalejší? Pokud digitalRead () zaokrouhluje hodnotu, dokážu si představit, že je mnohem pomalejší než digitalRead () na digitálním kolíku?
  • To je velmi stručné a poučné, děkuji, ale domnívám se, že existuje jedna malá chyba. Podle skvělých dokumentů : the Arduino (ATmega) will report HIGH if: a voltage greater than 3.0V is present at the pin (5V boards) což je v rozporu s tvrzením v tomto příspěvku If analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0.

Odpověď

Analogové piny na Arduinu lze použít jako digitální piny, jak ukazuje Anindo Ghosh.

Avšak i když vám dojdou piny pro ovládání vašich krokových motorů, ve skutečnosti nemusíte kupovat další desku. K ovládání příslušného krokového motoru můžete jednoduše použít mezilehlou součást, jako je registr nebo multiplexor.

Odpovědět

Pokud si to můžete dovolit a opravdu si chcete práci se stepperem super usnadnit vyzkoušejte Easy Stepper . Byl jsem velmi potěšen.

Z vzorové kódové stránky

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

Také ze stejné stránky je zde ukázkový kód pro spuštění dvou motorů se dvěma desky easystepper se zrychlením / zpomalením: 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(); } 

Komentáře

  • To opravdu neodpovídá ‚, jako komentář by to bylo lepší. Mohl upřesníš to tak, aby to odpovídalo na otázku?
  • @AnnonomusPerson: Ovladač krokového motoru EasyDriver se objeví aktivnímu produktu na skladě a všemu.

Odpověď

Přidání jako odpověď, protože jej nelze komentovat.

Stručně odpovědět, ano, můžete. Další informace na Odpověď Aninda Ghoshe , jak to udělat.

Upozornění avšak pro Arduino Nano jsou piny A6 a A7 pouze analogové a nelze jej použít v digitálním režimu.

Komentáře

  • Upozorňujeme, že tato odpověď obsahuje téměř pouze odkaz. Odkazy / webové stránky mohou zastarávat, takže tato odpověď bude k ničemu. Ponechte si tento odkaz, ale shrňte prosím nebo citujte příslušné části webových stránek.
  • @Huisman Abychom byli spravedliví, odkazy na další otázky týkající se EE.SE pravděpodobně nebudou zastaralé nebo nedostupné; ale stručné shrnutí by určitě vylepšilo odpověď.
  • @JYelton Nesledoval jsem ‚ odkaz, ale ‚ máte pravdu.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *