Aus Oxoscript wird NanoPy - mehr Infos

Sensor-Funktionen

getHumidityAbsolute

  getHumidityAbsolute()->float

Nur Oxocard-Science

Gibt die aktuelle absolute Luftfeuchtigkeit in g/m^3 zurück. Dieser Wert gibt die Menge an Wasserdampf (Feuchtigkeit) in der Luft an, unabhängig von der Temperatur.

Die maximale absolute Luftfeuchtigkeit von warmer Luft bei 30°C beträgt etwa 30g Wasserdampf.
Die maximale absolute Luftfeuchtigkeit von kalter Luft bei 0°C beträgt ca. 5 g Wasserdampf.

Die absolute Luftfeuchtigkeit wurde mit der folgenden Formel berechnet:

image (Quelle)

getAmbientLux

  getAmbientLux()->long

Nur Oxocard Science

Gibt die Lichtintensität in Lux zurück.

Lux Flächen
0,0001 Mondloser, bedeckter Nachthimmel (Sternenlicht)
0.002 Mondloser, klarer Nachthimmel mit Luftglühen
0.05-0.3 Vollmond in einer klaren Nacht
3.4 Dunkelgrenze der bürgerlichen Dämmerung bei klarem Himmel
20-50 Öffentliche Bereiche mit dunkler Umgebung
50 Familienwohnzimmerbeleuchtung (Australien, 1998)
80 Bürogebäude Flur/Toilettenbeleuchtung
100 Sehr dunkler, bedeckter Tag
150 Bahnsteig eines Bahnhofs
320-500 Bürobeleuchtung
400 Sonnenaufgang oder Sonnenuntergang an einem klaren Tag.
1000 Tag mit Überstrahlung; typische TV-Studiobeleuchtung
10'000–25'000 Volles Tageslicht (keine direkte Sonne)
32'000–100'000 Direktes Sonnenlicht

getAccelerationXY

  getAccelerationXY()->vector

Gleich wie die getAcceleration()-Funktion, jedoch ohne die Z-Achse.

Der Rückgabewert ist vom Typ vector. Diese Klasse enthält zwei Objektvariablen x und y die vom Typ float sind.

v:vector
v = getAccelerationXY()

getMicrophoneFrequency

  getMicrophoneFrequency()->int

Nur Oxocard-Science

Gibt die aktuell dominanteste Frequenz in Hz zurück.

Die Frequenz wird mit Hilfe der Fast Fourier Transformation (fft) berechnet. Mögliche Werte sind: 250Hz, 375Hz, 500Hz, …, 15375Hz

getMicrophoneDecibel

  getMicrophoneDecibel()->byte

Nur Oxocard-Science

Gibt den aktuellen Geräuschpegel als Byte-Wert in Dezibel zurück.

Der Geräuschpegel wird anhand der Mikrofon-Amplitude berechnet:

noise = 20 * log10(micAmp) - 20  

Beispiel:

def onDraw():
    db = getMicrophoneDecibel()
    h = map(db, 0, 150, 0, 255)
    clear()
    fill(255,255,255)
    drawRectangle(110, 240-h, 20, 240)
    update()

Dieses Beispiel zeichnet einen Balken auf dem Display, dessen Höhe vom aktuellen Geräuschpegel abhängt. Puste auf das Mikrofon oder decke es ab, um die Wirkung zu sehen.

getMicrophoneAmplitude

  getMicrophoneAmplitude()->long

Nur Oxocard-Science

Gibt die aktuell dominanteste Mikrofonamplitude als Long-Wert zurück.

Die Amplitude wird mit Hilfe der Fast Fourier Transformation (fft) berechnet.

Beispiel:

def onDraw():
    amp = getMicrophoneAmplitude()
    h = map(amp, 0, 50000, 0, 255)
    clear()
    fill(255,255,255)
    drawRectangle(110, 240-h, 20, 240)
    update()

Dieses Beispiel zeichnet einen Balken auf dem Display mit einer Höhe, die von der Mikrofonamplitude abhängt. Puste auf das Mikrofon, um die Wirkung zu sehen.

getETOH

  getETOH()->float

Nur Oxocard-Science

