Warte Zeit im Program

Hallo,
Da ich neu in der Arduino-Welt bin (1 Woche Erfahrung), komme ich ihr, um um Hilfe zu bitten.
Ich habe vor, einen Arduino Nano zu verwenden, um ein Förderband zu steuern, das von einem einfachen Gleichstrommotor angetrieben wird, und zwei Sensoren, um die Position des Bandes zu uberwachen. Das elektrische und elektronische habe ich schon gemacht und funktioniert. Beim Program ist wo das Problem ist und ich Hilfe brauche. Die Idee ist, dass der Arduino den Motor über zwei Relais ansteuert um die Wechselrichtung zu haben. Die Sensoren sind dafur da um den Fordeband zu stoppen in der Rechten oder Linken Position. Was ich nicht inkriege mit dem Code ist dass der Motor nur nach eine gewiessen Wartezeit wieder in die Gegenrichtung anlauft. Wie mache ich das mit der Wartezeit in beiden Positionene. Ihm code sind schon Zeiten eingefugt als Kommentar. Haver diese machen nicht die Funktion die ich mochte.

Vielen Dank im Voraus

//////////////////////////////////////////////////////////
const int SENSOR1 = 2; //
const int SENSOR2 = 3; //
const int RELAY1  = 6; //
const int RELAY2  = 7; //
int SENSORstate1  = 0; //
int SENSORstate2  = 0; //

//////////////////////////////////////////////////////////

void setup() {
  
 pinMode(RELAY1,OUTPUT); pinMode(RELAY2,OUTPUT);
 pinMode(SENSOR1,INPUT); pinMode(SENSOR1,INPUT);
  
 }

//////////////////////////////////////////////////////////

void loop() {
  
  SENSORstate1 = digitalRead(SENSOR1);
  if (SENSORstate1 == HIGH){
   //delay(2000);
   digitalWrite(RELAY2,HIGH);
   digitalWrite(RELAY1,LOW);
   //delay(2000);
   } 
  
  
  SENSORstate2 = digitalRead(SENSOR2);
  if (SENSORstate2 == HIGH){
   //delay(2000);
   digitalWrite(RELAY2, LOW);
   digitalWrite(RELAY1,HIGH);
   //delay(2000);
  }
  
  }

Ich könnte dir meine TaskMacros anbieten.....

Ablaufsteuerung
Meine Standardantwort zu Ablaufsteuerungen:

Eine Stichworte Sammlung für Google Suchen:
Endlicher Automat,
ProtoThreads,
State Machine,
Multitasking,
Coroutinen,
Ablaufsteuerung,
Schrittkette,
BlinkWithoutDelay,

Automat (Informatik)
Blink Without Delay
Die Nachtwächter Erklärung

MicroBahner/MobaTools
Intervall Macro
Multitasking Macros
INTERVAL Ersatzstoff
CooperativeTask

Hallo,
nimm Deine Aufgabenstellung und zerlege diese nach dem EVA-Prinzip.
Eingabe: SchalterLinks und SchalterRechts, und vielleicht noch Tasten für die manuelle Steuerung?
Verabeitung: Zeitgeber, basierend auf dem IDE-Beispiel BLINKWITHOUTDELAY
Ausgabe: MotorLinks, MotorRechts und MotorStop, zb. void motor(int richtung);
Wie du hier schon siehst bekommt man durch diese einfache Auflistung eine Definition der benötigen Funktionen ausgekegelt. Diese Funktionen lassen sich über eine Kontrollstruktur, endlicher Automat, zur geplanten Gesamtfunktion zusammenlöten. :slight_smile:

Danke euch.... Bin schon ein Schritt weiter. Die Nachtwächter Erklärung , hat mir auch schon geholfen. Uber den Code nachgedacht und schon ein bisschen verhanderung gemacht. Jetzt habe ich die Wartezeit drinne bevor der Motor anlauft. Nur stop er nicht direkt wenn er den Sensor erreicht. Im setup habe ich auch digitalWrite(RELAY2,HIGH);
digitalWrite(RELAY1,LOW); reingemacht damit beim Start etwas anlauft. Ist nicht das beste, muss haber noch dran Arbeiten.

