Mit einem Beschleunigungssensor können wir die Lageposition unseres Funduino All-In-One Boards bestimmen. Durch auslesen der Sensorwerte können wir ermitteln, welche Neigung der Sensor aufweist, welcher Beschleunigung der Sensor ausgesetzt ist und dadurch zum Beispiel Erschütterungen erkennen.
In dieser Lektion möchten wir uns zunächst auf die Lageposition, also die Neigung, beschränken. Dabei möchten wir uns im Seriellen Monitor die Position auf der X-, Y- und Z-Achse ausgeben lassen.
Leider ist das ADXL335 Beschleunigungssensor-Modul nicht als Baustein im OpenRoberta Lab hinterlegt.
Wir greifen deshalb auf den Baustein „Sensor analog“ zurück, welchen wir bereits aus Lektion 9 kennen.
Den Baustein findest du im linken Menü unter „Sensoren„.
Nachdem wir den Baustein zu unserer ROBOTERKONFIGURATON in OpenRoberta hinzugefügt haben, vergeben wir für diesen Baustein den Namen „XAchse„. Da wir im weiteren Verlauf zusätzlich noch die Y-Achse und Z-Achse ergänzen, ist eine eindeutiger Namen hier besonders wichtig.
Der Messwerte für die Positionsbestimmung auf der X-Achse wird an Pin A0 ausgelesen.
Wir ergänzen einen weiteren „Sensor analog“ Baustein und nennen diesen „YAchse„.
Der Messwert für die Positionsbestimmung auf der Y-Achse wird an Pin A1 ausgelesen.
Wir ergänzen einen weiteren „Sensor analog“ Baustein und nennen diesen „ZAchse„.
Der Messwert für die Positionsbestimmung auf der Z-Achse wird an Pin A2 ausgelesen.
Gratulation!
Deine ROBOTERKONFIGURATION ist mit Schritt 4 erfolgreich abgeschlossen.
Deine Konfiguration sollte jetzt so aussehen wie in Abbildung Schritt 5 dargestellt.
In dieser Lektion möchten wir uns die X-, Y- und Z-Achsen Lageposition unseres FunduinoAll-In-One im Seriellen Monitor anzeigen lassen.
Wir starten daher mit einer einfachen Ausgabe im Seriellen Monitor.
Den dafür benötigten Block findest du im Menü auf der linken Seite unter „Aktion„.
Nachdem wir den Block zu deinem PROGRAMM hinzugefügt hast, müssen wir den Block noch ein wenig anpassen.
Zuerst soll der Sensorwert für die X-Achse im Seriellen Monitor ausgegeben werden. Diese erste Textausgabe im Seriellen Monitor soll deshalb „Sensorwert X-Achse“ lauten.
Anschließend fügen wir den gleichen Block noch einmal ein.
Diesmal löschen wir den grün hinterlegten Textbaustein allerdings heraus und fügen hier einen Baustein für unseren Messwert der X-Achse ein (siehe Schritt 4).
Den Baustein für den analogen Messwert der X-Achse findest du unter „Sensoren„.
Dein PROGRAMM sollte jetzt so aussehen, wie in Abbildung Schritt 5 dargestellt.
Wir erinnern uns: Mikrocontroller lesen oder verarbeiten Werte in einer sehr schnellen Geschwindigkeit (Frequenz).
Deshalb ergänzen wir unser Programm um eine kurze Pause von einer Sekunde (1000 ms).
Anschließend wiederholen wir die Schritte 1 bis 6, diesmal aber für unsere Y-Achse.
Achtung: Bitte achte darauf, dass du den korrekten Sensorwert ausgewählt hast. Du kannst den Sensorwert auswählen, indem du auf die Schaltfläche (siehe Abbildung Schritt 7) klickst.
Auch für die Ausgabe des Z-Wertes wiederholen wir die Schritte 1 bis 6.
Bitte achte auch hier darauf, dass du die Bausteine richtig konfigurierst.
Toll gemacht!
Jetzt ist es Zeit, das PROGRAMM auf unseren Funduino All-In-One zu laden.
Wir öffnen jetzt den Seriellen Monitor in unserem OpenRoberta Connector.
Wenn dein Programm richtig ist, sollten deine Zahlenwerte jetzt ungefähr so aussehen wie in Abbildung Schritt 9 dargestellt.
In unserem Beispiel liegt der Funduino Cube flach auf unserem Schreibtisch.
Wenn du den Funduino All-In-One jetzt ein wenig neigst, sollten sich die Zahlenwerte verändern.
Werden alle Werte richtig ausgegeben?
Wie kannst du das Programm jetzt noch optimieren?
Dir ist vielleicht aufgefallen, dass die Zahlenwerte der X-, Y- und Z-Achse nur sehr langsam im Seriellen Monitor ausgegeben werden.
Das liegt daran, dass wir zwischen jeder Ausgabe eine Pause von einer Sekunde vorgesehen haben.
Wenn du magst, kannst du die Pausen nach der Ausgabe der X-Achsen Position und der Y-Achsen Position aus deinem Programm löschen.
int ZAchse = A2; // Festlegen der Variablen
int XAchse = A0;
int YAchse = A1;
void setup()
{
Serial.begin(9600);
pinMode(ZAchse, INPUT); // Variable ZAchse ist ein Eingang
pinMode(XAchse, INPUT); // Variable XAchse ist ein Eingang
pinMode(YAchse, INPUT); // Variable YAchse ist ein Eingang
}
void loop()
{
Serial.println("Sensorwert X-Achse"); // Ausgabe im Seriellen Monitor von "Sensorwert X-Achse"
Serial.println(analogRead(XAchse)); // Ausgabe des Sensorwertes an Pin A0 (X-Achse)
Serial.println("Sensorwert Y-Achse"); // Ausgabe im Seriellen Monitor von "Sensorwert Y-Achse"
Serial.println(analogRead(YAchse)); // Ausgabe des Sensorwertes an Pin A1 (Y-Achse)
Serial.println("Sensorwert Z-Achse"); // Ausgabe im Seriellen Monitor von "Sensorwert Z-Achse"
Serial.println(analogRead(ZAchse)); // Ausgabe des Sensorwertes an Pin A2 (Z-Achse)
delay(1000); // Pausiere eine Sekunde (1000ms)
}
Falls du Unterstützung bei der Verwendung deines Funduino Cubes benötigen solltest, steht dir unser kompetentes Support Team jederzeit gerne zur Verfügung!
Du erreichst uns am Besten per Mail unter info@funduino.de oder von Montags bis Freitags, zwischen 09:00 und 17:00 Uhr unter der Rufnummer (+49) 5921 9704030.