Помогите объединить два скетча

Тема в разделе "Arduino & Shields", создана пользователем 6oTuHoK, 3 авг 2016.

  1. 6oTuHoK

    6oTuHoK Нуб

    По отдельности скетчи работают корректно а вот когда пытаюсь объединить работает только сервопривод.
    Собираю пульт на базе 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);
    }
     
     
  2. Alex19

    Alex19 Гуру

    Покажите объединенный скетч.

    Первое, что бросается в глаза конфликт Servo и ШИМ на 10 пине.
    Все, что Вам нужно это просто объединить данные скетчи и заменить в первом.
    Код (C++):
    int enA =10;
    на свободный ШИМ, к примеру 3 (судя по коду, он не занят).
    Код (C++):
    int enA =3;
     
    Последнее редактирование: 3 авг 2016
    6oTuHoK нравится это.
  3. 6oTuHoK

    6oTuHoK Нуб

    Спасибо помогло!!!!!
     
  4. Alex19

    Alex19 Гуру

    Не за что, тут все помогаю по мере сил (время, знания, все мы учимся).
    Удачи!