//////////////////////////////////////////////////////////
const int SENSOR1 = 2; //
const int SENSOR2 = 3; //
const int RELAY1  = 6; //
const int RELAY2  = 7; //
int SENSORstate1  = 0; //
int SENSORstate2  = 0; //

//////////////////////////////////////////////////////////

void setup() {
  
 pinMode(RELAY1,OUTPUT); 
 pinMode(RELAY2,OUTPUT);
 pinMode(SENSOR1,INPUT); 
 pinMode(SENSOR1,INPUT);
 digitalWrite(RELAY2,HIGH);
 digitalWrite(RELAY1,LOW);
  
 }

//////////////////////////////////////////////////////////

void loop() {
  
  SENSORstate1 = digitalRead(SENSOR1);
  if (SENSORstate1 == HIGH){
   digitalWrite(RELAY1,LOW);
    delay(6000);
   digitalWrite(RELAY2,HIGH);
   
   } 
  
  
  SENSORstate2 = digitalRead(SENSOR2);
  if (SENSORstate2 == HIGH){
   digitalWrite(RELAY2, LOW);
    delay(6000);
   digitalWrite(RELAY1,HIGH);

  }
  
  }

Was braucht der Motor an Spannung und wichtig ist auch der Strom??

Ich würde dafür einen Motortreiber verwenden der auch die Drehrichtungs Umkehr macht. Aber um das richtige Gerät dafür anzubieten, ist Spannung und Strom sehr wichtig. Auch das weiche Anfahren und Bremsen ist damit gegeben.

Franz

Hier kannst du schauen was ich dafür nutzen würde. Im Link ganz nach unten scrollen. Die letzten beiden Platienen wären meine Wahl. Ausser es ist nur ein Spielzeug Motor mit kleinen Strom. Aber Förderband hört sich nach etwas stärkeren an.

Der etwas andere Blickwinkel:

#include <TaskMacro.h>

const byte SENSOR1            =    2;  
const byte SENSOR2            =    3; 
const byte RELAY1             =    6;  
const byte RELAY2             =    7; 
const unsigned long wartezeit = 6000; // ms

void rechtslauf()
{
  digitalWrite(RELAY2, HIGH);
  digitalWrite(RELAY1, LOW );
}

void linkslauf()
{
  digitalWrite(RELAY2, LOW );
  digitalWrite(RELAY1, HIGH);
}

void halt()
{
  digitalWrite(RELAY2, LOW);
  digitalWrite(RELAY1, LOW);
}


Task foerderband()
{
  taskBegin();
  while(1)
  {
    taskPause(wartezeit);
    rechtslauf();
    taskWaitFor(digitalRead(SENSOR1));
    halt();

    taskPause(wartezeit);
    linkslauf();
    taskWaitFor(digitalRead(SENSOR2));
    halt();
  }
  taskEnd();
}


void setup()
{
  pinMode(RELAY1, OUTPUT);
  pinMode(RELAY2, OUTPUT);
  pinMode(SENSOR1, INPUT);
  pinMode(SENSOR1, INPUT);
}



void loop()
{
  foerderband();
  // hier tue weitere wichtige Dinge (bitte ohne delay())
}

solrac3f:
Danke euch.... Bin schon ein Schritt weiter. Die Nachtwächter Erklärung , hat mir auch schon geholfen.

Na dann hast du die Nachtwächter Erklärung überhaupt nicht verstanden.
Die zielt darauf hin, den Sketch ohne "delays()" zu schreiben.
Mit den delays blockierst du deinen Sketch. Und das gleich mehrfach.

Hallo
was macht deine Projektbaustelle?
Hast du bereits Funktionen für den Motor und für die Endschalter programmiert?
Wie sieht es mit dem Zeitgeber basierend auf dem IDE Beispiel aus ?

Die Baustelle steht still… :). Habe noch nicht neues dah ich Zeitlich wegen anderen Dingen mich nicht damit beschaftig habe. Hoffe heute Abend mich wieder dran zu setzen.

Hallo ,
habe heute Abend wieder ein bischen Zeit gefunden um mich mit mein Forderband Program zu beschaftigen.
Habe mich an euren Tips dazu gebracht info durchzulesen die ich nicht hatte. Ich habe die Funktion delay() so angesehen wie Zeitfunktionen die bei SPS programierung benutzt werden. Wusste nicht das delay() den gazen Prog. fur die Zeit anhalt. Die Funktion millis() dagenen stoped den Prog. nicht. Habe vesucht die Aufgabenstellung so zu zerlegen so gut es mir moglich war, um eine bessere Ubersicht zu haben. Sicherlicht nicht die beste Zerlegung, da C++ komplett Neuland fur mich ist. Ein Schalter zum auschalten ist auch schon drinne :). Einschalten fahlt noch :confused:.
Zuruck zu millis(). Habe es im Program eingefugt haber…Es tut sich nichts!!! Einer der Sensoren wird aktiv, der Motor wechselt wunderbar die Richtung und die Wartezeit wurde nicht gegeben.
Habe festgestellt das SPS Denkweise ich ihr nicht benutzen kann. :slight_smile: >:( :frowning: :o :confused:
----| |------| |----------( )
T1 I0.1 RQ1
Werde den Code ihr zeigen den ich bich jetzt habe. Falls jemand schnell druber gucken konnte wurde ich mich Herzlich bedanken.

const int sensor1           =  2; 
const int sensor2           =  3;
const int start1            =  4;
const int stop1             =  5;
const int relais1           =  6;
const int relais2           =  7;     


int relais1State  = LOW;    
int relais2State  = LOW;  
int sensor1State = 0;
int sensor2State = 0;
int start1State  = 0;
int stop1State   = 0;

unsigned long previousMillisrecht =  0; 
unsigned long previousMillislinks =  0; 
const long lesesensor1 = 3000; 
const long lesesensor2 = 3000; 
//////////////////////////////////////////////////
void setup()
{
  pinMode(sensor1,INPUT);
  pinMode(sensor2,INPUT);
  pinMode(start1, INPUT);
  pinMode(stop1,  INPUT);
  pinMode(relais1,OUTPUT);
  pinMode(relais2,OUTPUT);
   
}
//////////////////////////////////////////////////

void loop(){
  
foerderband();
  
}
///////////////////////////////////////////////////
void start(){
   
 }
///////////////////////////////////////////////////
void stop(){
  
   
 }
/////////////////////////////////////////////////
void rechtslauf(){
  sensor1State = digitalRead(sensor1);
  if (sensor1State == HIGH){
    digitalWrite(relais1, HIGH);
    digitalWrite(relais2, LOW);
      } 
  
 }
//////////////////////////////////////////////////
void linkslauf(){
 sensor2State = digitalRead(sensor2);
  if (sensor2State == HIGH) {
    digitalWrite(relais1, LOW);
    digitalWrite(relais2, HIGH);
      } 
 }
//////////////////////////////////////////////////
void stopmotor(){
  stop1State = digitalRead(stop1);
  if (stop1State == HIGH) {
    digitalWrite(relais1, LOW);
    digitalWrite(relais2, LOW);
      } 
 }
//////////////////////////////////////////////////
void wartezeitrechtslauf() 
  {
 unsigned long currentMillis = millis(); 
  if (currentMillis - previousMillisrecht >= lesesensor1)   
  {
  previousMillisrecht = currentMillis; 
    
  digitalWrite(relais1, LOW);
  digitalWrite(relais2, LOW);
  }  
}
///////////////////////////////////////////
void wartezeitlinkslauf() 
{
unsigned long currentMillis = millis(); 
  if (currentMillis - previousMillislinks >= lesesensor2) 
  {
  previousMillislinks = currentMillis;  
  
  digitalWrite(relais1, LOW);
  digitalWrite(relais2, LOW);
  }  
}
///////////////////////////////////////////
void foerderband(){
  
 wartezeitrechtslauf();  
 rechtslauf();
 stopmotor();
 wartezeitlinkslauf(); 
 linkslauf(); 
 stopmotor();
 }

Offensichtlich hast du das mit millis() und BlinkWithoutMillis immer noch nicht verstanden.
Millis allein hilft dir nicht.
Du musst millis() in eine Funktion bringen, ähnlich wie das Beispiel BlinkWithoutMillis, erst dann wirst du ein positives Ergebnis haben.
Und wie das dann funktionieren soll, wird in der Nachtwächtererklärung genau beschrieben.

Mit hilfe von millis baust du die entsprechende Zeitspanne auf, in der dein Programm normal weiter läuft, sobald aber die von dir gewählte Zeitspanne zu ende ist, wird die von dir vorgegebene Aktion ausgeführt. Da blockiert dann nichts mehr.

Danke Hot System. Werde mir das Beispiel BlinkWithoutMilli wieder anschauen ... Werde mich spater wieder melden . :slight_smile:

Hallo,
ich habe deinen Sketch gelesen und versucht zuverstehen. Dabei bin ich über die neuen Eingänge mit der Bezeichnung start1 und stop1 gestolpert.
Wofür sind diese Eingänge? Sind nicht bereits die Eingänge mit der Bezeichnung sensor1 und sensor2 die erforderlichen Endschalter?

Hallo paul paulson, Ja sensor 1 und sensor2 sind die Endschalter. start 1 und stop1 sind dafur dah spater wenn ich das mit der Motorwartezeit inkriege die Anlage nicht uber die Endschalter zu starten. :slight_smile:

solrac3f:
Werde mir das Beispiel BlinkWithoutMilli wieder anschauen ...

Das hast Du schon verstanden. Für jeden Schritt einzeln funktioniert das.
Problem ist nur, das Du #1 nicht mitgenommen hast.

Hallo
ich habe in deinen Sketch zum Testen die Funktion foerderbandTest(); und diverse Serial.pintln()s eingefügt. So kannst du das Förderband bei der Erstellung des Sketches verfahren und alle Zustände testen.

// zum Testen die Funktion foerderbandTest(); und diverse Serial.pintln()s eingefügt 

const int sensor1           =  2;
const int sensor2           =  3;
const int start1            =  4;
const int stop1             =  5;
const int relais1           =  6;
const int relais2           =  7;
int relais1State  = LOW;
int relais2State  = LOW;
int sensor1State = 0;
int sensor2State = 0;
int start1State  = 0;
int stop1State   = 0;
unsigned long previousMillisrecht =  0;
unsigned long previousMillislinks =  0;
const long lesesensor1 = 3000;
const long lesesensor2 = 3000;
//////////////////////////////////////////////////
void setup()
{
  pinMode(sensor1, INPUT);
  pinMode(sensor2, INPUT);
  pinMode(start1, INPUT);
  pinMode(stop1,  INPUT);
  pinMode(relais1, OUTPUT);
  pinMode(relais2, OUTPUT);
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
  Serial.println(F("Taste | [r]=rechts | [l]=links | [s]=stopp | |"));
}
//////////////////////////////////////////////////
void loop() {
  foerderbandTest();
//  foerderband();
}
///////////////////////////////////////////////////
void start() {
}
///////////////////////////////////////////////////
void stop() {
}
/////////////////////////////////////////////////
void rechtslauf() {
  Serial.println(F("rechtslauf()"));
  sensor1State = digitalRead(sensor1);
  if (sensor1State == HIGH) {
    digitalWrite(relais1, HIGH);
    digitalWrite(relais2, LOW);
  }
}
//////////////////////////////////////////////////
void linkslauf() {
   Serial.println(F("linkslauf()"));
  sensor2State = digitalRead(sensor2);
  if (sensor2State == HIGH) {
    digitalWrite(relais1, LOW);
    digitalWrite(relais2, HIGH);
  }
}
//////////////////////////////////////////////////
void stopmotor() {
  Serial.println(F("stopmotor()"));
  stop1State = digitalRead(stop1);
  if (stop1State == HIGH) {
    digitalWrite(relais1, LOW);
    digitalWrite(relais2, LOW);
  }
}
//////////////////////////////////////////////////
void wartezeitrechtslauf()
{
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillisrecht >= lesesensor1)
  {
    previousMillisrecht = currentMillis;
    digitalWrite(relais1, LOW);
    digitalWrite(relais2, LOW);
  }
}
///////////////////////////////////////////
void wartezeitlinkslauf()
{
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillislinks >= lesesensor2)
  {
    previousMillislinks = currentMillis;
    digitalWrite(relais1, LOW);
    digitalWrite(relais2, LOW);
  }
}
///////////////////////////////////////////
void foerderband() {
  wartezeitrechtslauf();
  rechtslauf();
  stopmotor();
  wartezeitlinkslauf();
  linkslauf();
  stopmotor();
}
///////////////////////////////////////////
void foerderbandTest()
{
  digitalWrite(LED_BUILTIN,millis()/500%2); 
  switch (Serial.read())
  {
    case 'l': linkslauf(); break;
    case 'r': rechtslauf(); break;
    case 's': stopmotor(); break;
  }
}

