По отдельности скетчи работают корректно а вот когда пытаюсь объединить работает только сервопривод. Собираю пульт на базе Arduino UNO, l298n, джойстика он управляет двигателями и потенциометра управляет сервой. Сразу скажу скетчи не сам писал. Первый скетч автор Allex_1981 управление двигателями. Код (C++): constint Y_PIN = A5; // Потенциометр оси Y подключен к аналоговому входу 5 constint X_PIN = A4; // Потенциометр оси X подключен к аналоговому входу 4 // Первый двигатель int enA =10; int in1 =9; int in2 =8; // второй двигатель int enB =5; int in3 =7; int in4 =6; void setup() { Serial.begin(9600);// Скорость работы с монитором порта pinMode(enA, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(enB, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); } void loop() { int yVal = analogRead(Y_PIN);// Задаем переменную yVal для считывания показаний аналогового значения int xVal = analogRead(X_PIN); int xValue = map(xVal, 0, 900, 0, 504); int yValue = map(yVal, 0, 900, 0, 504); //Управляем первым двигателем if(xValue <235){ digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(enA, 235-xValue); }; if(xValue <255&& xValue >235){ analogWrite(enA, 0); }; if(xValue >255){ digitalWrite(in2, HIGH); digitalWrite(in1, LOW); analogWrite(enA, xValue-255); }; //Управляем вторым двигателем if(yValue <235){ digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enB, 235-yValue); }; if(yValue <255&& yValue >235){ analogWrite(enB, 0); }; if(yValue >255){ digitalWrite(in4, HIGH); digitalWrite(in3, LOW); analogWrite(enB, yValue-255); }; } Второй на сервопривод. Код (C++): #include <Servo.h> int potPin = 0; int servoPin = 11; Servo servo; void setup() { servo.attach(servoPin); } void loop() { int reading = analogRead(potPin); // от 0 до 1023 int angle = reading / 6; // от 0 до 180 servo.write(angle); }
Покажите объединенный скетч. Первое, что бросается в глаза конфликт Servo и ШИМ на 10 пине. Все, что Вам нужно это просто объединить данные скетчи и заменить в первом. Код (C++): int enA =10; на свободный ШИМ, к примеру 3 (судя по коду, он не занят). Код (C++): int enA =3;