C/C++

Помогите с кодом на ардуино

нужно совместить 2 кода в 1
Nikolai Kuzmihev
Nikolai Kuzmihev
125
Вот объединенный код на Arduino, который содержит функции из обоих исходных кодов:

```cpp
#include <IRremote.h>
#include <Servo.h>

long ir_rec;
IRrecv irrecv(3);
decode_results results;
volatile int DL;
volatile int DM;
volatile int DR;

void setup() {
irrecv.enableIRIn();
pinMode(2, OUTPUT);
pinMode(5, OUTPUT);
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, INPUT);
myservo.attach(10);
DL = 0;
DM = 0;
DR = 0;
myservo.write(90);
}

void loop() {
handleIRRemote(); // Обработка ИК-пульта
handleObstacleAvoidance(); // Обработка избегания препятствий
}

void handleIRRemote() {
if (irrecv.decode(&results)) {
ir_rec = results.value;
irrecv.resume();
}

if (ir_rec == 0xFF629D) {
forward();
}
if (ir_rec == 0xFFA857) {
backward();
}
if (ir_rec == 0xFF22DD) {
turn_left();
}
if (ir_rec == 0xFFC23D) {
turn_right();
}
if (ir_rec == 0xFF30CF) {
rotate_left();
}
if (ir_rec == 0xFF7A85) {
rotate_right();
}
if (ir_rec == 0xFF02FD) {
stopp();
}
}

float checkDistance() {
digitalWrite(12, LOW);
delayMicroseconds(2);
digitalWrite(12, HIGH);
delayMicroseconds(10);
digitalWrite(12, LOW);
float distance = pulseIn(13, HIGH) / 58.00;
delay(10);
return distance;
}

void handleObstacleAvoidance() {
DM = checkDistance();
if (DM < 20) {
stopp();
delay(1000);
detectObstacleDistance();
if (DL < 50 || DR < 50) {
if (DL > DR) {
myservo.write(90);
rotate_left();
delay(500);
forward();
} else {
myservo.write(90);
rotate_right();
delay(500);
forward();
}
} else {
if (random(1, 10) > 5) {
myservo.write(90);
rotate_left();
delay(500);
forward();
} else {
myservo.write(90);
rotate_right();
delay(500);
forward();
}
}
} else {
forward();
}
}

void detectObstacleDistance() {
myservo.write(160);
for (int i = 1; i <= 3; i++) {
DL = checkDistance();
delay(100);
}
myservo.write(20);
for (int i = 1; i <= 3; i++) {
DR = checkDistance();
delay(100);
}
}

void forward() {
digitalWrite(2, LOW);
analogWrite(5, 200);
digitalWrite(4, HIGH);
analogWrite(6, 200);
}

void backward() {
digitalWrite(2, HIGH);
analogWrite(5, 255);
digitalWrite(4, LOW);
analogWrite(6, 255);
}

void turn
ДК
Данила Кошелев
14 368
Лучший ответ
Nikolai Kuzmihev он обрезан
1+1=2
Дмитрий Сычев
Дмитрий Сычев
52 813