fork download
  1. int motor; // Переменная для обработки данных ШИМ по скорости
  2. int left_right; // Переменная для приема обработки данных ШИМ по стику поворота
  3. int PWM_1 = 0; // Переменная для PWM на мотор 1
  4. int PWM_2 = 0; // Переменная для PWM на мотор 2
  5. int duration_1; // Переменная направления вращения мотора 1
  6. int duration_2; // Переменная направления вращения мотора 1
  7.  
  8. // Переменные назначения пинов:
  9. int in_elev = 6; // Пин для подключения к клеммам ELEV приемника
  10. int in_aile = 8; // Пин для подключения к клеммам AILE приемника
  11. int duration_1_pin = 9; // Пин для подключения к драйверу, мотор 1 (направление вращения)
  12. int duration_2_pin = 12; // Пин для подключения к драйверу, мотор 2 (направление вращения)
  13. int PWM_1_pin = 10; // Пин для подключения к драйверу, мотор 1 (скорость вращения)
  14. int PWM_2_pin = 11; // Пин для подключения к драйверу, мотор 2 (скорость вращения)
  15.  
  16. void setup()
  17. {
  18. // Назначаем 2 пина на вход (прием сигнала с приемника)
  19. // и 4 пина на выход (управление драйвером моторов)
  20. Serial.begin(9600);
  21. pinMode(in_elev, INPUT);
  22. pinMode(in_aile, INPUT);
  23. pinMode(PWM_1_pin, OUTPUT);
  24. pinMode(PWM_2_pin, OUTPUT);
  25. pinMode(duration_1_pin, OUTPUT);
  26. pinMode(duration_2_pin, OUTPUT);
  27. }
  28.  
  29. void loop()
  30. {
  31. // Измеряем длину ипульса ШИМ на входах с приемника в микроксек.:
  32. motor = pulseIn(in_elev, HIGH);
  33. left_right = pulseIn(in_aile, HIGH);
  34.  
  35. // Вывод данных в монитор порта потребуется для настройки триммеров передатчика (оставлю)
  36. Serial.print(motor);
  37. Serial.print(" left_right=");
  38. Serial.print(left_right);
  39.  
  40. // Задаем соответствие между длиной импульса с приемника и управляющего сигнала на драйвер моторов
  41. motor = map (motor, 1070, 1850, -255, 255); // Сигнал по скорости
  42. left_right = map (left_right, 1070, 1850, -abs(motor*2), abs(motor*2)); // Сигнал по управлению направлением
  43.  
  44. // Для отключения моторов при стике в среднем положении - стоит на месте
  45. if ( motor <= 15 && motor >= -15 )
  46. {
  47. left_right = 0;
  48. PWM_1 = 0;
  49. PWM_2 = 0;
  50. }
  51. // Для движения назад - влево
  52. if ( motor < -15 && left_right <= motor/12)
  53. {
  54. PWM_1 = abs(motor - left_right);
  55. if ( (motor - left_right) < 0 )
  56. {
  57. duration_1 = 0;
  58. }
  59. else
  60. {
  61. duration_1 = 1;
  62. }
  63. PWM_2 = abs(motor);
  64. duration_2 = 0;
  65. }
  66.  
  67. // Для движения назад - вправо
  68. if ( motor < -15 && left_right >= -motor/12)
  69. {
  70. PWM_2 = abs(motor + left_right);
  71. if ( (motor + left_right) < 0 )
  72. {
  73. duration_2 = 0;
  74. }
  75. else
  76. {
  77. duration_2 = 1;
  78. }
  79. PWM_1 = abs(motor);
  80. duration_1 = 0;
  81. }
  82.  
  83. // Для движеня назад прямо
  84. if ( motor < -15 && (left_right < -motor/12 && left_right > motor/12))
  85. {
  86. PWM_1 = abs(motor);
  87. PWM_2 = abs(motor);
  88. duration_1 = 0;
  89. duration_2 = 0;
  90. }
  91.  
  92. // Для движения вперед - влево
  93. if ( motor > 15 && left_right <= -motor/12)
  94. {
  95. PWM_1 = abs(motor + left_right);
  96. if ( (motor + left_right) > 0 )
  97. {
  98. duration_1 = 1;
  99. }
  100. else
  101. {
  102. duration_1 = 0;
  103. }
  104. PWM_2 = abs(motor);
  105. duration_2 = 1;
  106. }
  107.  
  108. // Для движения вперед - направо
  109. if ( motor > 15 && left_right >= motor/12)
  110. {
  111. PWM_2 = abs(motor - left_right);
  112. if ( (motor - left_right) > 0 )
  113. {
  114. duration_2 = 1;
  115. }
  116. else
  117. {
  118. duration_2 = 0;
  119. }
  120. PWM_1 = abs(motor);
  121. duration_1 = 1;
  122. }
  123.  
  124. // Для движения прямо вперед
  125. if ( motor > 15 && (left_right < motor/12 && left_right > -motor/12))
  126. {
  127. PWM_1 = abs(motor);
  128. PWM_2 = abs(motor);
  129. duration_1 = 1;
  130. duration_2 = 1;
  131. }
  132.  
  133. // Вывод значений в монитор порта - для проверки и настройки (оставлю)
  134. Serial.print(" left_right2=");
  135. Serial.print(left_right);
  136. Serial.print(" PWM_1=");
  137. Serial.print(PWM_1);
  138. Serial.print(" duration_1=");
  139. Serial.print(duration_1);
  140. Serial.print(" PWM_2=");
  141. Serial.print(PWM_2);
  142. Serial.print(" duration_2=");
  143. Serial.println(duration_2);
  144.  
  145. // Передаем команды управления на драйвер моторов:
  146. digitalWrite(duration_1_pin, duration_1);
  147. digitalWrite(duration_2_pin, duration_2);
  148. analogWrite(PWM_1_pin, PWM_1);
  149. analogWrite(PWM_2_pin, PWM_2);
  150. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘void setup()’:
prog.cpp:20:2: error: ‘Serial’ was not declared in this scope
  Serial.begin(9600);
  ^~~~~~
prog.cpp:21:19: error: ‘INPUT’ was not declared in this scope
  pinMode(in_elev, INPUT);
                   ^~~~~
prog.cpp:21:24: error: ‘pinMode’ was not declared in this scope
  pinMode(in_elev, INPUT);
                        ^
prog.cpp:23:21: error: ‘OUTPUT’ was not declared in this scope
  pinMode(PWM_1_pin, OUTPUT);
                     ^~~~~~
prog.cpp: In function ‘void loop()’:
prog.cpp:32:30: error: ‘HIGH’ was not declared in this scope
     motor = pulseIn(in_elev, HIGH);
                              ^~~~
prog.cpp:32:34: error: ‘pulseIn’ was not declared in this scope
     motor = pulseIn(in_elev, HIGH);
                                  ^
prog.cpp:36:5: error: ‘Serial’ was not declared in this scope
     Serial.print(motor);
     ^~~~~~
prog.cpp:41:46: error: ‘map’ was not declared in this scope
     motor = map (motor, 1070, 1850, -255, 255);                              // Сигнал по скорости
                                              ^
prog.cpp:42:59: error: ‘abs’ was not declared in this scope
     left_right = map (left_right, 1070, 1850, -abs(motor*2), abs(motor*2));  // Сигнал по управлению направлением
                                                           ^
prog.cpp:146:44: error: ‘digitalWrite’ was not declared in this scope
     digitalWrite(duration_1_pin, duration_1);
                                            ^
prog.cpp:148:33: error: ‘analogWrite’ was not declared in this scope
     analogWrite(PWM_1_pin, PWM_1);
                                 ^
stdout
Standard output is empty