Advertisement
Cymoniasty

RC#1

Dec 10th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.62 KB | None | 0 0
  1. #include <SPI.h>
  2. #include <nRF24L01.h>
  3. #include <RF24.h>
  4. #include <Servo.h>
  5.  
  6. #define opto 7
  7. #define silnik 3
  8. #define doprzodu 4
  9. #define dotylu 5
  10.  
  11. Servo Serwo;
  12. RF24 radio(9, 10);
  13.  
  14. const uint64_t pipe = 0xF0F0F0F0F0;
  15. int servo = 0;
  16. int servoo = 120;
  17. int value = 0;
  18. int valuee = 515;
  19. int obroty = 0;
  20. int stan = 0;
  21. int blokada = 0;
  22.  
  23. unsigned long czas;
  24. unsigned long czas1;
  25.  
  26. struct package
  27. {
  28.   int X = 512;
  29.   int Y = 512;
  30. };
  31. typedef struct package Package;
  32. Package data;
  33.  
  34. void setup()
  35. {
  36.   czas = millis();
  37.   Serial.begin(115200);
  38.   delay(100);
  39.  
  40.   pinMode(doprzodu, INPUT);
  41.   pinMode(dotylu, INPUT);
  42.   pinMode(opto, INPUT_PULLUP);
  43.   pinMode(silnik, OUTPUT);
  44.   Serwo.attach(6);
  45.  
  46.   radio.begin();
  47.   radio.setDataRate(RF24_2MBPS);
  48.   radio.setPALevel(RF24_PA_HIGH);
  49.   radio.openReadingPipe(1, pipe);
  50.   radio.startListening();
  51. }
  52.  
  53. void loop()
  54. {
  55.   if (millis() - czas1 > 100)
  56.   {
  57.     if ( radio.available())
  58.     {
  59.       while (radio.available())
  60.       {
  61.         radio.read(&data, sizeof(data));
  62.       }
  63.       Serial.println("Radio dostępne");
  64.       int X = data.X;
  65.       int Y = data.Y;
  66.       value = Y;
  67.  
  68.       if ( (value > 475) && (value < 555) )
  69.       {
  70.         digitalWrite(doprzodu, LOW);
  71.         digitalWrite(dotylu, LOW);
  72.       }
  73.       else if (value > 555)
  74.       {
  75.         digitalWrite(doprzodu, HIGH);
  76.         digitalWrite(dotylu, LOW);
  77.         value = map(value, 555, 1023, 0, 255);
  78.         analogWrite(silnik, value);
  79.       }
  80.       else if (value < 475)
  81.       {
  82.         digitalWrite(doprzodu, LOW);
  83.         digitalWrite(dotylu, HIGH);
  84.         value = map(value, 0, 475, 255, 0);
  85.         analogWrite(silnik, value);
  86.       }
  87.       servo = map(X, 0, 1023, 90, 145);
  88.       Serwo.write(servo);
  89.     }
  90.     else
  91.     {
  92.       Serial.println("Radio nie dostępne");
  93.       Serwo.write(servoo);
  94.       value = valuee;
  95.     }
  96.     czas1 = millis();
  97.   }
  98.  
  99.   stan = digitalRead(opto);
  100.   if (stan == HIGH && blokada == 0)
  101.   {
  102.     obroty = obroty + 1;
  103.     blokada = 1;
  104.   }
  105.   if (stan == LOW)  {
  106.     blokada = 0;
  107.   }
  108.   if (millis() - czas > 1000)
  109.   {
  110.     obroty = 0;
  111.     czas = millis();
  112.   }
  113.  
  114.   float rpm = (obroty * 60) / 4;
  115.   float rps = obroty / 4;
  116.   float km = (rpm * 16) * 60 / 100000;
  117.  
  118.   if (millis() - czas > 999)
  119.   {
  120.     Serial.println("RPM:");
  121.     Serial.print(rpm);
  122.     Serial.println();
  123.     Serial.println("RPS:");
  124.     Serial.print(rps);
  125.     Serial.println();
  126.     Serial.println("KM/H:");
  127.     Serial.print(km);
  128.     Serial.println();
  129.     Serial.print("X:");
  130.     Serial.print(data.X);
  131.     Serial.print("    Y:");
  132.     Serial.print(data.Y);
  133.     Serial.println();
  134.   }
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement