Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //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
- MY YOUTUBE CHANNEL: ElectroCrafters:
- https://www.youtube.com/channel/UCu1aqzUdTqSnTN5BHNlbVgA
- MY FB CHANNEL: FB PAGE:
- Arduino:
- https://www.facebook.com/rhacan2?__tn__=R
- PLS ALSO SUPPORT MY OTHER PAGE:FB PAGES:
- Playlist.ph:
- https://www.facebook.com/profile.php?id=61573177858722
- SUPPORT MY OTHER YOUTUBE CHANNEL:
- PlaylistPH
- https://www.youtube.com/@PlaylistPh-h2v
- */
- #include <SPI.h>
- #include <RF24.h>
- // 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);
- }
Advertisement
Add Comment
Please, Sign In to add comment