Не едут моторы.

int_long
Offline
Зарегистрирован: 30.01.2019
#define lAx 6
#define lDex 7
#define rAx 8
#define rDex 9

#define rPwr 5
#define lPwr 3

byte i;


void setup() {

  pinMode(lAx, OUTPUT);
  pinMode(lDex, OUTPUT);
  pinMode(rAx, OUTPUT);
  pinMode(rDex, OUTPUT);
  pinMode(lPwr, OUTPUT);
  pinMode(rPwr, OUTPUT);

}

void loop() {

  digitalWrite(lDex, 0);
  digitalWrite(rDex, 0);
  digitalWrite(rAx, 1);
  digitalWrite(lAx, 1);
  
   for(i=0;i<120;i+10){

    analogWrite(lPwr, i);
    analogWrite(rPwr, i);
    delay(35);
    
   }

   digitalWrite(rAx, 0);
   digitalWrite(lAx, 0);
   digitalWrite(rDex, 1);
   digitalWrite(lDex, 1);

   for(i=i;i>0;i-10){

    analogWrite(lPwr, i);
    analogWrite(rPwr, i);
    delay(35);
    
   }

   delay(3000);
  
}

 

int_long
Offline
Зарегистрирован: 30.01.2019

Ребят, обьясните ещё, как писать при создании темы НЕ код, а простой текст, я не врубился как.

Вот суть проблемы:

 

Переменная i используется для задания скорости вращения; l(r)Ax — вращение вперёд, l(r)Dex, соответственно, назад;
lPwr и rPwr — пины управления скоростью вращения, которым через analogWrite задаётся значение i.
 
Вот проблема: если использовать переменную i вместо числа от 0 до 255 в операторе 
analogWrite, моторы просто не едут, а вот если написать
целое число — крутятся с укзазанной скоростью.Пробовал втыкать туда переменную 
один раз в setup — не сработало, реагирует только на число, но мне необходимы плавные разгон и торможение, так что
с числами не проканает.
 
Как это работает?!
Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

вы сначала разберитесь с циклом "for"

http://arduino.ru/Reference/For

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

int_long пишет:
реагирует только на число, но мне необходимы плавные разгон и торможение, так что с числами не проканает.

Почему не проканает? Пожалуйста:

analogWrite(lPwr, 0);
analogWrite(rPwr, 0);
delay(35);
analogWrite(lPwr, 10);
analogWrite(rPwr, 10);
delay(35);
analogWrite(lPwr, 20);
analogWrite(rPwr, 20);
delay(35);
analogWrite(lPwr, 30);
analogWrite(rPwr, 30);
delay(35);
analogWrite(lPwr, 40);
analogWrite(rPwr, 40);
delay(35);
analogWrite(lPwr, 50);
analogWrite(rPwr, 50);
delay(35);
analogWrite(lPwr, 60);
analogWrite(rPwr, 60);
delay(35);
analogWrite(lPwr, 70);
analogWrite(rPwr, 70);
delay(35);
analogWrite(lPwr, 80);
analogWrite(rPwr, 80);
delay(35);
analogWrite(lPwr, 90);
analogWrite(rPwr, 90);
delay(35);
analogWrite(lPwr, 100);
analogWrite(rPwr, 100);
delay(35);
analogWrite(lPwr, 110);
analogWrite(rPwr, 110);
delay(35);
analogWrite(lPwr, 120);
analogWrite(rPwr, 120);
delay(35);

int_long пишет:
Как это работает?!

Вам коллега уже ответил. Разберитесь, что именно у Вас написано в строках №№ 30 и 43, исправьте ошибки и, о чудо, всё заработает!

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

Так должно заработать

#define lAx 6
#define lDex 7
#define rAx 8
#define rDex 9

#define rPwr 5
#define lPwr 3

byte i;


void setup() {

  pinMode(lAx, OUTPUT);
  pinMode(lDex, OUTPUT);
  pinMode(rAx, OUTPUT);
  pinMode(rDex, OUTPUT);
  pinMode(lPwr, OUTPUT);
  pinMode(rPwr, OUTPUT);

}

void loop() {

  digitalWrite(lDex, 0);
  digitalWrite(rDex, 0);
  digitalWrite(rAx, 1);
  digitalWrite(lAx, 1);
  
   for(i=0;i<120;i+=10){

    analogWrite(lPwr, i);
    analogWrite(rPwr, i);
    delay(35);
    
   }

   digitalWrite(rAx, 0);
   digitalWrite(lAx, 0);
   digitalWrite(rDex, 1);
   digitalWrite(lDex, 1);

   for(;i>0;i-=10){

    analogWrite(lPwr, i);
    analogWrite(rPwr, i);
    delay(35);
    
   }

   delay(3000);
  
}