Grundkenntnisse Programmierung 2 (Servomotor mit einem Potentiometer steuern)

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

#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

Initaliseriung

  • Der Servomotor muss initialisiert werden.

Quelltext 2: init.ino

Servo Motor;  // Motor initalisieren

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 miteinader 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()

  • 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!