Hallo a halle,
Erstmals mochte ich mich bei euch hallen bedanken fur die Tips und Hilfestellungen. "DANKE an
combie, HotSystems, paulpaulson, my_xy_projekt
"

Bin schon ein Schritt weiter und die Anlege bewegt sich schon mit anfahren und anhalten des Motors an den ensprechenden Stellen.

Ich habe mich zuerst mit der millis() funktion rumgeschlagen. Ich denke das ich verstande habe was darinter steckt. Mein problem ist haber wie ich das in den code einbringen kann zu meiner Aufgabenstellung.
Dah ich mit millis() nicht weiter kam, habe ich die TaskMacro Variante ausprobiert. Und war direkt ein Volltreffer. Ich denke deswegen dah ich schon mit einfachen SPS Steuerungen erfahrung habe.

Ihr ist der Code den ich bich jetzt zur TaskMacro Variante habe.

#include <TaskMacro.h>
const int starten   =  4;
const int stopen    =  5;
const int notaus    =  8;
const int sensor1   =  2;
const int sensor2   =  3;
const int relais1   =  6;
const int relais2   =  7;     

int startenState    = 0;
int stopenState     = 0;
int notausState     = 0;
int sensor1State    = 0;
int sensor2State    = 0;
int relais1State    = LOW;   
int relais2State    = LOW; 

