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 jeanalogRead(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ý jakoanalogWrite(A0,0)
, adigitalWrite(A0,1)
je stejný jakoanalogWrite(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ěvkuIf 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.
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.