Jestem nowy w używaniu Arduino i mam Arduino Uno. Do projektów, które zrobiłem, użyłem tylko pinów cyfrowych.
Buduję mały pojazd, który wykorzystuje silniki krokowe. Skończyły mi się piny do sterowania silnikami tego pojazdu. Do czego służą piny analogowe? Czy mogę używać pinów analogowych do sterowania pozostałymi silnikami krokowymi, które podłączam do Arduino, czy też muszę kupić większe Arduino niż Arduino Uno, aby sterować tym urządzeniem?
Odpowiedź
Tak, analogowe piny Arduino mogą być używane jako wyjścia cyfrowe.
Jest to udokumentowane w dokumentacji pinów wejściowych Arduino , w sekcji Pin Mapping:
Mapowanie pinów
Pinów analogowych można używać identycznie jak pinów cyfrowych, używając aliasów A0 (dla wejścia analogowego 0), A1 itd. Na przykład kod wyglądałby tak: ustaw analogowy pin 0 na wyjście i ustaw go HIGH:
pinMode (A0, OUTPUT);
digitalWrite (A0, HIGH);
Komentarze
- Tak … przepraszam. Pamiętam, że było późno, kiedy to opublikowałem, robiłem się senny i traciłem koncentrację. Usunąłem komentarz.
Odpowiedź
Zawsze możesz użyć pinów analogowych do zapisu cyfrowego.
-
digitalRead()
działa na wszystkich pinach. Po prostu zaokrągli otrzymaną wartość analogową i przedstawi ci ją. JeślianalogRead(A0)
jest większe lub równe 512,digitalRead(A0)
będzie równe 1, w przeciwnym razie 0. -
digitalWrite()
działa na wszystkich pinach, z dozwolonym parametrem 0 lub 1.digitalWrite(A0,0)
to to samo coanalogWrite(A0,0)
, adigitalWrite(A0,1)
to to samo coanalogWrite(A0,255)
-
analogRead()
działa tylko na pinach analogowych. Może przyjąć dowolną wartość od 0 do 1023. -
analogWrite()
działa na wszystkich pinach analogowych i wszystkich cyfrowych PWM szpilki. Możesz podać dowolną wartość z zakresu od 0 do 255.
Piny analogowe pozwalają na odczyt / zapis wartości analogowych – w zasadzie zamiast podawać napięcie 0 lub 5 (jak w przypadku cyfrowym) , mogą dawać zakres napięć od 0 do 5 (zarówno na wejściu, jak i na wyjściu). Należy pamiętać, że napięcie na wyjściu analogowym jest tylko napięciem obserwowanym za pomocą multimetru. W rzeczywistości piny analogowe wysyłają impulsy sygnałów 0 V i 5 V, aby uzyskać wyjście, które „wygląda” analogowo (to jest PWM).
Odnośnie liczby pinów: pamiętaj, że piny PWM mogą być używany do wyjścia analogowego. Jeśli zabraknie pinów, możesz użyć multipleksowania , aby zrobić więcej. Nie ma potrzeby kupowania innego Arduino.
Komentarze
- AnalogWrite () nie wyprowadza napięć od 0 do 5 (z wyjątkiem Due)! AnalogWrite () zmienia tylko modulację szerokości impulsu sygnału. Napięcie wyjściowe nadal wynosi 5 woltów (lub cokolwiek to jest VCC). Piny oznaczone ” analogowe ” będą wyprowadzać tylko napięcie 0 V lub 5 V. Nie są zmienne i należy o nich pamiętać
- @ JamesC4S: Słuszna uwaga, zredagowano. Dzięki 🙂
- Dużo lepiej! 🙂
- Czy digitalRead () i digitalWrite () na pinach analogowych są wolniejsze? Jeśli digitalRead () zaokrągla wartość, mogę sobie wyobrazić, że jest znacznie wolniejszy niż digitalRead () na pinie cyfrowym?
- To jest bardzo zwięzłe i pouczające, dziękuję, jednak uważam, że jest jeden mały błąd. Zgodnie z dobrymi dokumentami :
the Arduino (ATmega) will report HIGH if: a voltage greater than 3.0V is present at the pin (5V boards)
, co jest sprzeczne z oświadczeniem w tym pościeIf analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0
.
Odpowiedź
Analogowe piny Arduino mogą być używane jako piny cyfrowe, jak wskazano przez Anindo Ghosh.
Jednak nawet jeśli zabraknie pinów do sterowania silnikami krokowymi, tak naprawdę nie musisz kupować kolejnej płytki. Możesz po prostu użyć elementu pośredniego, takiego jak rejestr lub multiplekser, do sterowania odpowiednim silnikiem krokowym.
Odpowiedź
Jeśli Cię na to stać, a naprawdę chcesz, aby praca ze stepperem była super łatwa sprawdź Easy Stepper . Byłem bardzo zadowolony.
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); }
Również z tej samej strony, tutaj jest przykładowy kod uruchamiający dwa silniki z dwoma tablice easystepper z przyspieszaniem / zwalnianiem: 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(); }
Komentarze
- To naprawdę nie ' nie odpowiada na pytanie; byłoby lepiej jako komentarz. wyrabiasz to tak, aby odpowiadało na pytanie?
- @AnnonomusPerson: Sterownik silnika krokowego EasyDriver wydaje się być aktywnym produktem, w magazynie i wszystkim.
Odpowiedź
Dodawanie jako odpowiedź, ponieważ nie można komentować.
Aby odpowiedzieć krótko, tak, możesz. do odpowiedzi Anindo Ghosha , jak to zrobić.
Uwaga jednak w przypadku Arduino Nano piny A6 i A7 są tylko analogowe i nie można jej używać w trybie cyfrowym.
Komentarze
- Należy pamiętać, że ta odpowiedź zawiera prawie tylko łącze. Linki / strony internetowe mogą stać się przestarzałe, przez co ta odpowiedź będzie bezużyteczna. Zachowaj link, ale podsumuj lub zacytuj odpowiednie części witryny.
- @Huisman Aby być uczciwym, istnieje mniejsze prawdopodobieństwo, że linki do innych pytań w EE.SE zostaną wycofane lub niedostępne; ale krótkie podsumowanie z pewnością poprawiłoby odpowiedź.
- @JYelton Nie ' nie skorzystałem z linku, ale ' re right.