Tôi có thể sử dụng các chân tương tự trên Arduino cho dự án của tôi dưới dạng kỹ thuật số không?


27

Tôi mới sử dụng Arduino và tôi có Arduino Uno. Đối với các dự án tôi đã thực hiện, tôi chỉ sử dụng các chân kỹ thuật số.

Tôi đang chế tạo một chiếc xe nhỏ sử dụng động cơ bước. Tôi đã hết chân để điều khiển động cơ cho chiếc xe này. Các chân tương tự để làm gì? Tôi có thể sử dụng chân analog để điều khiển phần còn lại của động cơ bước mà tôi kết nối với Arduino không, hoặc tôi có phải mua Arduino lớn hơn Arduino Uno để điều khiển thiết bị này không?

Câu trả lời:


22

Có, các chân tương tự trên Arduino có thể được sử dụng làm đầu ra kỹ thuật số.

Điều này được ghi lại trong tài liệu chân đầu vào Arduino , trong phần Ghim bản đồ:


Ánh xạ chân Các chân tương tự có thể được sử dụng giống hệt với các chân kỹ thuật số, sử dụng các bí danh A0 (cho đầu vào tương tự 0), A1, v.v. Ví dụ, mã sẽ giống như thế này để đặt chân analog 0 thành đầu ra và để đặt nó CAO:
pinMode (A0, OUTPUT);
kỹ thuật sốWrite (A0, CAO);


Ừ, xin lỗi. Tôi nhớ rằng đã muộn khi tôi đăng nó và tôi đang buồn ngủ và mất tập trung. Tôi xóa bình luận.
Chim cánh cụt vô danh

27

Bạn luôn có thể sử dụng các chân tương tự để viết kỹ thuật số.

  • digitalRead()hoạt động trên tất cả các chân. Nó sẽ chỉ làm tròn giá trị tương tự nhận được và trình bày cho bạn. Nếu analogRead(A0)lớn hơn hoặc bằng 512, digitalRead(A0)sẽ là 1, khác 0.
  • digitalWrite()hoạt động trên tất cả các chân, với tham số cho phép 0 hoặc 1. digitalWrite(A0,0)giống như analogWrite(A0,0)digitalWrite(A0,1)giống nhưanalogWrite(A0,255)
  • analogRead()chỉ hoạt động trên các chân analog. Nó có thể nhận bất kỳ giá trị nào trong khoảng từ 0 đến 1023.
  • analogWrite()hoạt động trên tất cả các chân analog và tất cả các chân PWM kỹ thuật số . Bạn có thể cung cấp cho nó bất kỳ giá trị nào trong khoảng từ 0 đến 255.

Các chân analog cho phép bạn đọc / ghi các giá trị tương tự - về cơ bản, thay vì đưa ra điện áp bằng 0 hoặc 5 (như với kỹ thuật số), chúng có thể cung cấp một phạm vi điện áp trong khoảng từ 0 đến 5 (cả dưới dạng đầu vào và đầu ra). Lưu ý rằng điện áp trong đầu ra analog chỉ là điện áp quan sát với một vạn năng. Trong thực tế, các chân analog gửi các xung tín hiệu 0V và 5V để có được đầu ra "trông" tương tự (đây là PWM).

Về số lượng chân: hãy nhớ rằng các chân PWM có thể được sử dụng cho đầu ra analog. Nếu bạn hết chân, bạn có thể sử dụng ghép kênh để tạo thêm. Không cần thiết phải có một Arduino khác.


8
AnalogWrite () không xuất điện áp trong khoảng từ 0 đến 5 (trừ khi đến hạn)! AnalogWrite () chỉ thay đổi điều chế độ rộng xung của tín hiệu. Điện áp đầu ra vẫn là 5vol (hoặc bất kể VCC là gì). Các chân được đánh dấu "analog" sẽ chỉ xuất 0V hoặc 5V. Chúng không thay đổi và được ghi chú
baldengineer

1
@ JamesC4S: Điểm tốt, được chỉnh sửa. Cảm ơn :)
Manishearth

Tốt hơn nhiều! :)
baldengineer

DigitalRead () và digitalWrite () trên các chân analog có chậm hơn không? Nếu digitalRead () làm tròn giá trị, tôi có thể tưởng tượng nó đang chậm hơn so với digitalRead () trên pin kỹ thuật số không?
Johncl

Điều này rất súc tích và nhiều thông tin, cảm ơn bạn, tuy nhiên tôi tin rằng có một lỗi nhỏ. Theo các tài liệu tốt : the Arduino (ATmega) will report HIGH if: a voltage greater than 3.0V is present at the pin (5V boards)mâu thuẫn với tuyên bố trong bài này If analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0.
dotancohen

6

Các chân tương tự trên Arduino có thể được sử dụng làm chân kỹ thuật số, như được chỉ ra bởi Anindo Ghosh.

Tuy nhiên, ngay cả khi bạn hết chân để điều khiển động cơ bước, bạn không thực sự cần phải mua một bảng khác. Bạn chỉ có thể sử dụng một thành phần trung gian như thanh ghi hoặc bộ ghép kênh để điều khiển động cơ bước thích hợp.


4

Nếu bạn có đủ khả năng, và bạn thực sự muốn làm việc với một bước siêu dễ dàng hãy xem Easy Stepper . Tôi rất hài lòng.

Từ trang mã ví dụ

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

Cũng từ cùng một trang, đây là một số mã ví dụ để chạy hai động cơ với hai bảng điều khiển giảm tốc, với khả năng tăng tốc / giảm tốc: 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();
}

Điều này thực sự không trả lời câu hỏi; nó sẽ tốt hơn như là một bình luận Bạn có thể thịt nó ra để nó trả lời câu hỏi?
Manishearth

@AnnonomusPerson: Trình điều khiển động cơ bước EasyDriver xuất hiện cho một sản phẩm đang hoạt động, trong kho và mọi thứ.
davidcary
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.