kramann.info
© Guido Kramann

Login: Passwort:










3.11.9 Allgemeines Vorgehen bei der Programmentwicklung mit Sensoren

3.11.9 General procedure for program development with sensors (EN google-translate)

3.11.9 Ogólna procedura tworzenia programu za pomocą czujników (PL google-translate)

Anders als bei einer selbst geschriebenen Funktion ist bei der Verwendung einer Sensor Hardware nicht ganz sicher vorher zu sehen, welche Werte dieser liefern wird. Dabei spielt nicht nur der Zusammenhang zwischen Sensorwert und Sensorinput eine Rolle, sondern auch das zeitliche Übertragungsverhalten der Werte und die Überlagerung von Störsignalen.

Different from a self-written function not sure when using a sensor hardware to see what its values ​​will be. Not only the relationship between sensor value and sensor input plays a role, but also the temporal transmission behavior of the values ​​and the superimposition of interference signals.

Różni się od funkcji napisanej samodzielnie nie wiem, kiedy używa się sprzętu z czujnikiem, aby zobaczyć, jakie będą jego wartości. Istotną rolę odgrywa nie tylko związek między wartością czujnika a wejściem czujnika, ale także czasowe zachowanie wartości i nakładanie się sygnałów interferencyjnych.

Bevor man ein komplettes Programm auf der Grundlage von Sensordaten schreibt, sollte man zuerst den Sensor ausgiebig testen.

Before you write a complete program based on sensor data, you should first test the sensor extensively.

Zanim napiszesz kompletny program na podstawie danych z czujnika, powinieneś najpierw dokładnie przetestować czujnik.

Dies geht am besten, wenn man die Sensordaten einliest und die empfangenen Werte zyklisch als Text ausgibt.

This works best if you read in the sensor data and output the received values ​​cyclically as text.

Działa to najlepiej, jeśli odczytujesz dane z czujnika i cyklicznie wyprowadzasz odbierane wartości jako tekst.

In Android Processing bietet die Bibliothek Ketai zu jedem denkbaren Sensor ein entsprechendes Beispielprogramm.

In Android Processing, the Ketai library offers a sample program for every conceivable sensor.

W Android Processing biblioteka Ketai oferuje przykładowy program dla każdego możliwego czujnika.

Nachfolgend beispielsweise der Originalsketch zum Testen des Beschleunigungssensors: Die Bibliothek beinhaltet als Kommentare die Möglichkeit viele weitere Sensoren zu aktivieren und sich anzeigen zu lassen.

For example, see the original sketch for testing the accelerometer: As a commentary the library contains the possibility to activate many more sensors and to display them.

Na przykład zobacz oryginalny szkic do testowania akcelerometru: Biblioteka zawiera jako komentarze możliwość aktywowania wielu innych czujników i wyświetlenia.

/**
 * <p>Ketai Sensor Library for Android: http://Ketai.org</p>
 *
 * <p>KetaiSensor Features:
 * <ul>
 * <li>handles incoming Sensor Events</li>
 * <li>Includes Accelerometer, Magnetometer, Gyroscope, GPS, Light, Proximity</li>
 * <li>Use KetaiNFC for Near Field Communication</li>
 * </ul>
 * <p>Updated: 2017-08-29 Daniel Sauter/j.duran</p>
 */

import ketai.sensors.*;

KetaiSensor sensor;
float accelerometerX, accelerometerY, accelerometerZ;

void setup()
{
  fullScreen();  
  sensor = new KetaiSensor(this);
  sensor.start();
  orientation(LANDSCAPE);
  textAlign(CENTER, CENTER);
  textSize(displayDensity * 36);
}

void draw()
{
  background(78, 93, 75);
  text("Accelerometer: 
" +
    "x: " + nfp(accelerometerX, 1, 3) + "
" +
    "y: " + nfp(accelerometerY, 1, 3) + "
" +
    "z: " + nfp(accelerometerZ, 1, 3), 0, 0, width, height);
}

void onAccelerometerEvent(float x, float y, float z)
{
  accelerometerX = x;
  accelerometerY = y;
  accelerometerZ = z;
}

