Aufgebaut wird die Schaltung mit einem Arduino Nano und einem Motortreiber mit L298. Die beiden Endsensoren sind Reed Kontakte. In den entsprechenden Fahrzeugen ist ein Magnet befestigt, der die Reed Kontakte schaltet.

 

 

 [code]

// angelehnt an (c) Michael Schoeffler 2016, http://www.mschoeffler.de

const int enb = 6; // PWM pin 6

const int in3 = 7;

const int in4 = 8;

 

int sensorA = 14 ; // Analog Pin 0 Haltepunkt A

int sensorB = 15; // Analog Pin 1 Haltepunkt B

 

void setup() {

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

pinMode(enb, OUTPUT);

 

pinMode ( sensorA, INPUT ); //Sensor A und B als Input

pinMode ( sensorB, INPUT );

digitalWrite( sensorA , HIGH ); //Interne Widerst�nde setzen

digitalWrite( sensorB , HIGH );

 

}

void slow() {

analogWrite(enb, 128);

}

void fast() {

analogWrite(enb, 255);

}

void halt() {

analogWrite(enb, 0);

 

}

void loop() {

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

fast();

 

while (1) //Loop bis SensorA aktiviert ist

{

if ( digitalRead( sensorA ) == 0 ) //SensorA ist gegen 0 geschaltet

break ;

delay( 10 );

}

 

halt();

 

delay(5000);

 

// change of direction

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

fast();

 

while (1) //Loop bis SensorB aktiviert ist

{

if ( digitalRead( sensorB ) == 0 ) //SensorB ist gegen 0 geschaltet

break ;

delay( 10 );

}

halt();

 

delay(5000 );

}

[/code]

 

Den Arduino UNO mit L293 Motorshield habe ich auch verwendet. Funktioniert ebenso gut. Hier der Code:

  

 [code]

#include "AFMotor.h"

int sensorA = 14 ; // Analog Pin 0 Haltepunkt A

int sensorB = 15; // Analog Pin 1 Haltepunkt B

AF_DCMotor motor( 1 ); //

 

void setup()

{

pinMode ( sensorA, INPUT ); //Sensor A und B als Input

pinMode ( sensorB, INPUT );

digitalWrite( sensorA , HIGH ); //Interne Widerst�nde setzen

digitalWrite( sensorB , HIGH );

 

}

 

void loop()

{

motor.run( FORWARD );

motor.setSpeed( 200 );

while (1) //Loop bis SensorA aktiviert ist

{

if ( digitalRead( sensorA ) == 0 ) //SensorA ist gegen 0 geschaltet

break;

delay( 10 );

}

motor.run( RELEASE );

delay( 5000 ); // 5 Sekunden Wartezeit

 

motor.run( BACKWARD );

motor.setSpeed( 200 );

 

while (1) //Loop bis SensorA aktiviert ist

{

if ( digitalRead( sensorB ) == 0 ) //SensorB ist gegen 0 geschaltet

break;

delay( 10 );

}

motor.run( RELEASE );

delay(5000 ); // 5 Sekunden Wartezeit

 

 

}

 

[/code]