Advertisement
Maderdash

trying again.

Dec 4th, 2021
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //RECEIVER CODE
  2. //Library: TMRh20/RF24, https://github.com/tmrh20/RF24/
  3.  
  4. #include <SPI.h>
  5. #include <nRF24L01.h>
  6. #include <RF24.h>
  7.  
  8. RF24 radio(7, 8); // CE, CSN
  9. const byte address[6] = "00001";
  10. char receivedData[32] = "";
  11. int  xAxis, yAxis;
  12. // Ultrasonic Sensor
  13.  
  14. int trig1 = 13, trig2 = 9, trig3 = 4, echo1 = 12, echo2 = 10, echo3 = 11;
  15. long duration, distance, slot1, slot2, slot3;
  16. // motor 1
  17.  
  18. int enA = 5;
  19. int in1 = 22;
  20. int in2 = 24;
  21. // motor 2
  22. int enB = 6;
  23. int in3 = 26;
  24. int in4 = 28;
  25.  
  26. //
  27. boolean btn1state = 0;
  28. boolean btn2state = 0;
  29.  
  30. int motorSpeedA = 0;
  31. int motorSpeedB = 0;
  32. // Driver function call them with the delay you want passed into them.
  33. void fullStop(int timing) {
  34.   Serial.println("Stopping");
  35.   delay(timing);
  36.   digitalWrite(in1, LOW);
  37.   digitalWrite(in2, LOW);
  38.   digitalWrite(in3, LOW);
  39.   digitalWrite(in4, LOW);
  40. }
  41. void forward(int timing) {
  42.   digitalWrite(in1, HIGH);
  43.   digitalWrite(in2, LOW);
  44.   analogWrite(enA, 200);    //drive forward
  45.   digitalWrite(in3, LOW);
  46.   digitalWrite(in4, HIGH);
  47.   analogWrite(enB, 200);
  48.   Serial.println("Moving Forward");
  49.   delay(timing);
  50.   digitalWrite(in1, LOW);
  51.   digitalWrite(in2, LOW);
  52.   digitalWrite(in3, LOW);
  53.   digitalWrite(in4, LOW);
  54. }
  55. void backwords(int timing) {
  56.   digitalWrite(in1, LOW);
  57.   digitalWrite(in2, HIGH);
  58.   analogWrite(enA, 200);    //drive backwards for 0,4sec
  59.   digitalWrite(in3, HIGH);
  60.   digitalWrite(in4, LOW);
  61.   analogWrite(enB, 200);
  62.   Serial.println("Moving Backwords");
  63.   delay(timing);
  64.   digitalWrite(in1, LOW);
  65.   digitalWrite(in2, LOW);
  66.   digitalWrite(in3, LOW);
  67.   digitalWrite(in4, LOW);
  68. }
  69. void turnLeft(int timing) {
  70.   digitalWrite(in1, LOW);
  71.   digitalWrite(in2, HIGH);
  72.   analogWrite(enA, 200);   //makes the car turn left for 0,8sec
  73.   digitalWrite(in3, LOW);
  74.   digitalWrite(in4, HIGH);
  75.   analogWrite(enB, 200);
  76.   Serial.println("turning Left");
  77.   delay(timing);
  78.   digitalWrite(in1, LOW);
  79.   digitalWrite(in2, LOW);
  80.   digitalWrite(in3, LOW);
  81.   digitalWrite(in4, LOW);
  82. }
  83. void turnRight(int timing) {
  84.   digitalWrite(in1, LOW);
  85.   digitalWrite(in2, HIGH);
  86.   analogWrite(enA, 200);    //make the car turn right for 0,8sec
  87.   digitalWrite(in3, LOW);
  88.   digitalWrite(in4, HIGH);
  89.   analogWrite(enB, 200);
  90.   Serial.println("turning Right");
  91.   delay(timing);
  92.   digitalWrite(in1, LOW);
  93.   digitalWrite(in2, LOW);
  94.   digitalWrite(in3, LOW);
  95.   digitalWrite(in4, LOW);
  96. }
  97. ////////End driver functions.
  98. void setup() {
  99.  
  100.   pinMode(trig1, OUTPUT); pinMode(echo1, INPUT);
  101.   pinMode(trig2, OUTPUT); pinMode(echo2, INPUT);
  102.   pinMode(trig3, OUTPUT); pinMode(echo3, INPUT);
  103.   pinMode(enA, OUTPUT);
  104.   pinMode(enB, OUTPUT);
  105.   pinMode(in1, OUTPUT);
  106.   pinMode(in2, OUTPUT);
  107.   pinMode(in3, OUTPUT);
  108.   pinMode(in4, OUTPUT);
  109.  
  110.   radio.begin();
  111.   radio.openReadingPipe(0, address);
  112.   radio.setPALevel(RF24_PA_MIN);
  113.   radio.startListening();
  114.  
  115. }
  116.  
  117. void ultra(int trig, int echo)
  118.  
  119. {
  120.   digitalWrite(trig, LOW);
  121.   delay(10);
  122.   digitalWrite(trig, HIGH);
  123.   delay(10);
  124.   digitalWrite(trig, LOW);
  125.   duration = pulseIn(echo, HIGH);
  126.   distance = (duration / 2) * 0.0341;
  127. }
  128.  
  129. void U1()
  130. {
  131.   ultra(trig1, echo1);
  132.   frontsensor = distance;
  133. }
  134. void U2()
  135. {
  136.   ultra(trig2, echo2);
  137.   rightsensor = distance;
  138. }
  139. void U3()
  140. {
  141.   ultra(trig3, echo3);
  142.   leftsensor = distance;
  143. }
  144.  
  145. void loop() {
  146.  
  147.   if (radio.available()) {
  148.     radio.read(&btn1state, sizeof(btn1state));
  149.     delay(15);
  150.     radio.read(&btn2state, sizeof(btn2state));
  151.     delay(15);
  152.     radio.read(&receivedData, sizeof(receivedData));
  153.     xAxis = atoi(&receivedData[0]);
  154.     delay(15);
  155.     radio.read(&receivedData, sizeof(receivedData));
  156.     yAxis = atoi(&receivedData[0]);
  157.     delay(15);
  158.   }
  159.  
  160.   //MANUAL MODE STARTS HERE///////////////////////////////////////////////////////
  161.   if (btn1state == HIGH) {
  162.     if (yAxis > 1010) {
  163.       digitalWrite(in1, HIGH);
  164.       digitalWrite(in2, LOW);
  165.       digitalWrite(in3, LOW);
  166.       digitalWrite(in4, HIGH);
  167.       motorSpeedA = map(yAxis, 470, 0, 0, 255);
  168.       motorSpeedB = map(yAxis, 470, 0, 0, 255);
  169.     }
  170.     else if (yAxis < 20) {
  171.       digitalWrite(in1, LOW);
  172.       digitalWrite(in2, HIGH);
  173.       digitalWrite(in3, HIGH);
  174.       digitalWrite(in4, LOW);
  175.       motorSpeedA = map(yAxis, 550, 1023, 0, 255);
  176.       motorSpeedB = map(yAxis, 550, 1023, 0, 255);
  177.     }
  178.     else if (xAxis > 1010) {
  179.       digitalWrite(in1, LOW);
  180.       digitalWrite(in2, HIGH);
  181.       digitalWrite(in3, LOW);
  182.       digitalWrite(in4, HIGH);
  183.       motorSpeedA = map(xAxis, 470, 0, 0, 255);
  184.       motorSpeedB = map(xAxis, 470, 0, 0, 255);
  185.     }
  186.     else if (xAxis < 20) {
  187.       digitalWrite(in1, HIGH);
  188.       digitalWrite(in2, LOW);
  189.       digitalWrite(in3, HIGH);
  190.       digitalWrite(in4, LOW);
  191.       motorSpeedA = map(xAxis, 550, 1023, 0, 255);
  192.       motorSpeedB = map(xAxis, 550, 1023, 0, 255);
  193.     }
  194.     else  {
  195.       motorSpeedA = 0;
  196.       motorSpeedB = 0;
  197.     }
  198.     analogWrite(enA, motorSpeedA);
  199.     analogWrite(enB, motorSpeedB);
  200.   }
  201.  
  202.   //AUTOMATIC MODE STARTS HERE///////////////////////////////////////////////////////
  203.  
  204.   if (btn2state == HIGH) {
  205.  
  206.     U1(), U2(), U3();
  207.     if (frontsensor > 35 && rightsensor > 35 && leftsensor > 35) {
  208.       forward(1000);
  209.     }
  210.     if (frontsensor < 35) {
  211.       fullStop(500);
  212.       backwords(500);
  213.       fullStop(500);
  214.       turnRight(800);
  215.     }
  216.     if (rightsensor < 25) {
  217.  
  218.       fullStop(800);
  219.       turnLeft(800);
  220.     }
  221.     if (leftsensor < 25) {
  222.       fullStop(1000);
  223.       turnRight(800);
  224.     }
  225.   }
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement