gigileni:
... Elektroniker für Antriebstechnik und ich brauche Hilfe (Absoluter Neuling) ...
Moin!
Als deutsches Nordlicht sind mir alpenländische Spezialvokabeln leider fremd, Urlaube in Füssen und Kärnten waren sprachlich immer eine Herausforderung. Das Schwimmenlernen in einem kalten Gebirgssee allerdings auch. Aber ich habe es überstanden 
Zu Spannung, Strom und dem Anschluß von Motoren an eine H-Brücke schreibe ich jetzt mal nichts, das solltest Du wissen. Deine Fragen richten sich auf die Software, richtig?
Ich verwende zum Testen - erstmal nur - einen DC-Motor aus meiner Grabbelkiste und eine H-Brücke L298N, die ich wie bei Motoren mit H-Brücke L298N ansteuern anschließe. Den Jumper ENA ziehe ich ab und verbinde den Pin mit meinem UNO.
Um Dir den Einstieg zu erleichtern, schlage ich Dir die MobaTools als Unterstützung vor. Der Autor dieser Programmbibliothek ist hier im Forum aktiv. Er hat allerdings DC-Motoren "vergessen", weshalb ich stattdessen MoToSoftLed zum sanften Beschleunigen verwende. Ein erweiterter Testsketch für einen Motor, getestet mit UNO:
#include <MobaTools.h>
/* Demo: weiches Auf/Abblenden einer LED
Mit der Klasse SoftLed lässt sich eine Led 'weich' ein- und ausschalten
Die Led muss nicht an einem PWM-fähigen Pin angeschlossen sein, es funktioniert
mit jedem Digital-Pin.
SoftLed.attach( byte Pinnr );// Anschlußpin für die Led festlegen
SoftLed.riseTime( int zeit );// Zeit für auf/abblenden in ms
SoftLed.on(); // 'weich' einschalten
SoftLed.off(); // 'weich' ausschalten
*//*
Erweiterung für einen DC-Motor an H-Brücke L298N
Der Motor sollte Hin- und Herdrehen, jeweils mit Beschleunigungs- und Verzögerungsrampe.
*/
const byte ENAPin = 5; // beliebiger Digital Pin für PWM zum Beschleunigen und Verzögern
const byte IN1Pin = 6; // Richtung H-Brücke
const byte IN2Pin = 7; // Richtung H-Brücke
MoToSoftLed Motor1;
void setup() {
pinMode(IN1Pin, OUTPUT);
pinMode(IN2Pin, OUTPUT);
Motor1.attach(ENAPin);
Motor1.riseTime( 900 ); // Beschleunigungszeit in ms
digitalWrite(IN1Pin, HIGH);
}
void loop() {
Motor1.on();
delay(1000);
Motor1.off();
delay(1000);
digitalWrite(IN1Pin, !digitalRead(IN1Pin));
digitalWrite(IN2Pin, !digitalRead(IN2Pin));
}
Oder für zwei Motoren:
#include <MobaTools.h>
// Motor A
const byte ENAPin = 5; // beliebiger Digital Pin für PWM zum Beschleunigen
const byte IN1Pin = 6; // Richtung H-Brücke
const byte IN2Pin = 7; // Richtung H-Brücke
// Motor B
const byte ENBPin = 8; // beliebiger Digital Pin für PWM zum Beschleunigen
const byte IN3Pin = 9; // Richtung H-Brücke
const byte IN4Pin = 10; // Richtung H-Brücke
MoToSoftLed MotorA;
MoToSoftLed MotorB;
void setup() {
pinMode(IN1Pin, OUTPUT);
pinMode(IN2Pin, OUTPUT);
MotorA.attach(ENAPin);
MotorA.riseTime( 900 ); // Beschleunigungszeit in ms
pinMode(IN3Pin, OUTPUT);
pinMode(IN4Pin, OUTPUT);
MotorB.attach(ENBPin);
MotorB.riseTime( 900 ); // Beschleunigungszeit in ms
digitalWrite(IN1Pin, HIGH);
digitalWrite(IN3Pin, HIGH);
}
void loop() {
MotorA.on();
delay(1000);
MotorA.off();
delay(1000);
digitalWrite(IN1Pin, !digitalRead(IN1Pin));
digitalWrite(IN2Pin, !digitalRead(IN2Pin));
MotorB.on();
delay(1000);
MotorB.off();
delay(1000);
digitalWrite(IN3Pin, !digitalRead(IN3Pin));
digitalWrite(IN4Pin, !digitalRead(IN4Pin));
}
Funktioniert das bei Dir?