fork download
  1. #include <SPI.h>
  2. #include "RF24.h"
  3. #include <SoftwareSerial.h>
  4. #include <Servo.h>
  5.  
  6. /*Разное*/
  7.  
  8. #define SERVO_MID 90
  9. #define SERVO_BOT 0
  10. #define SERVO_TOP 180
  11. #define Gaz_Stop_Porog 15
  12. #define GAZ_BOT 0
  13. #define GAZ_MID 512
  14. #define GAZ_TOP 1024
  15.  
  16.  
  17.  
  18. /*Переменная передачи данных*/
  19. #define D_Y 1
  20. #define D_X 0
  21.  
  22.  
  23.  
  24.  
  25. /******************************************************************
  26.   Переменные и подключение
  27.   *******************************************************************/
  28.  
  29. //SCK -> 13 52
  30. //MISO -> 12 50
  31. //MOSI -> 11 51
  32. //CSN -> 10 53
  33. //CE -> 9 48
  34.  
  35. RF24 radio(9,10);
  36. // адреса каналов приема и передачи
  37. const uint64_t pipe = 0xF0F1F2F3F4LL; // индитификатор передачи, "труба"
  38.  
  39. /******************************************************************
  40.   Переменные
  41.   *******************************************************************/
  42.  
  43. int IN1=6, IN2=5;//перенести в define
  44.  
  45. int data[2]; //Переменная для передачи данных.
  46.  
  47. /*Переменные*/
  48. int JoyX, JoyY, GazX, GazY, absX, absY;
  49.  
  50. Servo servoLeft;
  51. Servo servoRight;
  52.  
  53. /**********************************************************************/
  54.  
  55. void setup() {
  56.  
  57. Serial.begin(9600);
  58.  
  59.  
  60. /*инициализация радиомодуля*/
  61. radio.begin();
  62. delay(2);
  63. radio.setChannel(9); // канал (0-127)
  64. radio.setDataRate(RF24_2MBPS);
  65. radio.setPALevel(RF24_PA_HIGH);
  66. radio.openReadingPipe(1,pipe); // открываем первую трубу с индитификатором "pipe"
  67. radio.startListening(); // Начинаем слушать эфир
  68. //radio.writeAckPayload (1, &ackData, sizeof(ackData) );
  69.  
  70.  
  71.  
  72. /*настройка пинов*/
  73. pinMode (IN1, OUTPUT);
  74. pinMode (IN2, OUTPUT);
  75.  
  76.  
  77. /*инициализация серв*/
  78. servoLeft.attach(IN1);
  79. servoRight.attach(IN2);
  80. servoLeft.write(SERVO_MID);
  81. servoRight.write(SERVO_MID);
  82.  
  83.  
  84. } // <======Конец сетапа.
  85.  
  86.  
  87. void loop() {
  88.  
  89. if(radio.available()){// Если в буфере приёма имеются принятые данные от передатчика, то ...
  90. radio.read(&data,sizeof(data)); // Читаем данные из буфера приёма в массив myData указывая сколько всего байт может поместиться в массив.
  91. //radio.writeAckPayload (1, &ackData, sizeof(ackData) );
  92.  
  93.  
  94. /****************************************************************
  95.   ЕЗДА
  96.   *****************************************************************/
  97.  
  98.  
  99. JoyX = data[D_X];
  100. JoyY = data[D_Y];
  101. GazX = map(JoyX, GAZ_BOT, GAZ_TOP, SERVO_BOT, SERVO_TOP);
  102. GazY = map(JoyY, GAZ_BOT, GAZ_TOP, SERVO_BOT, SERVO_TOP);
  103.  
  104. Serial.print("X = ");
  105. Serial.println(data[D_X]);
  106. Serial.print("Y = ");
  107. Serial.println(JoyY);
  108.  
  109. //Определение направления и скорости
  110.  
  111. //Стоит
  112. if (GazX >= SERVO_MID - Gaz_Stop_Porog && GazX <= SERVO_MID + Gaz_Stop_Porog
  113. && GazY >= SERVO_MID - Gaz_Stop_Porog && GazY <= SERVO_MID + Gaz_Stop_Porog){
  114. set_speed (SERVO_MID, SERVO_MID);
  115. }
  116. //Вперёд
  117. else if (GazX >= SERVO_MID + Gaz_Stop_Porog && GazY >= SERVO_MID - Gaz_Stop_Porog
  118. && GazY <= SERVO_MID + Gaz_Stop_Porog){
  119. set_speed (GazX, GazX);
  120. }
  121. //Вперёд вправо
  122. if (GazX >= SERVO_MID + Gaz_Stop_Porog &&
  123. GazY >= SERVO_MID + Gaz_Stop_Porog){
  124. set_speed (GazX, GazX - (GazY - (SERVO_MID + Gaz_Stop_Porog)));
  125. //null_nap();
  126. }
  127. //Вперёд влево
  128. if (GazX >= SERVO_MID + Gaz_Stop_Porog &&
  129. GazY <= SERVO_MID - Gaz_Stop_Porog){
  130. set_speed (GazX - ((SERVO_MID - Gaz_Stop_Porog) - GazY), GazX);
  131. //null_nap();
  132. }
  133. //Назад
  134. else if (GazX <= SERVO_MID - Gaz_Stop_Porog && GazY >= SERVO_MID - Gaz_Stop_Porog
  135. && GazY <= SERVO_MID + Gaz_Stop_Porog){
  136. set_speed (GazX, GazX);
  137. //null_nap();
  138. }
  139. //Назад влево
  140. if (GazX <= SERVO_MID - Gaz_Stop_Porog &&
  141. GazY <= SERVO_MID - Gaz_Stop_Porog){
  142. set_speed (GazX + ((SERVO_MID - Gaz_Stop_Porog) - GazY), GazX);
  143. //null_nap();
  144. }
  145. //Назад вправо
  146. if (GazX <= SERVO_MID - Gaz_Stop_Porog &&
  147. GazY >= SERVO_MID + Gaz_Stop_Porog){
  148. set_speed (GazX, GazX + (GazY - (SERVO_MID + Gaz_Stop_Porog)));
  149. //null_nap();
  150. }
  151. //Налево
  152. else if (GazX <= SERVO_MID + Gaz_Stop_Porog && GazX >= SERVO_MID - Gaz_Stop_Porog
  153. && GazY <= SERVO_MID - Gaz_Stop_Porog){
  154. set_speed (SERVO_TOP - GazY, GazY);
  155. //null_nap();
  156. }
  157. //Направо
  158. else if (GazX <= SERVO_MID + Gaz_Stop_Porog && GazX >= SERVO_MID - Gaz_Stop_Porog
  159. && GazY >= SERVO_MID + Gaz_Stop_Porog){
  160. set_speed (SERVO_TOP - GazY, GazY);
  161. //null_nap();
  162. }
  163.  
  164. }}
  165.  
  166.  
  167. void set_speed(int _left, int _right){
  168. servoLeft.write(_left);
  169. servoRight.write(_right);
  170. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:1:12: fatal error: SPI.h: No such file or directory
   #include <SPI.h>
            ^~~~~~~
compilation terminated.
stdout
Standard output is empty