Ардуино+l398n+джойстик+потенциометр

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем Alimedia, 21 сен 2021.

Метки:
?

Помогите по скетчу

  1. 2

    0 голосов
    0,0%
  2. 3

    0 голосов
    0,0%
Можно выбрать сразу несколько вариантов.
  1. Alimedia

    Alimedia Нуб

    Дорогие програмисти помогите по скетчу уменя есть готовый скетч к нему нода добавит дополнително потенциометр чтобы фиксировать оборотни мотора
     
  2. Alimedia

    Alimedia Нуб

    Код (C++):
    int enA = 9, in1 = 4, in2 = 5;
    int enB = 10, in3 = 6, in4 = 7;
    int xValue, yValue;
    void setup() {
      pinMode(enA, OUTPUT);
      pinMode(enB, OUTPUT);
      pinMode(in1, OUTPUT);
      pinMode(in2, OUTPUT);
      pinMode(in3, OUTPUT);
      pinMode(in4, OUTPUT);
      Serial.begin(9600);
    }
    void loop() {
      xValue = map(analogRead(A0), 0, 1024, -255, 255);
      yValue = map(analogRead(A1), 0, 1024, -255, 255);
      Serial.print(xValue);
      Serial.print("\t");
      Serial.print(yValue);
      Serial.print("\t");
      if (xValue >= -10 && xValue <= 10) {
        digitalWrite(in1, LOW);
        digitalWrite(in2, LOW);
        Serial.print("X stop\t");
      }
      if (xValue > 11) {
        digitalWrite(in1, HIGH);
        digitalWrite(in2, LOW);
        analogWrite(enA, xValue);
        Serial.print("X up\t");
      }
      if (xValue < -11) {
        digitalWrite(in1, LOW);
        digitalWrite(in2, HIGH);
        analogWrite(enA, -xValue);
        Serial.print("X down\t");
      }
      if (yValue >= -10 && yValue <= 10) {
        digitalWrite(in3, LOW);
        digitalWrite(in4, LOW);
        Serial.print("Y stop\t");
      }
      if (yValue > 11) {
        digitalWrite(in3, HIGH);
        digitalWrite(in4, LOW);
        analogWrite(enB, yValue);
        Serial.print("Y up\t");
      }
      if (yValue < -11) {
        digitalWrite(in3, LOW);
        digitalWrite(in4, HIGH);
        analogWrite(enB, -yValue);
        Serial.print("Y down\t");
      }
      Serial.println("");
    }
     

    Вложения:

    Последнее редактирование модератором: 22 сен 2021
  3. SergeiL

    SergeiL Оракул Модератор

    Где схема?
    По первому посту не понятно, что и как работает, что нужно.
     
  4. Alimedia

    Alimedia Нуб

  5. Alimedia

    Alimedia Нуб

    Вот схема дорогой друг
     
  6. Alimedia

    Alimedia Нуб

    Код (C++):
    int enA = 9, in1 = 4, in2 = 5;
    int enB = 10, in3 = 6, in4 = 7;
    int xValue, yValue;
    void setup() {
    pinMode(enA, OUTPUT);
    pinMode(enB, OUTPUT);
    pinMode(in1, OUTPUT);
    pinMode(in2, OUTPUT);
    pinMode(in3, OUTPUT);
    pinMode(in4, OUTPUT);
    Serial.begin(9600); }
    void loop() {
    xValue = map(analogRead(A0), 0, 1024, -255, 255);
    yValue = map(analogRead(A1), 0, 1024, -255, 255);
    Serial.print(xValue);
    Serial.print("\t");
    Serial.print(yValue);
    Serial.print("\t");
    if (xValue >= -10 && xValue <= 10) {
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    Serial.print("X stop\t");}
    if (xValue > 11) {
    digitalWrite(in1, HIGH);
    digitalWrite(in2, LOW);
    analogWrite(enA, xValue);
    Serial.print("X up\t"); }
    if (xValue < -11) {
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    analogWrite(enA, -xValue);
    Serial.print("X down\t");}
    if (yValue >= -10 && yValue <= 10) {
    digitalWrite(in3, LOW);
    digitalWrite(in4, LOW);
    Serial.print("Y stop\t"); }
    if (yValue > 11) {
    digitalWrite(in3, HIGH);
    digitalWrite(in4, LOW);
    analogWrite(enB, yValue);
    Serial.print("Y up\t"); }
    if (yValue < -11) {
    digitalWrite(in3, LOW);
    digitalWrite(in4, HIGH);
    analogWrite(enB, -yValue);
    Serial.print("Y down\t");
    }
    Serial.println("");
    }
     
     
  7. Alimedia

    Alimedia Нуб

    Вот скетч к нему надо добавить потенциометр чтоби фиксироват оборотни мотора. Это схема для управлений головки операторский крана
     
  8. Alimedia

    Alimedia Нуб

    Я сам не разбираюсь по скетчу но этот скетч я брал из нета он работает но не могу как добавить потонциометр помогите пожалуйста кто может
     
  9. Un_ka

    Un_ka Гуру

    Для обратной связи понадобятся датчики оборотов.
     
    Airbus нравится это.
  10. SergeiL

    SergeiL Оракул Модератор

    Так а потенциометр то для чего?
    Просто регулировать скорость от минимума до максимума?
     
  11. Рокки1945

    Рокки1945 Гуру

    хороший канал - хау то мехатроникс
    ну конечно же это из канала
     
  12. Airbus

    Airbus Радиохулиган Модератор

    Он и сам не знает для чего. Видимо думает что насадив на вал и вращая с двигателем можно оперделять скорость/количество оборотов.
     
  13. SergeiL

    SergeiL Оракул Модератор

    Я так понял, что ему нужна ручка для изменения чувствительности джойстика.
    Чтобы при максимальном перемещении джойстика, скорость моторов можно было выставить потенциометром.
     
  14. Airbus

    Airbus Радиохулиган Модератор

     
  15. Рокки1945

    Рокки1945 Гуру

    да нет просто джой заменить вот и все - у него принцип потенциометрический - у этих джоев - тама 2 потенциометра
     
  16. Alimedia

    Alimedia Нуб

    Да точно угодал
     
  17. SergeiL

    SergeiL Оракул Модератор

    Тогда подключаем потенциометр на A2 ( GND - A2 - 5В )
    Код ниже, только обязательно отписаться как будет работать, я его не проверял - интересно просто:

    Код (C++):
    int enA = 9, in1 = 4, in2 = 5;
    int enB = 10, in3 = 6, in4 = 7;

    int xValue, yValue, pValue;
    void setup() {
      pinMode(enA, OUTPUT);
      pinMode(enB, OUTPUT);
      pinMode(in1, OUTPUT);
      pinMode(in2, OUTPUT);
      pinMode(in3, OUTPUT);
      pinMode(in4, OUTPUT);
      Serial.begin(9600);
    }
    void loop() {

      pValue = map(analogRead(A2), 0, 1023, 0, 100);
      xValue = map(analogRead(A0), 0, 1023, -255, 255);
      yValue = map(analogRead(A1), 0, 1023, -255, 255);

      xValue =  xValue *  pValue / 100;
      yValue =  yValue *  pValue / 100;

      Serial.print(xValue);
      Serial.print("\t");
      Serial.print(yValue);
      Serial.print("\t");
      if (xValue >= -10 && xValue <= 10) {
        digitalWrite(in1, LOW);
        digitalWrite(in2, LOW);
        Serial.print("X stop\t");
      }
      if (xValue > 11) {
        digitalWrite(in1, HIGH);
        digitalWrite(in2, LOW);
        analogWrite(enA, xValue);
        Serial.print("X up\t");
      }
      if (xValue < -11) {
        digitalWrite(in1, LOW);
        digitalWrite(in2, HIGH);
        analogWrite(enA, -xValue);
        Serial.print("X down\t");
      }
      if (yValue >= -10 && yValue <= 10) {
        digitalWrite(in3, LOW);
        digitalWrite(in4, LOW);
        Serial.print("Y stop\t");
      }
      if (yValue > 11) {
        digitalWrite(in3, HIGH);
        digitalWrite(in4, LOW);
        analogWrite(enB, yValue);
        Serial.print("Y up\t");
      }
      if (yValue < -11) {
        digitalWrite(in3, LOW);
        digitalWrite(in4, HIGH);
        analogWrite(enB, -yValue);
        Serial.print("Y down\t");
      }
      Serial.println("");
    }
     
  18. Alimedia

    Alimedia Нуб

    Да заработало но вправо уменьшается влево увеличивается потонциометр
     
  19. Alimedia

    Alimedia Нуб

    В сёравно спасибо помог
     
  20. Alimedia

    Alimedia Нуб

    Я добавил ещё потенциометр по каждой осси джойстику вот скетч