Du suchst nach
- einer Schrittkette
- einer Zeitverzögerung
Ungetesteter Vorschlag:
const float Abschaltung = 0.5;
void setup()
{
Serial.begin(9600);
pinMode(6, OUTPUT); // Pin schaltet ein L298N Board mit DC Motor
pinMode(4, INPUT); // Enschalter, startet den Motor
}
void loop()
{
uint32_t jetzt = millis();
static uint32_t vorhin = jetzt;
const uint32_t intervall = 100;
static int pwmWert = 0;
static byte schritt = 0;
switch (schritt)
{
case 0:
if (digitalRead(4) == LOW) { // Taster wurde betätigt, Motor startet
schritt++;
}
break;
case 1:
int Shuntwert = analogRead(A0);
float Spannung = Shuntwert * (5.0 / 1023.0);
if (Spannung > Abschaltung) {
Serial.println("drehmoment zu hoch");
digitalWrite(6, LOW); // Schaltet den Motor ab
schritt++;
} else {
if ( (pwmWert < 255) && (jetzt - vorhin >= intervall) )
{
vorhin = jetzt;
pwmWert++;
analogWrite(6, pwmWert);
}
}
break;
case 2:
break;
}
}