Lệnh inAnalog () đọc đầu vào tương tự. Điều này sau đó có thể được sử dụng để kiểm soát liên tục giá trị đầu ra thay đổi, chẳng hạn như độ sáng của đèn LED, tốc độ của động cơ hoặc vị trí của servo.Việc chia tỷ lệ đầu vào và đầu ra được thực hiện tự động bởi phần mềm plcLib.
Biến toàn cục scanValue giữ giá trị đã nhập, nằm trong phạm vi 0-1023 cho một giá trị tương tự đầu vào. Điều này được tự động điều chỉnh tỷ lệ trong phạm vi 0-255 hoặc 0- 179 khi được sử dụng để điều khiển PWM hoặc servo đầu ra, tương ứng.
13.1 Kiểm soát độ sáng của đèn LED bằng PWM
Liên kết lệnh inAnalog() với lệnh outPWM(), cho phép điều khiển đầu ra PWM từ một đầu vào tương tự. Ví dụ, bản phác thảo sau đây đọc một chiết áp được kết nối với đầu vào X0 và tạo ra dạng sóng xung lặp lại với chu kỳ nhiệm vụ thay đổi trên đầu ra Y0.
#include <plcLib.h>
/* Programmable Logic Controller Library for the Arduino and Compatibles PWM (Pulse Width Modulation) - Analogue control of a PWM output Connections:
Input - potentiometer connected to input X0 (Arduino pin A0) Output - LED connected to output Y0 (Arduino pin 3)
void setup() {
setupPLC(); // Setup inputs and outputs void loop() {
inAnalog(X0); // Read Analogue Input 0 outPWM(Y0); // Send to Output 0 as PWM waveform
Listing 27. Điều khiển tương tự của đầu ra PWM (Source: File > Examples > plcLib
> InputOutput >PWM)
13.2 Kiểm soát tốc độ và hướng của động cơ
Lá chắn động cơ Arduino dựa trên vi mạch điều khiển cầu H có sẵn trên thị trường, cho phép tốc độ và hướng của tối đa hai động cơ DC được điều khiển. Một kết nối phần cứng có thể được hiển thị bên dưới.
Figure 37. Lá chắn động cơ Arduino cho phép điều khiển tối đa hai động cơ.
Hai kênh động cơ có sẵn "Kênh A và Kênh B" và tấm chắn cũng hỗ trợ một
số lượng đầu nối đầu vào và đầu ra tương thích Tinkerkit (cộng với hai giao diện TWI / I2C thì không xem xét ở đây). Hình ảnh trên cho thấy một chiết áp tuyến tính được kết nối với chân X2 (A2), được sử dụng để điều khiển tốc độ động cơ thông qua PWM và một công tắc nghiêng điều khiển hướng động cơ, được liên kết với chân X3 (A3).
Ví dụ sau đây điều khiển tốc độ và hướng của động cơ được kết nối với Kênh A.
#include <plcLib.h>
/* Programmable Logic Controller Library for the Arduino and Compatibles Motor Channel A - Simple Motor Control on Arduino Motor Shield Channel A Connections:
Input - Speed - potentiometer connected to input X2 (Arduino pin A2) Input - Direction - switch connected to input X3 (Arduino pin A3) Output - Channel A Direction (DIRA) - Arduino pin 12
Output - Channel A PWM (PWMA) - Arduino pin 3 Output - Channel A Brake (BRAKEA) - Arduino pin 9
void setup() {
setupPLC(); // Setup inputs and outputs // Turn off Channel A Brake in(RUN);
out(BRAKEA); // Read RUN variable (0 = brake off) }
void loop() {
// Read Analog Input 2 and send to Channel A PWM inAnalog(X2);
outPWM(PWMA); // Read from potentiometer connected to Analogue Input 2 }
Listing 28. Điều khiển động cơ đơn giản trên Arduino Motor Shield Kênh A
(Source: File > Examples > plcLib > Motor > MotorChannelA)
Lưu ý: Xem phần Động cơ của tệp ví dụ để có bản phác thảo tương đương để điều khiển
động cơ được kết nối đến Kênh B.
Lưu ý rằng một số biến được xác định trước có sẵn để đơn giản hóa việc mã hóa điều khiển động cơ phần mềm càng nhiều càng tốt, như tóm tắt bên dưới:
· BRAKEA và BRAKEB bật hoặc tắt phanh trên mỗi kênh (0 = brake of).
· DIRA và DIRB đặt chiều thuận hoặc nghịch của mỗi động cơ.