Gibt den aktuellen ETOH-Wert in ppm zurück.

ETOH (bzw. Ethanol) ist eine flüchtige, brennbare, farblose Flüssigkeit und gehört zu den organischen chemischen Verbindungen.

Zu beachten ist, dass der ZMOD4410-Sensor eine Aufwärmzeit von etwa 2 Minuten benötigt. In dieser Zeit wird immer -1 zurückgegeben.

Beispiel:

def onDraw():
    etoh = getETOH()
    print(etoh)
    delay(10000)

Dieses Beispiel gibt den ETOH-Wert alle 10 Sekunden im Terminal aus.

getTVOC

  getTVOC()->float

Nur Oxocard-Science

Gibt den aktuellen TVOC in mg/m3 zurück.

TVOC steht für Total Volatile Organic Compounds und beschreibt die Menge an gas- und dampfförmigen Substanzen organischen Ursprungs in der Luft.

Als Referenz:

Wert Zustand
<0.3 Sehr gut
0.3-1.0 Gut
1.00-3.00 Mittel
3.0-10.0 Schlecht
>10.0 Sehr schlecht

Beachte, dass der ZMOD4410-Sensor eine Aufwärmzeit von etwa 2 Minuten benötigt. In dieser Zeit wird immer -1 zurückgegeben.

Beispiel:

def onDraw():
    tvoc = getTVOC()
    print(tvoc)
    delay(10000)

Dieses Beispiel gibt den TVOC-Wert alle 10 Sekunden im Terminal aus.

getIAQ

  getIAQ()->float

Nur Oxocard-Science

Gibt die aktuelle IAQ-Einstufung zurück.

IAQ steht für Indoor Air Quality und nimmt normalerweise einen Wert zwischen 0 und 5 an:

Wert Level Zustand
≤1,99 1 Sehr gut
2.00-2.99 2 Gut
3.00-3.99 3 Mittel
4.00-4.99 4 Schlecht
≥5.00 5 Sehr schlecht

Beachten Sie, dass der ZMOD4410-Sensor eine Aufwärmzeit von etwa 2 Minuten benötigt. In dieser Zeit wird immer -1 zurückgegeben.

Der IAQ-Wert wird nicht direkt gemessen, sondern mit einem speziellen Algorithmus von Renesas berechnet.

Beispiel:

def onDraw():
    iaq = getIAQ()
    print(iaq)
    delay(10000)

Dieses Beispiel gibt den IAQ-Wert alle 10 Sekunden im Terminal aus.

getCO2

  getCO2()->float

Nur Oxocard-Science

Gibt den aktuellen CO2-Wert in ppm zurück.

Beachte, dass der ZMOD4410-Sensor eine Aufwärmzeit von etwa 2 Minuten benötigt. In dieser Zeit wird immer -1 zurückgegeben.

Der CO2-Wert wird nicht direkt gemessen, sondern mit einem speziellen Algorithmus von Renesas berechnet. Der Startwert ist immer 400ppm und ändert sich mit der Zeit. Werte unter 1000ppm sind gut und Werte unter 800ppm sind ausgezeichnet.

Beispiel:

def onDraw():
    co2 = getCO2()
    print(co2)
    delay(10000)

Dieses Beispiel gibt den CO2-Wert alle 10 Sekunden im Terminal aus.

getAmbientIR

  getAmbientIR()->long

Nur Oxocard-Science

Liefert eine Zahl je nach Stärke der Infrarotstrahlung (Wertebereich 0 bis 2^18).

Da die meisten Fernbedienungen von TV’s mit Infrarot kommunizieren, lassen sich diese Signale mit einem einfachen Programm sichtbar machen:

def onDraw():
    ir = getAmbientIR()
    clear()
    textFont(FONT_ROBOTO_32)
    drawText(10,10,ir)
    update()

getAmbientRGB

  getAmbientRGB()->color

Nur Oxocard-Science

Gibt das aktuelle Umgebungslicht als rote, grüne und blaue (RGB) Farbwerte zurück. Das Umgebungslicht wird mit dem APDS-9251 Sensor gemessen und so berechnet, dass es in den 0… 255 Bereich passt.

Beispiel:

