Grundkenntnisse Programmierung 2 (Servomotor mit einem Potentiometer steuern)
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.
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 zur Übersicht: Projekte