Ihre Browserversion ist veraltet. Wir empfehlen, Ihren Browser auf die neueste Version zu aktualisieren.

Die Drehrichtung an einem Motor ändern (2)

Aufgabe:

Die Drehrichtung eines Motors soll mit einem Taster geändert werden

Anschluss an den Arduino

Material

  • Arduino
  • Potentiometer
  • 1 Gleichstrommotor
  • Motortreiber IC 293D
  • 2 Taster
  • 2 Widerstände 1000W
  • Breadboard
  • Leitungen

Beschreibung

Im Vergleich zur vorherigen Schaltung werden zusätzlich noch die beiden Taster und die beiden Pulldown-Widerstände eingebaut.

 

Übersicht der Steckverbindungen:

Je nachdem, welcher Taster gedrückt wird, dreht sich der Motor nun nach rechts, links oder gar nicht:

Das Ardublock-Programm

Bedeutung der einzelnen Blöcke

(Steht unter dem Block keine Erklärung, dann wurde er bereits in einem Tutorial erklärt)

Zwei Variablen werden erstellt. Sie erhalten den Wert „wahr“, wenn der jeweilige Taster gedrückt ist.

 

Wenn der Ausdruck in der Zeile „teste“ wahr ist, dann werden die Befehle im „dann“-Teil ausgeführt.

 

Es wird abgefragt, ob kein Taster oder beide Taster gedrückt sind. In der Zeile „teste“ wird zunächst abgefragt, ob eine „oder-Verknüpfung“ erfüllt ist.

Die „oder-Verknüpfung“ ist erfüllt, wenn eine der beiden Bedingungen in den Zeilen „wahr“ ist oder wenn beide Zeilen wahr sind.

 

Eine „und“-Verknüpfung erhält den Wert „wahr, wenn beide Bedingungen erfüllt sind:

Wenn Taster 1 nicht gedrückt ist und Taster 2 nicht gedrückt ist, dann ist der Wert „wahr“.

 

Die zweite „und“-Verknüpfung ist „wahr“, wenn beide Taster gleichzeitig gedrückt werden.

 

 Falls kein Taster gedrückt ist (erste „und“-Verknüpfung) oder beide Taster gedrückt sind (zweite „und“-Verknüpfung), folgt der „dann“-Teil. Hier werden beide digitale Pins auf „LOW“ gesetzt, so dass der Motor nicht läuft.

 

In der zweiten Abfrage wird, wenn die „teste“-Zeile „wahr“ ist, Pin 3 auf „HIGH“ und Pin 10 auf „LOW“ gesetzt. Dadurch läuft der Motor in eine Richtung.

 

Die zweite Abfrage prüft, ob der Taster 1 gedrückt ist und der Taster 2 nicht gedrückt ist. Falls dem so ist, werden die obigen Befehle abgearbeitet, wenn nicht, dann folgt der nächste Befehl.

 

In der dritten Abfrage wird, wenn die „teste“-Zeile „wahr“ ist, Pin 3 auf „LOW“ und Pin 10 auf „HIGH“ gesetzt. Dadurch läuft der Motor in die andere Richtung.

 

Die dritte Abfrage prüft, ob der Taster 1 nicht gedrückt ist und der Taster 2 gedrückt ist. Falls dem so ist, werden die obigen Befehle abgearbeitet, wenn nicht, dann fängt das Programm wieder von vorne an.

 

Der Arduino-Sketch

(Steht keine Erklärung, dann wurde der Befehl bereits in einem Tutorial erklärt)

Zeilen-nummer

Programmcode

Erklärung

1

bool _ABVAR_1_TASTER1;

// Die beiden Variablen _ABVAR_1_TASTER1 und _ABVAR_2_TASTER2 werden angelegt. Sie können die Werte „wahr“ oder „falsch“ annehmen.

2

bool _ABVAR_2_TASTER2;

3

void setup()

// Pin 3 und Pin 10 am Arduino werden als Ausgänge definiert.

4

{

 

5

     pinMode( 3 , OUTPUT);

// Die Pins 3 und 10 sind Ausgänge, die Pins 11 und 12 sind Eingänge.

6

     pinMode( 10 , OUTPUT);

7

     pinMode( 11 , INPUT);

8

     pinMode( 12 , INPUT);

9

     _ABVAR_1_TASTER1 = false;

// Beide Variablen erhalten zunächst den Wert  „falsch“.

10

     _ABVAR_2_TASTER2 = false;

11

}

 

12

void loop()

 

13

{

 

14

     _ABVAR_1_TASTER1 = digitalRead( 11) ;

// Die Variablen erhalten den Wert „wahr“ wenn der entsprechende Taster gerade gedrückt wird.

15

     _ABVAR_2_TASTER2 = digitalRead( 12) ;

16

     delay( 100 );

 

17

     if (( ( !( _ABVAR_1_TASTER1 ) && !( _ABVAR_2_TASTER2 ) ) || ( _ABVAR_1_TASTER1 && _ABVAR_2_TASTER2 ) ))

// Wenn die beide Variablen den Wert „falsch“ haben oder beide den Wert „wahr“ haben, dann...

18

{

 

19

     digitalWrite( 3 , LOW );

//... wird an beiden Pins 0V (LOW) angelegt, der Motor dreht sich nicht.

20

     digitalWrite( 10 , LOW );

21

     delay( 100 );

22

}

 

23

if (( _ABVAR_1_TASTER1 && !( _ABVAR_2_TASTER2 ) ))

// Wenn Variable 1 den Wert  „wahr” und Variable 2 den Wert „falsch” hat, dann…

24

{

 

25

     digitalWrite( 3 , HIGH );

// … dann wird an Pin 3 5V (HIGH) und an Pin 10 0V (LOW) angelegt, der Motor dreht sich in eine Richtung

26

     digitalWrite( 10 , LOW );

27

}

 

28

if (( !( _ABVAR_1_TASTER1 ) && _ABVAR_2_TASTER2 ))

// Wenn Variable 1 den Wert  „falsch” und Varible 2 den Wert „wahr” hat, dann…

29

{

 

30

     digitalWrite( 3 , LOW );

// … wird an an Pin 3 0V (LOW) und an Pin 10 5V (HIGH) angelegt, der Motor dreht sich in die andere Richtung

31

     digitalWrite( 10 , HIGH );

32

}

 

33

}

 

Cookie-Regelung

Diese Website verwendet Cookies, zum Speichern von Informationen auf Ihrem Computer.

Stimmen Sie dem zu?