//////Setup-Code//////
 void setup()
{
  pinMode(relais1, OUTPUT);
  pinMode(relais2, OUTPUT);
  pinMode(sensor1, INPUT);
  pinMode(sensor2, INPUT);
}
//////Hauptcode//////
void loop()
{
    foerderband();
}
//////Started die Anlage//////
void anlagean() 
{
}
//////Stoped die Anlage//////
void anlagehalt()
 {
}
//////Motor lauft Rechts//////
void rechtslauf()
{
    digitalWrite(relais1, HIGH);
    digitalWrite(relais2, LOW);
 }
 //////Motor lauft Links//////
void linkslauf()
{
    digitalWrite(relais1, LOW);
    digitalWrite(relais2, HIGH);
 }
 //////Motoren stehen stil//////
void stopmotor()
{
    digitalWrite(relais1, LOW);
    digitalWrite(relais2, LOW);
 }
 //////Steuerung Foerderband//////
void foerderband()
{
 taskBegin();
  while(1)
  {
    taskPause(3000);
    rechtslauf();
    taskWaitFor(digitalRead(sensor2));
    stopmotor();

    taskPause(3000);
    linkslauf();
    taskWaitFor(digitalRead(sensor1));
    stopmotor();
  }
  taskEnd();
 }

Zuruck zur millis()
Wie gesagt mein problem mit millis(), ist wie ich das in mein code einbrigen kann.
Der lezte sketch von paulpalsen mit millis() drinne, habe ich ubernommen und ein bischen umgeschriebe da ich mitlerweile die Namen der eingange und void verhandert habe. Habe mit den code angeguckt, um zu lernen und zu verstehen und war mir sicher das jetzt millis() mir auch eine Losung geben wurde.
Habe es ausprobiert hat haber nicht funktioniert. Die Anlage bewegt sich nicht. Was ich beobachten kann ist das

digitalWrite(LED_BUILTIN,millis()/500%2);
am Laufen ist.

Ihr ist der Code den ich bich jetzt zur millis() Variante habe.

// zum Testen die Funktion foerderbandTest(); und diverse Serial.pintln()s eingefügt

const int starten   =  4;
const int stopen    =  5;
const int notaus    =  8;
const int sensor1   =  2;
const int sensor2   =  3;
const int relais1   =  6;
const int relais2   =  7;   

int startenState    = 0;
int stopenState     = 0;
int notausState     = 0;
int sensor1State    = 0;
int sensor2State    = 0;
int relais1State    = LOW;   
int relais2State    = LOW; 

unsigned long previousMillisrecht =  0;
unsigned long previousMillislinks =  0;
const long lesesensor1 = 3000;
const long lesesensor2 = 3000;

