Код ардуино и движок сд ром.

Hodar
Offline
Зарегистрирован: 12.02.2017

Здравствуйте! Мне нужно сделать так что бы я регулировал скорость асинхронного моторчика с помощью переменного резистора. 

Вот код:

int phase1 = 2;
  int phase2 = 3;
  int phase3 = 4;
  int led = 12;
   
  unsigned long stepLength = 30000;
  int minStepLength = 600;
  int steps =5 ;
   
  void setup() {
  pinMode(led, OUTPUT);
  pinMode(phase1, OUTPUT);
  pinMode(phase2, OUTPUT);
  pinMode(phase3, OUTPUT);
  digitalWrite(led, LOW);
  }
   
  void loop() {
  switchStep(1);
  switchStep(2);
  switchStep(3);
   
  if(stepLength > minStepLength)
  {
  stepLength = stepLength - steps;
  } else {
  // set the minimum pulse length
  stepLength=minStepLength;
  }
   
  if (stepLength < 39950) {
  digitalWrite(led, HIGH); // second gear
  steps = 500;
  }
   
  if (stepLength < 20000) {
  digitalWrite(led, LOW); // third gear
  steps = 50;
  }
   
  if (stepLength < 2000) {
  digitalWrite(led, HIGH); // fourth gear
  steps = 1;
  }
  }
   
   
  void switchStep(int stage)
  {
  switch(stage)
  {
  case 1:
  digitalWrite(phase1, HIGH);
  digitalWrite(phase2, LOW);
  digitalWrite(phase3, LOW);
  myDelay(stepLength);
  break;
   
  case 2:
  digitalWrite(phase1, LOW);
  digitalWrite(phase2, HIGH);
  digitalWrite(phase3, LOW);
  myDelay(stepLength);
  break;
   
  default:
  digitalWrite(phase1, LOW);
  digitalWrite(phase2, LOW);
  digitalWrite(phase3, HIGH);
  myDelay(stepLength);
  break;
  }
   
   
  }
   
  void myDelay(unsigned long p) {
  if (p > 16380) {
  delay (p/1000);
  } else {
  delayMicroseconds(p);
  }
  }

С этим кодом моторчик крутися без моего участия.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Вставьте код по правилам форума

Hodar
Offline
Зарегистрирован: 12.02.2017

Как? Всё ведь нормально.

bwn
Offline
Зарегистрирован: 25.08.2014

Ну тогда проверьте 38 и 67 строки.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

bwn пишет:

Ну тогда проверьте 38 и 67 строки.

Да не может он крутиться с этой блудью в 73 строке

bwn
Offline
Зарегистрирован: 25.08.2014

ua6em пишет:

bwn пишет:

Ну тогда проверьте 38 и 67 строки.

Да не может он крутиться с этой блудью в 73 строке

Не исключено.

Hodar
Offline
Зарегистрирован: 12.02.2017

Крутится я ведь проверил

 

Hodar
Offline
Зарегистрирован: 12.02.2017

Крутится я ведь проверял подключал

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Hodar пишет:

Крутится я ведь проверял подключал

Это морок, наваждение, вам показалось

Hodar
Offline
Зарегистрирован: 12.02.2017

Нет конечно. Что же вы обманываете?

bwn
Offline
Зарегистрирован: 25.08.2014

Но ведь 73 строка это ему прямо запрещает. Клапауций явно недоработал.

Hodar
Offline
Зарегистрирован: 12.02.2017

Я не знаю крутится ведь! (

bwn
Offline
Зарегистрирован: 25.08.2014

Вы это, аккуратней, от такого неуважительного моторчика что угодно можно ожидать. Ему запрещают, а он крутится. Не порядок.

Hodar
Offline
Зарегистрирован: 12.02.2017

Эээх! Нигде ни на одном форуме мне нормально не ответили!

bwn
Offline
Зарегистрирован: 25.08.2014

Если вы код вставляли одинаково, то никто и не поможет. Представьте себе справочник толщиной сантиметров 10 без нумерованных страниц. Как вы скажете собеседнику, где искать требуемую информацию?

Araris
Offline
Зарегистрирован: 09.11.2012

Hodar пишет:

Как? Всё ведь нормально.

Так : http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Hodar пишет:

Эээх! Нигде ни на одном форуме мне нормально не ответили!

Видать, дело не в форумах, а в чем-то (или ком-то) другом.

Клапауций 823
Клапауций 823 аватар
Offline
Зарегистрирован: 13.01.2017

Hodar пишет:

Эээх! Нигде ни на одном форуме мне нормально не ответили!

я запретил.

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

В глобальных переменных добавьте

byte slow=1;

В функции делея

p*=slow;

(в самом начале, до условий)

И где-нибудь в цикле читайте резистор, типа как-нибудь

slow=(byte)analogRead(A1)>>2;
if(slow==0) slow=1;

Это наиболее быстрый код с минимумом арифметики, будет замедлять двигатель в 1-255 раз. Более приемлемый код, замедляющий скажем в 0-5 раз, отличается типом slow, там будет float а не byte, но 328 считать нецелые числа не торопится. И там будет не сдвинутое на два значение АЦП, преобразованное в байт а что-нибудь типа

slow=map(analogRead(A1),0,1023,0.0,4.0)+1;

Напомнило чёт:

- Резиновый утёнок?

- Это его шофёрские позывные. Он не будет отвечать, пока не обратитесь нормально.

- Попробуйте вы, сэр.

- Общий вызов, общий вызов. Говорит медведь Лайл, вызываю Резинового утёнка, я над тобой, сукин сын, отзовись.

(Конвой, 1978)

Hodar
Offline
Зарегистрирован: 12.02.2017

Спасибо!