Vibrationsmotor

Funktionsweise

Beim Vibrationsmotor handelt es sich um einen sehr kleinen Motor, der über eine kleine Unwucht verfügt. Durch diesen Fehler im Rundlauf entsteht die gewünschte Vibration. Aufgrund des elektrischen Anschlusses beim CrowPi ist jedoch nur ein Ein- und Ausschalten des Motors möglich. Theoretisch wäre aber auch PWM denkbar. Jedoch verfügt der verwendete Pin über keine PWM Funktionalität.

Voraussetzungen

DIP Switches

Für diese Komponente muss einer der DIP-Switches auf die folgende Position eingestellt werden:

ON(links)12345678ON(rechts)12345678

Verwendung

Nachfolgend wird die Verwendung der Klasse com.pi4j.crowpi.components.RelayComponent Javadoc beschrieben.

Konstruktoren

Konstruktor Bemerkung
VibrationMotorComponent(com.pi4j.context.Context pi4j) Initialisiert einen Vibrationsmotor mit dem Standard-Pin für den CrowPi.
VibrationMotorComponent(com.pi4j.context.Context pi4j, int address) Initialisiert einen Vibrationsmotor mit einem benutzerdefinierten Pin.

Methoden

Methode Bemerkung
void on() Schaltet den Vibrationsmotor ein.
void off() Schaltet den Vibrationsmotor aus.
boolean toggle() Wechselt den Zustand des Vibrationsmotors abhängig vom aktuellen Zustand. Gibt den neuen Zustand als boolean zurück.
void pulse(int interval) Schaltet den Vibrationsmotor für die angegebene Zeit in Millisekunden ein.
void setState(boolean on) Setzt den aktuellen Zustand des Vibrationsmotors auf den Wert des boolean on.

Beispielapplikation

Die Beispielapplikation führt erst einen kleinen Test mit Ein- und Ausschalten dem Vibrationsmotor durch. Anschliessend wird durch gezielte Variation der Pulslänge versucht einen möglichst nervigen Ton zu erstellen. Dadurch soll der Benutzer aufgeweckt werden, falls er vor dem PC eingeschlafen ist. Sobald der Benutzer das Aufwachen mit YES bestätigt wird die Applikation beendet.

Pfad zum Codebeispiel: src/main/java/com/pi4j/crowpi/applications/VibrationMotorApp.java
Auf GitHub ansehen
package com.pi4j.crowpi.applications;

import com.pi4j.context.Context;
import com.pi4j.crowpi.Application;
import com.pi4j.crowpi.components.VibrationMotorComponent;

import java.util.Scanner;

/**
 * This example shows how to use the vibration motor. It basically represents a vibrating alarm clock which is going off and keeps making
 * noises until the user confirms being awake by writing `yes` to the console / standard input. Please note that this example requires the
 * DIP switch 2-1 to be activated for it to work.
 */
public class VibrationMotorApp implements Application {
    @Override
    public void execute(Context pi4j) {
        VibrationMotorComponent vibrationMotor = new VibrationMotorComponent(pi4j);

        // Short test if the component is working
        vibrationMotor.on();
        sleep(500);
        vibrationMotor.off();

        // Write to ask the user something
        System.out.println("Are you awake? Answer with YES if you are...");
        // Scanner is used to read the input from the commandline
        Scanner scanner = new Scanner(System.in);

        // Loops until YES is found
        while (!scanner.nextLine().equalsIgnoreCase("YES")) {
            // Do some pulses to create a strange noise
            for (int i = 10; i < 100; i++) {
                // As you see use pulse is a lot more comfortable than using .on -> sleep -> off
                vibrationMotor.pulse(i);
                sleep(i);
            }
            for (int i = 100; i > 10; i--) {
                vibrationMotor.pulse(i);
                sleep(i);
            }
            System.out.println("Are you awake? Answer with YES if you are...");
        }

        // User is awake, so we can turn off the vibration motor now.
        vibrationMotor.off();
    }
}

Weitere Möglichkeiten

  • Einen benutzerdefinierten Vibrationsalarm einrichten unter Verwendung eines spezifischen Pulsates.
  • In Kombination mit Knöpfen und Sensoren kann der Vibrationsmotor verwendet werden, um den Benutzer auf etwas aufmerksam zu machen.