Код ардуино и движок сд ром.
- Войдите на сайт для отправки комментариев
Вс, 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)
Спасибо!