Код ардуино и движок сд ром.
- Войдите на сайт для отправки комментариев
Вс, 12/02/2017 - 12:01
Здравствуйте! Мне нужно сделать так что бы я регулировал скорость асинхронного моторчика с помощью переменного резистора.
Вот код:
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); | |
} | |
} |
С этим кодом моторчик крутися без моего участия.
Вставьте код по правилам форума
Как? Всё ведь нормально.
Ну тогда проверьте 38 и 67 строки.
Ну тогда проверьте 38 и 67 строки.
Да не может он крутиться с этой блудью в 73 строке
Ну тогда проверьте 38 и 67 строки.
Да не может он крутиться с этой блудью в 73 строке
Не исключено.
Крутится я ведь проверил
Крутится я ведь проверял подключал
Крутится я ведь проверял подключал
Это морок, наваждение, вам показалось
Нет конечно. Что же вы обманываете?
Но ведь 73 строка это ему прямо запрещает. Клапауций явно недоработал.
Я не знаю крутится ведь! (
Вы это, аккуратней, от такого неуважительного моторчика что угодно можно ожидать. Ему запрещают, а он крутится. Не порядок.
Эээх! Нигде ни на одном форуме мне нормально не ответили!
Если вы код вставляли одинаково, то никто и не поможет. Представьте себе справочник толщиной сантиметров 10 без нумерованных страниц. Как вы скажете собеседнику, где искать требуемую информацию?
Как? Всё ведь нормально.
Так : http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Эээх! Нигде ни на одном форуме мне нормально не ответили!
Видать, дело не в форумах, а в чем-то (или ком-то) другом.
Эээх! Нигде ни на одном форуме мне нормально не ответили!
я запретил.
В глобальных переменных добавьте
В функции делея
(в самом начале, до условий)
И где-нибудь в цикле читайте резистор, типа как-нибудь
Это наиболее быстрый код с минимумом арифметики, будет замедлять двигатель в 1-255 раз. Более приемлемый код, замедляющий скажем в 0-5 раз, отличается типом slow, там будет float а не byte, но 328 считать нецелые числа не торопится. И там будет не сдвинутое на два значение АЦП, преобразованное в байт а что-нибудь типа
Напомнило чёт:
- Резиновый утёнок?
- Это его шофёрские позывные. Он не будет отвечать, пока не обратитесь нормально.
- Попробуйте вы, сэр.
- Общий вызов, общий вызов. Говорит медведь Лайл, вызываю Резинового утёнка, я над тобой, сукин сын, отзовись.
(Конвой, 1978)
Спасибо!