ja, es funktioniert so. Ich glaube ich habe auch deine Änderungen verstanden. Ich habe noch meine Verdrahtung ein Bischen aufgeräumt und auch die Verbindungen zwischen den Motorshields und dem Megaboard so gelegt, dass sie nicht kreuz & quer gehen. Man hat da schon recht viel Freiheiten bei de defines...
Habe den Code für 4 Motoren erweitert und vor- und zurück Umschalten:
Code:
//bridge S1
#define OUT1PIN_1 11 // H-bridge_1 OUT1.1
#define OUT1PIN_2 9 // H-bridge_1 OUT1.2
#define ENABLE_A1 10 // H-bridge_1 Enable A/1
#define OUT2PIN_3 8 // H-bridge_1 OUT2.3
#define OUT2PIN_4 7 // H-bridge_1 OUT2.4
#define ENABLE_B1 6 // H-bridge_1 Enable B/2
//bridge S2
#define OUT3PIN_1 4 // H-bridge_2 OUT1.1
#define OUT3PIN_2 3 // H-bridge_2 OUT1.2
#define ENABLE_A2 0 // H-bridge_2 Enable A/1
#define OUT4PIN_3 2 // H-bridge_2 OUT2.3
#define OUT4PIN_4 1 // H-bridge_2 OUT2.4
#define ENABLE_B2 5 // H-bridge_2 Enable B/2
void setup()
{
// setup Motor 1 pins
pinMode(OUT1PIN_1, OUTPUT);
pinMode(OUT1PIN_2, OUTPUT);
// setup Motor 2 pins
pinMode(OUT2PIN_3, OUTPUT);
pinMode(OUT2PIN_4, OUTPUT);
// setup Motor 3 pins
pinMode(OUT3PIN_1, OUTPUT);
pinMode(OUT3PIN_2, OUTPUT);
// setup Motor 4 pins
pinMode(OUT4PIN_3, OUTPUT);
pinMode(OUT4PIN_4, OUTPUT);
}
void loop()
{
//Motor_1 & 2 vorwärts
digitalWrite(OUT1PIN_1, LOW); // set leg 1 of the H-bridge_1 low
digitalWrite(OUT1PIN_2, HIGH); // set leg 2 of the H-bridge_1 high
digitalWrite(OUT2PIN_3, LOW); // set leg 3 of the H-bridge_1 low
digitalWrite(OUT2PIN_4, HIGH); // set leg 4 of the H-bridge_1 high
//Motor_3 & 4 vorwärts
digitalWrite(OUT3PIN_1, LOW); // set leg 1 of the H-bridge_2 low
digitalWrite(OUT3PIN_2, HIGH); // set leg 2 of the H-bridge_2 high
digitalWrite(OUT4PIN_3, LOW); // set leg 3 of the H-bridge_2 low
digitalWrite(OUT4PIN_4, HIGH); // set leg 4 of the H-bridge_2 high
Ramp(0,255,1,10);
//Motor_1 & 2 rückwärts
digitalWrite(OUT1PIN_1, HIGH); // set leg 1 of the H-bridge_1 low
digitalWrite(OUT1PIN_2, LOW); // set leg 2 of the H-bridge_1 high
digitalWrite(OUT2PIN_3, HIGH); // set leg 3 of the H-bridge_1 low
digitalWrite(OUT2PIN_4, LOW); // set leg 4 of the H-bridge_1 high
//Motor_3 & 4 rückwärts
digitalWrite(OUT3PIN_1, HIGH); // set leg 1 of the H-bridge_2 low
digitalWrite(OUT3PIN_2, LOW); // set leg 2 of the H-bridge_2 high
digitalWrite(OUT4PIN_3, HIGH); // set leg 3 of the H-bridge_2 low
digitalWrite(OUT4PIN_4, LOW); // set leg 4 of the H-bridge_2 high
Ramp(0,255,1,10);
}
void Ramp(int Start, int End, int Inc, int Del) //int Motor entfernt
{
/* Ramps from PWM of Start to End
adding Inc each time
delay of Del MS each time thru the loop
*/
for(int i=Start;i<End;i = i + Inc)
{
analogWrite(ENABLE_A1, i); // Motor 1 enable
analogWrite(ENABLE_B1, i); // Motor 2 enable
analogWrite(ENABLE_A2, i); // Motor 3 enable
analogWrite(ENABLE_B2, i); // Motor 4 enable
delay(Del);
}
}
thanks erstmal, werde nun weiter experimentieren...
Lesezeichen