Grundkenntnisse Programmierung 2 (Servomotor mit einem Potentiometer steuern)

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Justin Frommberger

#include

  • Wird verwendet, um eine Bibliothek in das Programm einzufügen und nutzen zu können.
  • Eine Bibliothek ist eine Sammlung von Unterprogrammen/-routinen, die Lösungswege für Aufgaben vereinfachen, indem mit kurzen Befehlen Programmcode ausgeführt wird.
  • Benötigt wird in diesem Projekt die Bibliothek Servo.h, diese beinhaltet verschiedene Funktionen, siehe [Link] (Befehle).

[Quelltext 1: include.ino]

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

Servo.h

Initialisierung

Der Servomotor muss initialisiert werden.

[Quelltext 2: init.ino]

Servo Motor;  // Motor initialisieren

attach()

Der Motor wird über einen PWM Pin gesteuert, dieser muss noch festgelegt werden mit dem Befehl attach().

[Quelltext 3: attach.ino]

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

write()

Der Motor soll sich zu einer bestimmten Position drehen, diese wird ihm mit write() übergeben.

[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
  Serial.println(val);         // Wert ausgeben
}

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 bis toHigh, Werte zwischen dazwischen auf Werte dazwischen usw. zugeordnet.

  • 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 zum Hauptartikel: [klicken]