저는 Arduino를 처음 사용하고 Arduino Uno를 사용하고 있습니다. 제가 수행 한 프로젝트에서는 디지털 핀만 사용했습니다.
스테퍼 모터를 사용하는 소형 차량을 만들고 있습니다. 이 차량의 모터를 제어 할 핀이 부족합니다. 아날로그 핀은 무엇입니까? 아날로그 핀을 사용하여 Arduino에 연결하는 나머지 스텝 모터를 제어 할 수 있습니까? 아니면이 장치를 제어하려면 Arduino Uno보다 큰 Arduino를 구입해야합니까?
Answer
예, Arduino의 아날로그 핀을 디지털 출력으로 사용할 수 있습니다.
이 내용은 핀 매핑 섹션의 Arduino 입력 핀 문서 에 설명되어 있습니다.
핀 매핑
아날로그 핀은 별칭 A0 (아날로그 입력 0의 경우), A1 등을 사용하여 디지털 핀과 동일하게 사용할 수 있습니다. 예를 들어 코드는 다음과 같습니다. 아날로그 핀 0을 출력으로 설정하고 HIGH로 설정하려면 :
pinMode (A0, OUTPUT);
digitalWrite (A0, HIGH);
댓글
- 예 … 죄송합니다. 글을 올렸을 때 늦어서 졸려서 집중력이 떨어 졌던 것을 기억합니다. 댓글을 삭제했습니다.
답변
디지털 쓰기에는 항상 아날로그 핀을 사용할 수 있습니다.
-
digitalRead()
는 모든 핀에서 작동합니다. 수신 된 아날로그 값을 반올림하여 표시합니다.analogRead(A0)
가 512보다 크거나 같으면digitalRead(A0)
는 1이되고 그렇지 않으면 0이됩니다. -
digitalWrite()
는 허용 된 매개 변수 0 또는 1로 모든 핀에서 작동합니다.digitalWrite(A0,0)
는analogWrite(A0,0)
와 동일합니다.digitalWrite(A0,1)
는analogWrite(A0,255)
-
analogRead()
는 작동 만합니다. 아날로그 핀에. 0에서 1023 사이의 값을 취할 수 있습니다. -
analogWrite()
는 모든 아날로그 핀과 모든 디지털 PWM에서 작동합니다. 핀. 0에서 255 사이의 값을 제공 할 수 있습니다.
와 동일합니다.
아날로그 핀을 사용하면 기본적으로 0 또는 5의 전압을 제공하는 대신 (디지털과 마찬가지로) 아날로그 값을 읽고 쓸 수 있습니다. , 0에서 5 사이의 전압 범위를 제공 할 수 있습니다 (입력 및 출력 모두). 아날로그 출력 중 전압은 멀티 미터로 관찰 된 전압 일뿐입니다. 실제로 아날로그 핀은 0V 및 5V 신호의 펄스를 전송하여 아날로그 (PWM)처럼 “보이는”출력을 얻습니다.
핀 수 관련 : PWM 핀은 다음과 같을 수 있습니다. 아날로그 출력에 사용됩니다. 핀이 부족한 경우 멀티플렉싱 을 사용하여 더 많이 만들 수 있습니다. 다른 아두 이노를 구할 필요는 없습니다.
코멘트
- AnalogWrite ()는 0에서 5 사이의 전압을 출력하지 않습니다 (기한 제외)! AnalogWrite ()는 신호의 펄스 폭 변조 만 변경합니다. 출력 전압은 여전히 5 볼트 (또는 VCC가 무엇이든)입니다. " 아날로그 "로 표시된 핀은 0V 또는 5V 만 출력합니다. 변수가 아니고 참고
- @ JamesC4S : 좋은 지적입니다. 감사합니다 🙂
- 훨씬 좋아졌습니다! 🙂
- 아날로그 핀의 digitalRead () 및 digitalWrite ()가 더 느립니까? digitalRead ()가 디지털 핀의 digitalRead ()보다 훨씬 느리다고 상상할 수있는 값을 반올림하면?
- 이것은 매우 간결하고 유익합니다. 감사합니다.하지만 작은 오류가 하나 있다고 생각합니다. 좋은 문서 :
the Arduino (ATmega) will report HIGH if: a voltage greater than 3.0V is present at the pin (5V boards)
에 따르면이 게시물의 진술과 모순되는If analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0
.
Answer
Arduino의 아날로그 핀은 뾰족한 디지털 핀으로 사용할 수 있습니다. Anindo Ghosh에 의해 밖으로.
그러나 스테퍼 모터를 제어하기위한 핀이 부족하더라도 실제로 다른 보드를 구입할 필요가 없습니다. 레지스터 또는 멀티플렉서와 같은 중간 구성 요소를 사용하여 적절한 스테퍼 모터를 제어 할 수 있습니다.
답변
적당 할 수 있고 스테퍼 작업을 매우 쉽게 만들고 싶은 경우 em> Easy Stepper 를 확인하세요. 나는 매우 기뻤습니다.
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); }
또한 동일한 페이지에서 두 개의 모터를 실행하는 몇 가지 예제 코드가 있습니다. 가속 / 감속 기능이있는 easystepper 보드 : 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(); }
댓글
- 이것은 실제로 질문에 대한 답변이 아닙니다 '. 댓글로 작성하는 것이 더 좋습니다. 질문에 답할 수 있도록 구체화 하시겠습니까?
- @AnnomusPerson : EasyDriver 스테퍼 모터 드라이버 는 재고 및 모든 재고가있는 활성 제품에 나타납니다.
답변
댓글을 달 수 없기 때문에 답변으로 추가
간단히 답변하려면 가능합니다. 방법에 대한 Anindo Ghosh의 답변 을 참조하세요.
참고 그러나 Arduino Nano 의 경우 핀 A6 및 A7은 아날로그 전용입니다. 디지털 모드에서는 사용할 수 없습니다.
댓글
- 이 답변에는 링크 만 포함되어 있습니다. 링크 / 웹 사이트가 쓸모 없게되어이 답변이 쓸모 없게 될 수 있습니다. 링크를 유지하되 웹 사이트의 관련 부분을 요약하거나 인용하십시오.
- @Huisman 공정하게 말하면 EE.SE의 다른 질문에 대한 링크는 더 이상 사용되지 않거나 액세스 할 수 없게 될 가능성이 적습니다. 그러나 간단한 요약은 확실히 답을 개선 할 것입니다.
- @JYelton 나는 링크를 따르지 않았지만 ' 당신은 ' 맞습니다.