rhandycan1

NRF24L01_receiver_arduino

Nov 8th, 2025 (edited)
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.33 KB | Source Code | 0 0
  1.  //PROGRAM BY: RANDY N. CAÑADA(NOV.2025)
  2.  
  3.  /*connections: arduino
  4. SPI     MOSI    MISO    CLK     CS    CE
  5.       GPIO 11 GPIO 12 GPIO 13 GPIO 10  9
  6.  
  7. MY YOUTUBE CHANNEL: ElectroCrafters:
  8. https://www.youtube.com/channel/UCu1aqzUdTqSnTN5BHNlbVgA
  9.  
  10. MY FB CHANNEL: FB PAGE:
  11. Arduino:
  12. https://www.facebook.com/rhacan2?__tn__=R
  13.  
  14. PLS ALSO SUPPORT MY OTHER PAGE:FB PAGES:
  15. Playlist.ph:
  16. https://www.facebook.com/profile.php?id=61573177858722
  17.  
  18. SUPPORT MY OTHER YOUTUBE CHANNEL:
  19. PlaylistPH
  20. https://www.youtube.com/@PlaylistPh-h2v
  21.  
  22.  
  23.  */
  24.  
  25. #include <SPI.h>
  26. #include <RF24.h>
  27.  
  28. // Motor pins
  29. int enA = A1; int in1 = 3; int in2 = 4;
  30. int enB = A0; int in3 = 5; int in4 = 6;
  31. int maxSpeed = 255;
  32.  
  33. RF24 radio(9, 10);
  34. const byte address[6] = "00001";
  35.  
  36. struct Data_Package {
  37.   int8_t motorLeft;
  38.   int8_t motorRight;
  39. };
  40. Data_Package data;
  41.  
  42. void setup() {
  43.   Serial.begin(115200);
  44.   radio.begin();
  45.   radio.openReadingPipe(1, address);
  46.   radio.setChannel(100);
  47.   radio.setPALevel(RF24_PA_LOW);
  48.   radio.setDataRate(RF24_250KBPS);
  49.   radio.startListening();
  50.  
  51.   pinMode(enA, OUTPUT); pinMode(enB, OUTPUT);
  52.   pinMode(in1, OUTPUT); pinMode(in2, OUTPUT);
  53.   pinMode(in3, OUTPUT); pinMode(in4, OUTPUT);
  54.  
  55.   stopMotors();
  56. }
  57.  
  58. void loop() {
  59.   if (radio.available()) {
  60.     radio.read(&data, sizeof(Data_Package));
  61.  
  62.     Serial.print("MotorLeft: "); Serial.print(data.motorLeft);
  63.     Serial.print("  MotorRight: "); Serial.println(data.motorRight);
  64.  
  65.     driveMotors(data.motorLeft, data.motorRight);
  66.   }
  67. }
  68.  
  69. void driveMotors(int left, int right) {
  70.   // Left motor direction
  71.   if (left > 0) {
  72.     digitalWrite(in1, LOW); digitalWrite(in2, HIGH);
  73.   } else if (left < 0) {
  74.     digitalWrite(in1, HIGH); digitalWrite(in2, LOW);
  75.   } else {
  76.     digitalWrite(in1, LOW); digitalWrite(in2, LOW);
  77.   }
  78.  
  79.   // Right motor direction
  80.   if (right > 0) {
  81.     digitalWrite(in3, LOW); digitalWrite(in4, HIGH);
  82.   } else if (right < 0) {
  83.     digitalWrite(in3, HIGH); digitalWrite(in4, LOW);
  84.   } else {
  85.     digitalWrite(in3, LOW); digitalWrite(in4, LOW);
  86.   }
  87.  
  88.   // Set speeds proportionally
  89.   analogWrite(enA, abs(left) * maxSpeed / 127);
  90.   analogWrite(enB, abs(right) * maxSpeed / 127);
  91. }
  92.  
  93. void stopMotors() {
  94.   digitalWrite(in1, LOW); digitalWrite(in2, LOW);
  95.   digitalWrite(in3, LOW); digitalWrite(in4, LOW);
  96.   analogWrite(enA, 0); analogWrite(enB, 0);
  97. }
  98.  
Advertisement
Add Comment
Please, Sign In to add comment