Grundkenntnisse Programmierung 2 (Servomotor mit einem Potentiometer steuern)
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
}
→ zurück zum Hauptartikel: [klicken]