//PROGRAM BY: RANDY N. CAÑADA(NOV.2025) /*connections: arduino SPI MOSI MISO CLK CS CE GPIO 11 GPIO 12 GPIO 13 GPIO 10 9 */ #include #include // Motor pins int enA = A1; int in1 = 3; int in2 = 4; int enB = A0; int in3 = 5; int in4 = 6; int maxSpeed = 255; RF24 radio(9, 10); const byte address[6] = "00001"; struct Data_Package { int8_t motorLeft; int8_t motorRight; }; Data_Package data; void setup() { Serial.begin(115200); radio.begin(); radio.openReadingPipe(1, address); radio.setChannel(100); radio.setPALevel(RF24_PA_LOW); radio.setDataRate(RF24_250KBPS); radio.startListening(); pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); stopMotors(); } void loop() { if (radio.available()) { radio.read(&data, sizeof(Data_Package)); Serial.print("MotorLeft: "); Serial.print(data.motorLeft); Serial.print(" MotorRight: "); Serial.println(data.motorRight); driveMotors(data.motorLeft, data.motorRight); } } void driveMotors(int left, int right) { // Left motor direction if (left > 0) { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); } else if (left < 0) { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); } else { digitalWrite(in1, LOW); digitalWrite(in2, LOW); } // Right motor direction if (right > 0) { digitalWrite(in3, LOW); digitalWrite(in4, HIGH); } else if (right < 0) { digitalWrite(in3, HIGH); digitalWrite(in4, LOW); } else { digitalWrite(in3, LOW); digitalWrite(in4, LOW); } // Set speeds proportionally analogWrite(enA, abs(left) * maxSpeed / 127); analogWrite(enB, abs(right) * maxSpeed / 127); } void stopMotors() { digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); analogWrite(enA, 0); analogWrite(enB, 0); }