Grundkenntnisse Programmierung 2 (Servomotor mit einem Potentiometer steuern)

Aus HSHL Mechatronik
Version vom 21. September 2023, 08:20 Uhr von Justin Frommberger (Diskussion | Beiträge) (→‎analogRead())
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Autor: Justin Frommberger

#include

Wird verwendet, um eine Bibliothek in das Programm einzufügen.

  • Eine Bibliothek ist eine Sammlung von Unterprogrammen/-routinen, die Lösungswege für Aufgaben vereinfachen, indem mit kurzen Befehlen Programmcode ausgeführt wird.
  • Beispiel: Servo.h Befehle.

[Quelltext 1: include.ino]

# include <Servo.h>  // eingebaute Bibliothek einbinden
Servo Motor;

Servo.h

Initialisierung

Der Servomotor wird initialisiert mit, siehe Quelltext 2:

[Quelltext 2: init.ino]

Servo Motor;  // Motor initialisieren

attach()

Der Motor wird über einen PWM Pin gesteuert.
Der PIN wird mit dem Befehl attach() festgelegt.

[Quelltext 3: attach.ino]

Motor.attach(9); // Motor an Pin 9 angeschlossen (attach)

write()

Um den Motor zu einer bestimmten Position zu drehen, wird der Code write() benötigt.

[Quelltext 4: write.ino]

Motor.write(Position); // Motor zur Position bewegen

Funktionen

analogRead()

Liest den Wert vom angegebenen analogen Pin ein.

  • Den analog gelesenen Wert auf dem Pin (int), allerdings ist der Wert limitiert durch die Auflösung des Digital-Konverters (0 - 1023 für 10 Bit und 0 - 4095 für 12 Bit).
  • Ein Digital-Konverter ist ein Umwandler, damit zwei Geräte miteinander kommunizieren können, obwohl sie eine andere Sprache sprechen.

[Quelltext 5: analogRead.ino]

int analogPin = A3;  // Pin, der gelesen werden soll: Pin A3
int val = 0;         // Variable, die den gelesenen Wert speichert

void setup() 
{
 
}

void loop() 
{
  val = analogRead(analogPin); // Pin einlesen
}

map()

Bildet eine Zahl von einem Bereich in einen anderen ab.
Das heißt, ein Wert von fromLow würde auf toLow, einen Wert von fromHigh auf toHigh, Werte zwischen dazwischen auf Werte dazwischen usw. zugeordnet.

Tabelle 1: map();
value Die Nummer, die zugeordnet werden soll.
fromLow Die untere Grenze des aktuellen Wertebereichs.
fromHigh Die obere Grenze des aktuellen Wertebereichs.
toLow Die untere Grenze des Zielbereichs des Werts.
toHigh Die obere Grenze des Zielbereichs des Werts.

[Quelltext 6: map.ino]

void loop()
{
                                                   // 0 bis 1023 (analoger Sensorwert)                                                      
map(value, fromLow, fromHigh, toLow, toHigh);       // 0 bis 180  (Drehung des Motors) 
                                                   // Low(tief) = 0  | High(hoch) = 1023 oder 180
}

[Link zum Nachlesen]



→ zurück zur Übersicht: Projekte