Arduino не правильно реагирует на программу

Тема в разделе "Arduino & Shields", создана пользователем AlexG999, 21 ноя 2018.

  1. AlexG999

    AlexG999 Нуб

    Привет!
    Описание проекта: двух колесная машинка под руководством Arduino UNO и драйвера L298N (mini) должна управляться с джойстика PS2
    Проблема в том, что заливаю программу на Arduino UNO, но она не работает как нужно...

    Таких машинок пять, три работают, а две не хотят работать (скетч для всех один и тот же).
    Ардуинки китайские.

    Проверяю программу на оригинальных - не работают...

    Помогите решить проблему..
    Код (C++):

    #include <PS2X_lib.h>  //for v1.6
    PS2X ps2x;
    int PS2 = 0;
    const int in1 = 5;    // direction pin 1
    const int in2 = 4;    // direction pin 2
    const int ena = 6;    // PWM pin to change speed
    const int in3 = 3;    // direction pin 1
    const int in4 = 2;    // direction pin 2
    const int enb = 1;    // PWM pin to change speed
    int fspeed;           // forward speed
    void setup(){
      PS2 = ps2x.config_gamepad(13,11,8,12, true, true);   //(clock, command, attention, data, true, true)
      pinMode(in1, OUTPUT);      // connection to L298n
      pinMode(in2, OUTPUT);      // connection to L298n
      pinMode(ena, OUTPUT);      // connection to L298n
      pinMode(in3, OUTPUT);      // connection to L298n
      pinMode(in4, OUTPUT);      // connection to L298n
      pinMode(enb, OUTPUT);      // connection to L298n
    }
    void loop(){
      ps2x.read_gamepad();
       
      digitalWrite(1, LOW);
      if (ps2x.Analog(PSS_LY) == 128) analogWrite(ena, 0);
      if (ps2x.Analog(PSS_LY) == 128) analogWrite(enb, 0);

      if (ps2x.Analog(PSS_LY) > 128){
        fspeed = map(ps2x.Analog(PSS_LY), 129, 255, 0, 255);
        digitalWrite(in1, LOW);
        digitalWrite(in2, HIGH);
        analogWrite(ena, fspeed);
     
        digitalWrite(in3, LOW);
        digitalWrite(in4, HIGH);
        analogWrite(enb, fspeed);
     
      }
      if (ps2x.Analog(PSS_LY) < 128){
        fspeed = map(ps2x.Analog(PSS_LY), 0, 127, 255, 0);
        digitalWrite(in1, HIGH);
        digitalWrite(in2, LOW);
        analogWrite(ena, fspeed);
     
        digitalWrite(in3, HIGH);
        digitalWrite(in4, LOW);
        analogWrite(enb, fspeed);

      }
     
       if (ps2x.Analog(PSS_LX) > 128){
        fspeed = map(ps2x.Analog(PSS_LX), 129, 255, 0, 255);
        digitalWrite(in1, HIGH);
        digitalWrite(in2, LOW);
        analogWrite(enb, fspeed);
         
      }
     
      if (ps2x.Analog(PSS_LX) < 128){
        fspeed = map(ps2x.Analog(PSS_LX), 0, 127, 255, 0);

     
        digitalWrite(in3, LOW);
        digitalWrite(in4, HIGH);
        analogWrite(ena, fspeed);
     
      }
    delay(50);

    }
     
    Последнее редактирование: 21 ноя 2018
  2. DetSimen

    DetSimen Guest

    пока код правильно не вставишь, никто его и смотреть не будет
     
  3. fogary

    fogary Гик

    Код (C++):
    digitalWrite(1, LOW);
    Действительно "1" или должно быть "in1"?

    Код (C++):
    if (ps2x.Analog(PSS_LY) == 128) analogWrite(ena, 0);
    if (ps2x.Analog(PSS_LY) == 128) analogWrite(enb, 0);
    Зачем две проверки, составной оператор не катит?

    Код (C++):
    PS2 = ps2x.config_gamepad(13,11,8,12, true, true);
    Переменная "PS2" зачем? Нигде дальше она не используется.
     
  4. AlexG999

    AlexG999 Нуб

     
    Последнее редактирование: 21 ноя 2018
  5. b707

    b707 Гуру

    так не бывает. Если программа и правда одна и та же (вы ее не правили "совсем чуть-чуть" для каждой машинки - например номера пинов?).
    Так вот, если код программы во всех машинках АБСОЛЮТНО ОДИНАКОВЫЙ, то и работать она будет ОДИНАКОВО. Ищите проблемы в железе, проверяйте все подключения. Небось где-то одели провод не на тот контакт или что-то подобное
     
  6. parovoZZ

    parovoZZ Гуру

    если МК не отрабатывает программу - МК в помойку.
    Но я более чем уверен, что программа работает именно так, как написана.
     
  7. DetSimen

    DetSimen Guest

    Да. А если программа отрабатывает как написана, но не так, как думает программист - программиста в помойку.
     
    parovoZZ нравится это.
  8. ИгорьК

    ИгорьК Гуру

    ... я от названия темы в восторге.
     
    Daniil нравится это.
  9. parovoZZ

    parovoZZ Гуру

    абдуринщики...они такие
     
  10. AlexG999

    AlexG999 Нуб

    Все, решил проблему.... обновил платы в программе, заработало. Спасибо