Einen 12V DC-Motor der links- und rechtslauf kann und durch eine Lichtschranke die Drehrichtung geändert wird

Die damit es funktioniert. Wie schon gesagt kenne mich halt damit 0,0% aus xD

Den ganzen Streaming Kram kannst du da rauswerfen.

1 Like

Also "#include <Streaming.h> // die Lib findest du selber :wink: " kann ich entfernen?

sonst noch was ?

Das kannst nur du ändern.
Nicht ich.

Sobald ich dein Streaming Kram rausgeschmissen habe kommt dann die Fehlermeldung
"Compilation error: no match for 'operator<<' (operand types are 'Print' and 'const __FlashStringHelper*')"

Das gehört zum Streaming!
Entweder die Streaming Lib installieren, oder den ganzen Kram rauswerfen.
Sachte ich das nicht schon.....?

//#include <Streaming.h> // die Lib findest du selber ;-)
//Print &cout = Serial; // cout Emulation für "Arme"



const byte motorEnableA {12};
const byte motorBrakeA  { 9};
const byte motorSpeedA  { 3};

const byte lichtschankeLinks  { 2};
const byte lichtschankeRechts { 3};

void linkslauf()
{
  digitalWrite(motorEnableA, HIGH); //Establishes forward direction of Channel A
  digitalWrite(motorBrakeA,  LOW); //Disengage the Brake for Channel A
  analogWrite(motorSpeedA,   255); //Spins the motor on Channel A
  Serial.println(F("linkslauf"));
  //  cout << F("linkslauf") << endl;
}

void rechtslauf()
{
  digitalWrite(motorEnableA, LOW); //Establishes backward direction of Channel A
  digitalWrite(motorBrakeA,  LOW); //Disengage the Brake for Channel A
  analogWrite(motorSpeedA,   123); //Spins the motor on Channel A
  Serial.println(F("rechtslauf"));
  //  cout << F("rechtslauf") << endl;
}
void halt()
{
  digitalWrite(motorBrakeA,  HIGH); // Brake for Channel A
  //  analogWrite(motorSpeedA,   0);    //Spins the motor on Channel A
  Serial.println(F("halt"));
  //  cout << F("halt") << endl;
}

void automat()
{
  linkslauf();
  while (!digitalRead(lichtschankeLinks)) {yield();}
  halt();
  delay(3000);
  rechtslauf();
  while (!digitalRead(lichtschankeRechts)) {yield();}
  halt();
  delay(3000);
}

void error()
{
  halt(); // motor Halt
  Serial.println(F("Error: Beide Lichtschranken belegt"));
  //  cout << F("Error: Beide Lichtschranken belegt") << endl;
  while(1) {} // system Halt
}

void setup()
{
  Serial.begin(9600);
  Serial.print(F("Start: "));  Serial.println(F(__FILE__));
  //  cout << F("Start: ") << F(__FILE__) << endl;

  //Setup Channel A
  pinMode(motorEnableA, OUTPUT); //Initiates Motor Channel A pin
  pinMode(motorBrakeA,  OUTPUT); //Initiates Brake Channel A pin

  pinMode(lichtschankeLinks,  INPUT_PULLUP); //Lichtschranke Input
  pinMode(lichtschankeRechts, INPUT_PULLUP); //Lichtschranke Input
}

void yield()
{
  if(digitalRead(lichtschankeLinks) && digitalRead(lichtschankeRechts))
  {
    error();
  }
}

void loop()
{
  automat();
}

Das ist dein Problem.
Wenn man eine Lib nimmt, löst man kein Problem, sondern verlagert es.

Zugegeben, oft ist es einfacher, eine Lib zu verstehen als das Problem, weswegen die Lib erfunden wurde. Aber manchmal tauscht man ein Problem gegen ein anderes.

Reinknien muss man sich immer.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.