Ik krijg het niet voor elkaar om 2 12V DC motoren onafhankelijk van elkaar aangestuurd te krijgen. Op de Arduino Uno is een L298P Motor Shield geplaatst.
De code in void setup() wordt helemaal naar behoren uitgevoerd; alle twee de motoren draaien eerst linksom, daarna rechtsom en daarna stoppen ze. Precies zoals de bedoeling is.
Als ik vervolgens in de loop een waarde 5 of een waarde 7 ingeef, gebeurt er helemaal niets. Ik kom wel netjes bij Case 5 & 7 uit (via Serial.println gecontroleerd) maar de M1 / E1 wordt niet doorgevoerd. Bij Case 6 & 8 wordt deze wel uitgevoerd, en ik kan momenteel dus maar 1 motor op die manier gebruiken. De gekozen pinnen lijken goed te zijn (void setup() verloopt naar behoren), en ik zie nergens een aanleiding waarom de code in de setup en de code in de loop anders zouden moeten functioneren.
Iemand suggesties??
In de void loop() is de volgende code opgenomen:
De code in void setup() wordt helemaal naar behoren uitgevoerd; alle twee de motoren draaien eerst linksom, daarna rechtsom en daarna stoppen ze. Precies zoals de bedoeling is.
Als ik vervolgens in de loop een waarde 5 of een waarde 7 ingeef, gebeurt er helemaal niets. Ik kom wel netjes bij Case 5 & 7 uit (via Serial.println gecontroleerd) maar de M1 / E1 wordt niet doorgevoerd. Bij Case 6 & 8 wordt deze wel uitgevoerd, en ik kan momenteel dus maar 1 motor op die manier gebruiken. De gekozen pinnen lijken goed te zijn (void setup() verloopt naar behoren), en ik zie nergens een aanleiding waarom de code in de setup en de code in de loop anders zouden moeten functioneren.
Iemand suggesties??
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| int E1 = 10;
int E2 = 11;
int M1 = 12;
int M2 = 13;
int var1; // which case? (Direction & motor selection)
int var2; // Speed
void setup()
{
pinMode(M1, OUTPUT); // Sets M1 as an output
pinMode(M2, OUTPUT); // Sets M2 as an output
{
int value;
for(value = 0 ; value <= 255; value+=5)
{
digitalWrite(M1,HIGH);
digitalWrite(M2, HIGH);
analogWrite(E2, value);
analogWrite(E1, value);
delay(30);
}
delay(1000);
}
{
int value;
for(value = 0 ; value <= 255; value+=5)
{
digitalWrite(M1,LOW);
digitalWrite(M2, LOW);
analogWrite(E2, value);
analogWrite(E1, value);
delay(30);
}
delay(1000);
digitalWrite(M1,LOW);
digitalWrite(M2, LOW);
analogWrite(E2, 0);
analogWrite(E1, 0);
delay(30);
}
} |
In de void loop() is de volgende code opgenomen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| switch (var1) {
case 5:
digitalWrite(M1, HIGH);
analogWrite(E1, var2);
break;
case 6:
digitalWrite(M2, HIGH);
analogWrite(E2, var2);
break;
case 7:
digitalWrite(M1, LOW);
analogWrite(E1, var2);
break;
case 8:
digitalWrite(M2, LOW);
analogWrite(E2, var2);
break;
} |