/*
	available sensors/methods

 * void onSensorEvent(SensorEvent e) - raw android sensor event <br />
 * void onAccelerometerEvent(float x, float y, float z, long a, int b): x,y,z force in m/s^2, a=timestamp(nanos), b=accuracy
 * void onAccelerometerEvent(float x, float y, float z):  x,y,z force in m/s2
 * void onOrientationEvent(float x, float y, flaot z, long a, int b):  x,y,z rotation in degrees, a=timestamp(nanos), b=accuracy
 * void onOrientationEvent(float x, float y, float z) : x,y,z rotation in degrees
 * void onMagneticFieldEvent(float x, float y, float z, long a, int b) : x,y,z geomag field in uT, a=timestamp(nanos), b=accuracy
 * void onMagneticFieldEvent(float x, float y, float z): x,y,z geomagnetic field in uT
 * void onGyroscopeEvent(float x, float y, float z, long a, int b):x,y,z rotation in rads/sec, a=timestamp(nanos), b=accuracy
 * void onGyroscopeEvent(float x, float y, float z): x,y,z rotation in rads/sec
 * void onGravityEvent(float x, float y, float z, long a, int b): x,y,z force of gravity in m/s^2, a=timestamp(nanos), b=accuracy
 * void onGravityEvent(float x, float y, float z): x,y,z rotation in m/s^s
 * void onProximityEvent(float d, long a, int b): d distance from sensor (typically 0,1), a=timestamp(nanos), b=accuracy
 * void onProximityEvent(float d): d distance from sensor (typically 0,1)
 * void onLightEvent(float d, long a, int b): d illumination from sensor in lx
 * void onLightEvent(float d): d illumination from sensor in lx
 * void onPressureEvent(float p, long a, int b): p ambient pressure in hPa or mbar, a=timestamp(nanos), b=accuracy
 * void onPressureEvent(float p): p ambient pressure in hPa or mbar
 * void onTemperatureEvent(float t, long a, int b): t temperature in degrees in degrees Celsius, a=timestamp(nanos), a=timestamp(nanos), b=accuracy
 * void onTemperatureEvent(float t): t temperature in degrees in degrees Celsius
 * void onLinearAccelerationEvent(float x, float y, float z, long a, int b): x,y,z acceleration force in m/s^2, minus gravity, a=timestamp(nanos), b=accuracy
 * void onLinearAccelerationEvent(float x, float y, float z): x,y,z acceleration force in m/s^2, minus gravity
 * void onRotationVectorEvent(float x, float y, float z, long a, int b): x,y,z rotation vector values, a=timestamp(nanos), b=accuracy
 * void onRotationVectorEvent(float x, float y, float z):x,y,z rotation vector values
 * void onAmibentTemperatureEvent(float t): same as temp above (newer API)
 * void onRelativeHumidityEvent(float h): h ambient humidity in percentage
  * void onSignificantMotionEvent(): trigger for when significant motion has occurred
 * void onStepDetectorEvent(): called on every step detected
 * void onStepCounterEvent(float s): s is the step count since device reboot, is called on new step
 * void onGeomagneticRotationVectorEvent(float x, float y, float z):
 * void onGameRotationEvent(float x, float y, float z):
 * void onHeartRateEvent(float r): returns current heart rate in bpm
*/

Code 3.11.9-1: Accelerometer

Verwendung von Sensoren mit Arduino
Using sensors with Arduino
Używanie czujników z Arduino

Bei Arduino Programmen und Schaltungen ist es ganz ähnlich: Zuerst sollte man mit einem kleinen Programm und einer kleinen Schaltung beginnen, bei der Sensordaten empfangen und auf dem Terminal am PC ausgegeben werden. Erst danach sollte man nach und nach den Rest des Programms entwickeln und unbedingt auch Zwischenschritte immer wieder testen.

For Arduino programs and circuits it is very similar: First you should start with a small program and a small circuit where sensor data is received and output on the terminal on the PC. Only then should you gradually develop the rest of the program and necessarily test intermediate steps again and again.

Dla programów i obwodów Arduino jest bardzo podobny: Najpierw powinieneś zacząć od małego programu i małego obwodu, w którym odbierane są dane czujnika i wyprowadzane na terminalu na PC. Tylko wtedy należy stopniowo rozwijać resztę programu i koniecznie ponownie testować etapy pośrednie.

Das folgende Arduino-Programm ist völlig ausreichend, um Sensorwerte anzusehen: Hier muß der Sensor an den Analog Eingang A0 angeschlossen sein.

The following Arduino program is quite sufficient to look at sensor values: Here, the sensor must be connected to the analog input A0.

Poniższy program Arduino wystarcza, aby przyjrzeć się wartościom czujników: Tutaj czujnik musi być podłączony do wejścia analogowego A0.

int sensor=0;
void setup() 
{
     Serial.begin(9600);
}

void loop() 
{
     sensor = analogRead(0);
     Serial.println(sensor);
     delay(200);
}

Code 3.11.9-2: sensorread

Sensor Curcuit (example with Sharp IR distance sensor)

Bild 3.11.9-1: Sensor Curcuit (example with Sharp IR distance sensor)