Grundkenntnisse Programmierung 2 (Servomotor mit einem Potentiometer steuern)
#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()
- 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!]