def onDraw():
    ambient:color
    ambient = getAmbientRGB()
    print("R = " + ambient.r + "; G = " + ambient.g + "; B = " + ambient.b)
    delay(5000)

Dieses Beispiel gibt die gemessenen RGB-Farben alle 5 Sekunden im Terminal aus.

getPressure

  getPressure()->float

Nur Oxocard-Science

Gibt den aktuellen barometrischen Druck in mbar zurück. Der barometrische Druck wird mit dem Sensor MS560702BA03-50 mit einer Genauigkeit von ±1,5 mbar gemessen.

Beispiel:

def onDraw():
    pres = getPressure()
    print(pres)
    delay(10000)

Dieses Beispiel gibt den gemessenen Luftdruck alle 10 Sekunden im Terminal aus.

getHumidity

  getHumidity()->float

Nur Oxocard-Science

Gibt die aktuelle Luftfeuchtigkeit in %RH zurück. Die Luftfeuchtigkeit wird mit dem SHTC3-Sensor mit einer Genauigkeit von ±2 %RH gemessen.

Da Feuchtesensoren im Allgemeinen einen erheblichen Offset haben können, wird empfohlen, den Offset über das Einstellungsmenü der Oxocard-Science zu kalibrieren.

Beispiel:

def onDraw():
    humi = getHumidity()
    print(humi)
    delay(10000)

Dieses Beispiel gibt die gemessene Luftfeuchtigkeit alle 10 Sekunden im Terminal aus.

getTemperature

  getTemperature()->float

Nur Oxocard-Science

Gibt die aktuelle Temperatur als float in °C zurück. Die Temperatur wird mit dem SHTC3-Sensor mit einer Genauigkeit von ±0,2 °C gemessen.

Da Temperatursensoren im Allgemeinen einen erheblichen Offset haben können, wird empfohlen, den Offset über das Einstellungsmenü auf der Oxocard-Science zu kalibrieren.

Beispiel:

def onDraw():
    temp = getTemperature()
    print(temp)
    delay(10000)

Dieses Beispiel gibt die gemessene Temperatur alle 10 Sekunden im Terminal aus.

getAcceleration

  getAcceleration()->vector3D

Ermittelt die aktuellen Beschleunigungswerte in den drei Achsen x,y und z. Die Werte sind in Milli-G (G ~ 9.81m/s^2). Je nach Richtung werden die Werte >0 oder <0 angegeben.

Der Rückgabewert ist von Typ vector3D. Diese Klasse enthält drei Objektvariablen x,y, und z, die vom Typ float sind.

Beispiel:

def onDraw():
    push()
    background(0,0,0)
    stroke(255,255,255)
    v:vector3D
    v = getAcceleration()
    v1 = vector(x=v.x,y=v.y)
    v1.mulScalar(90)
    translate(120,120)
    noStroke()
    fill(100,100,100)
    drawCircle(0,0,28)
    noFill()
    stroke(255,255,255)
    drawCircle(-v1.x,v1.y,30)
    update()
    delay(50)
    pop()

Dieses Beispiel zeichnet eine Wasseruhr. Wenn die Karte schön horizontal ausgerichtet ist, werden die beiden Kreise zentriert.

getButton

  getButton()->byte

Prüft, ob ein Button gedrückt wurde.

0 = kein Button
1 = mitte
2 = auf
3 = rechts
4 = runter
5 = links

b = getButton()

Mit dieser Funktion kann nur jeweils EIN Button abgefragt werden.

getButtons

  getButtons()->buttons

Prüft, ob mehrere Buttons gedrückt wurden.

Die Funktion erzeugt ein Objekt der Klasse buttons.

Die Klasse ist hat folgende Objektvarianblen: up, down, left, right, middle. Diese Werte haben alle den Typ “bool”, d.h. können true oder false sein.

Mit dieser Funktion können mehrere Buttonclicks gleichzeitig abgefragt werden.

def onDraw():
    background(0,0,0)
    b:buttons = getButtons()
    if b.left and b.right:
        background(255,0,0)
    update()

(Der Bildschirm leuchtet nur rot, wenn links und rechts gleichzeitig gedrückt wird.)