Доброго времени суток!
помогите разобратся новичку, идея очень простая, а вот с реализацией никак не выходит. суть идеи вот в чем : нужно запустить одновременно 3 двигателя сначало в одну сторону, затем задержка, потом в другую сторону и опять задержка. действие зациклено. но никак не получается настраивать действия двигателей независимо друг от друга, все получается последовательно. подскажите пожалуйста как создать функцию для второго и третьего двигателя но чтобы она выполнялась одновременно с первым?
вот пример того что я уже написал.
10 | pinMode (IN4, OUTPUT); |
11 | pinMode (IN3, OUTPUT); |
12 | pinMode (IN2, OUTPUT); |
13 | pinMode (IN1, OUTPUT); |
14 | pinMode (IN5, OUTPUT); |
15 | pinMode (IN6, OUTPUT); |
20 | digitalWrite (IN1, HIGH); |
21 | digitalWrite (IN2, LOW); |
23 | digitalWrite (IN1, LOW); |
25 | digitalWrite (IN2, HIGH); |
26 | digitalWrite (IN1, LOW); |
28 | digitalWrite (IN1, LOW); |
32 | digitalWrite (IN3, HIGH); |
33 | digitalWrite (IN4, LOW); |
35 | digitalWrite (IN3, LOW); |
37 | digitalWrite (IN4, HIGH); |
38 | digitalWrite (IN3, LOW); |
40 | digitalWrite (IN3, LOW); |
01
digitalWrite (IN1, HIGH);
02
digitalWrite (IN2, LOW);
03
digitalWrite (IN3, HIGH);
04
digitalWrite (IN4, LOW);
05
digitalWrite (IN5, HIGH);
06
digitalWrite (IN6, LOW);
07
delay(40000);
08
digitalWrite (IN1, LOW);
09
digitalWrite (IN3, LOW);
10
digitalWrite (IN5, LOW);
11
delay(5000);
12
digitalWrite (IN1, LOW);
13
digitalWrite (IN2, HIGH);
14
digitalWrite (IN3, LOW);
15
digitalWrite (IN4, HIGH);
16
digitalWrite (IN5, LOW);
17
digitalWrite (IN6, HIGH);
18
delay(40000);
19
digitalWrite (IN2, LOW);
20
digitalWrite (IN4, LOW);
21
digitalWrite (IN6, LOW);
22
delay(5000);
А лучше от делаев уходить
вы наверное меня не так поняли. мне нужно сделать так чтобы все три двигателя работали одновременно но задержку и работу для каждого двигателя можно было настраивать отдельно и независимо то других.
тогда избавляйтесь от delay иначе никак
тогда подскажите пожалуйста как это можно осуществить.
Начните с простого, вставьте вот эти дефайны в самое начало.
Это сильно добавит коду "читабельности" (нам и вам), сильно поможет логическому мышлению и в будущем сократит размер кода.
Как использовать- вроде должно быть понятно: M1_CV; M1_CCV; M1_STOP;
01
#define IN3 5
02
#define IN4 4
03
#define IN1 2
04
#define IN2 3
05
#define IN5 6
06
#define IN6 7
07
08
#define M1_CV digitalWrite (IN1, HIGH); digitalWrite (IN2, LOW)
09
#define M1_CCV digitalWrite (IN1, LOW); digitalWrite (IN2, HIGH)
10
#define M1_STOP digitalWrite (IN1, LOW); digitalWrite (IN2, LOW)
11
12
#define M2_CV digitalWrite (IN3, HIGH); digitalWrite (IN4, LOW)
13
#define M2_CCV digitalWrite (IN3, LOW); digitalWrite (IN4, HIGH)
14
#define M2_STOP digitalWrite (IN3, LOW); digitalWrite (IN4, LOW)
15
16
#define M3_CV digitalWrite (IN5, HIGH); digitalWrite (IN6, LOW)
17
#define M3_CCV digitalWrite (IN5, LOW); digitalWrite (IN6, HIGH)
18
#define M3_STOP digitalWrite (IN5, LOW); digitalWrite (IN6, LOW)
вы наверное меня не так поняли. мне нужно сделать так чтобы все три двигателя работали одновременно
Не думали ли Вы использовать такого рода управление-задержку?
//######
#define IN1 2
#define IN2 3
#define IN4 4
#define IN3 5
#define IN5 6
#define IN6 7
// unsigned long previousMillis(n++) = 0;
// unsigned int interval(n) = N++;
void
setup
();
{
pinMode (1, OUTPUT);
pinMode (2, OUTPUT);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
void
loop
();
{
unsigned
long
currentMillis = millis();
if
(currentMillis - previousMillis > interval(n++)) {
previousMillis = currentMillis;
/// digitalWrite((n), LOW);
}
}
но задержку и работу для каждого двигателя можно было настраивать отдельно и независимо то других.
Тогда наверное стоит их всех по отдельности занести в плавающею и дергать как вам угодно.
З.Ы. Я сам как бы не очень в программировании, но думаю раздать всем задержку и дергать нитки будет проще?