Chúng ta thêm một chút dung sai và có giá trị từ 470 đến 550 là chính. Vì vậy, nếu chúng ta di chuyển trục Y của phím điều khiển lùi và giá trị xuống dưới 470, chúng ta sẽ đặt hướng quay của hai động cơ về phía sau bằng bốn chân đầu vào. Sau đó, chúng tơi sẽ chuyển đổi các giá trị giảm dần từ 470 thành 0 thành tăng giá trị PWM từ 0 đến 255, đây là tốc độ của động cơ.
// Y-axis used for forward and backward control if (yAxis < 470) {
// Set Motor A backward digitalWrite(in1, HIGH); digitalWrite(in2, LOW);
67
// Set Motor B backward digitalWrite(in3, HIGH); digitalWrite(in4, LOW);
// Convert the declining Y-axis readings for going backward from 470 to 0 into 0 to 255 value for the PWM signal for increasing the motor speed
motorSpeedA = map(yAxis, 470, 0, 0, 255); motorSpeedB = map(yAxis, 470, 0, 0, 255); }
Tương tự, nếu chúng ta di chuyển trục Y của cần điều khiển về phía trước và giá trị vượt quá 550, chúng ta sẽ có các động cơ di chuyển về phía trước và chuyển đổi số đọc từ 550 sang 1023 thành giá trị PWM từ 0 đến 255. Nếu cần điều khiển ở giữa tốc độ động cơ sẽ bằng không.
Tiếp theo, hãy xem cách chúng em sử dụng trục X cho điều khiển bên trái và bên phải của xe.
// X-axis used for left and right control if (xAxis < 470) {
// Convert the declining X-axis readings from 470 to 0 into increasing 0 to 255 value
int xMapped = map(xAxis, 470, 0, 0, 255);
// Move to left - decrease left motor speed, increase right motor speed motorSpeedA = motorSpeedA - xMapped;
68
motorSpeedB = motorSpeedB + xMapped; // Confine the range from 0 to 255
if (motorSpeedA < 0) { motorSpeedA = 0; } if (motorSpeedB > 255) { motorSpeedB = 255; } }
Vì vậy, một lần nữa, trước tiên chúng ta cần chuyển đổi số đọc trục X thành giá trị tốc độ từ 0 đến 255. Để di chuyển sang trái, chúng tôi sử dụng giá trị này để giảm tốc độ động cơ bên trái và tăng tốc độ động cơ bên phải. Ở đây, do các hàm số học, chúng tôi sử dụng hai câu lệnh if để giới hạn phạm vi tốc độ động cơ từ 0 đến 255.
69