//////Setup-Code//////
void setup()
{
  pinMode(sensor1, INPUT);
  pinMode(sensor2, INPUT);
  pinMode(starten, INPUT);
  pinMode(stopen,  INPUT);
  pinMode(relais1, OUTPUT);
  pinMode(relais2, OUTPUT);
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
  Serial.println(F("Taste | [r]=rechts | [l]=links | [s]=stopp | |"));
}
//////Hauptcode//////
void loop() 
{
    anlagean(); 
    foerderband();
}
//////Started die Anlage//////
void anlagean() 
{
  startenState = digitalRead(starten);
  if (startenState == HIGH) {
    digitalWrite(relais1, HIGH);
    digitalWrite(relais2, LOW);
  }
}
//////Stoped die Anlage//////
void anlagehalt() 
{
}
//////Motor lauft Rechts//////
void rechtslauf() 
{
  Serial.println(F("rechtslauf()"));
  sensor1State = digitalRead(sensor1);
  if (sensor1State == HIGH) {
    digitalWrite(relais1, HIGH);
    digitalWrite(relais2, LOW);
  }
}
 //////Motor lauft Links//////
void linkslauf() {
   Serial.println(F("linkslauf()"));
  sensor2State = digitalRead(sensor2);
  if (sensor2State == HIGH) {
    digitalWrite(relais1, LOW);
    digitalWrite(relais2, HIGH);
  }
}
 //////Motoren stehen still//////
void stopmotor() 
{
  Serial.println(F("stopmotor()"));
  stopenState = digitalRead(stopen);
  if (stopenState == HIGH) {
    digitalWrite(relais1, LOW);
    digitalWrite(relais2, LOW);
  }
}
//////Wartezeit des Motors in rechtslauf//////
void wartezeitrechtslauf()
{
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillisrecht >= lesesensor1)
  {
    previousMillisrecht = currentMillis;
    digitalWrite(relais1, LOW);
    digitalWrite(relais2, LOW);
  }
}
//////Wartezeit des Motors in linksslauf//////
void wartezeitlinkslauf()
{
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillislinks >= lesesensor2)
  {
    previousMillislinks = currentMillis;
    digitalWrite(relais1, LOW);
    digitalWrite(relais2, LOW);
  }
}
 //////Steuerung Foerderband//////
void foerderband()
{
  digitalWrite(LED_BUILTIN,millis()/500%2);
  switch (Serial.read())
  {
    case 'l': linkslauf(); break;
    case 'r': rechtslauf(); break;
    case 's': stopmotor(); break;
  }
}

Fur mich ist zu diesen Zeitpunkt auch sehr wichtig zu sehen das mit millis() ich meine Aufgabenstellung auch bewaltigen kann. Weil erstens " Verdamm es muss einen Wegen geben das zum Arbeiten zu bringen" und zweitens ich sichelich in Zukunft aud millis() zuruck greifen werde.
Der Motor mit zwei Sensoren am Forderband ist nur der Anfang. Es kommt noch Start/Stop, NotAus, Cyclenzahler, Display um Cyclenzahlen ablesen zu konnen, Wartezeiten verhandern uber die Steuerung ohne den Arduino direkt am Laptop anschlisen zu mussen, Cyclenzahlen mit hilfe von Rasperry Wireless in eine Excell tabelle einzufugen… :slight_smile: :frowning: :o :confused:

Ich habe haber dafur noch viel, viel sehr viel zu lernen.

Hallo
mit

  digitalWrite(LED_BUILTIN,millis()/500%2);

wir über die LED angezeigt, dass der Sketch noch lebt, mehr nicht.

Genau...
Ich kann die LED blinken sehen, haber tue ich einer der Sensoren aktivieren läuft der Motor nicht an. Wie ich gesagt habe, habe ich einige Name für Eingänge und void an deinem Sketch verändert haber ich denke das ist nicht das Problem. Werde mir Gedanken darüber machen... :slight_smile:

Ich denke an deinen Sketch muss ich in void Förderband die Schritte reinschreiben die ich möchte.
void foerderband()
{
digitalWrite(LED_BUILTIN,millis()/500%2);
switch (Serial.read())
{
case 'l': linkslauf(); break;
case 'r': rechtslauf(); break;
case 's': stopmotor(); break;
}
Danke. Werde es später ausprobieren