Jede Oxocard-Hardware verfügt über unterschiedliche Sensoren. Die Tabelle zeigt im Überblick, welche Werte jeweils verfügbar sind.
Funktion | Connect | Artwork/Galaxy | Science | Science+ |
getButton | ja | ja | ja | ja |
getButtons | ja | ja | ja | ja |
getAcceleration | - | ja | ja | ja |
getAccelerationXY | - | ja | ja | ja |
getTemperature | mit AIR | - | ja | ja |
getHumidity | mit AIR | - | ja | ja |
getHumidityAbsolute | mit AIR | - | ja | ja |
getPressure | - | - | ja | ja |
getAmbientRGB | - | - | ja | ja |
getAmbientIR | - | - | ja | ja |
getAmbientLux | - | - | ja | ja |
getCO2 | mit AIR | - | berechnet | ja |
getIAQ | mit AIR | - | ja | ja |
getTVOC | mit AIR | - | ja | ja |
getETOH | - | - | ja | - |
getVOC | mit AIR | - | - | ja |
getVOCIndex | mit AIR | - | - | ja |
getNOx | mit AIR | - | - | ja |
getNOxIndex | mit AIR | - | - | ja |
getMicrophoneAmplitude | - | - | ja | ja |
getMicrophoneDecibel | - | - | ja | ja |
getMicrophoneFrequency | - | - | ja | ja |
getTOF8x8 | mit ToF | - | - | ja |
getTOF4x4 | mit ToF | - | - | ja |
getTOF4x4()->int[16]
Nur Oxocard- Science+, Connect+ToF-Cartridge
Der STMicroelectronics VL53L5CX ist ein 8 x 8 Multizonen Time-of-Flight-Sensor (ToF). Damit lassen sich Tiefenbilder von bis zu 4m mit einer Auflösung von 64 Pixeln machen.
Die Anwendungsbereiche sind vielfältig. Man kann damit die Umgebung abtasten und ein 3D-Bild erzeugen, Gesten erkennen, Distanzen messen oder Bewegungsmelder programmieren.
const THRESHOLD_DISTANCE = 500 # in mm
def onDraw():
data = getTOF4x4()# reads the 64 (8x8) sensor data
clear()
for i in 16:
distance = data[i]
if distance < THRESHOLD_DISTANCE:
x = 48*(i/4)
y = 48*(i%4)
drawRectangle(24+x, 24+y, 48, 48)
update()
delay(5)
getTOF8x8()->int[64]
Nur Oxocard- Science+, Connect+ToF-Cartridge
Der STMicroelectronics VL53L5CX ist ein 8 x 8 Multizonen Time-of-Flight-Sensor (ToF). Damit lassen sich Tiefenbilder von bis zu 4m mit einer Auflösung von 64 Pixeln machen.
Die Anwendungsbereiche sind vielfältig. Man kann damit die Umgebung abtasten und ein 3D-Bild erzeugen, Gesten erkennen, Distanzen messen oder Bewegungsmelder programmieren.
const THRESHOLD_DISTANCE = 500 # in mm
def onDraw():
data = getTOF8x8()# reads the 64 (8x8) sensor data
clear()
for i in 8+1:
drawLine(24, 24+i*24, 240-24, 24+i*24)
drawLine(24+i*24, 24, 24+i*24, 240-24)
stroke(50,50,50)
fill(255,0,0)
for i in 64:
distance = data[i]
if distance < THRESHOLD_DISTANCE:
x = 24*(i/8)
y = 24*(i%8)
drawRectangle(24+x, 24+y, 24, 24)
update()
delay(5)
getNOxIndex()->float
Nur Oxocard-Science+, Connect+AIR-Cartridge
Gibt den aktuellen NOx-Index-Wert zwischen 0 und 500 zurück.
NOx steht für Stickoxidverbindungen, wie sie bei Rauch oder Feuer entstehen.
Diese Karte einhält den hochwertigen und sehr präzisen Sensirion SGP41-Sensor. Die Werte werden innert weniger Sekunden angezeigt.
Beispiel:
def onDraw():
v = getNOxIndex()
print(v)
delay(10000)
Dieses Beispiel gibt den Wert alle 10 Sekunden im Terminal aus.
Nähere Angaben zu dem Wert kann man dem Datenblatt entnehmen.
getNOx()->float
Nur Oxocard-Science+, Connect+AIR-Cartridge
Gibt den aktuellen NOx-Roh-Wert zurück.
NOx steht für Stickoxidverbindungen, wie sie bei Rauch oder Feuer entstehen.
Diese Karte einhält den hochwertigen und sehr präzisen Sensirion SGP41-Sensor. Die Werte werden innert weniger Sekunden angezeigt.
Beispiel:
def onDraw():
v = getNOx()
print(v)
delay(10000)
Dieses Beispiel gibt den Wert alle 10 Sekunden im Terminal aus.
Nähere Angaben zu dem Wert kann man dem Datenblatt entnehmen.
getVOCIndex()->float
Nur Oxocard-Science+, Connect+AIR-Cartridge
Gibt den aktuellen VOC-Index-Wert zwischen 0 und 500 zurück.
VOC steht für Volatile Organic Compounds und beschreibt die Menge an gas- und dampfförmigen Substanzen organischen Ursprungs in der Luft.
Diese Karte einhält den hochwertigen und sehr präzisen Sensirion SGP41-Sensor. Die Werte werden innert weniger Sekunden angezeigt.
Beispiel:
def onDraw():
v = getVOCIndex()
print(v)
delay(10000)
Dieses Beispiel gibt den Wert alle 10 Sekunden im Terminal aus.
Nähere Angaben zu dem Wert kann man dem Datenblatt entnehmen.
getVOC()->float
Nur Oxocard-Science+
Gibt den aktuellen VOC Roh-Wert zurück.
VOC steht für Volatile Organic Compounds und beschreibt die Menge an gas- und dampfförmigen Substanzen organischen Ursprungs in der Luft.
Diese Karte einhält den hochwertigen und sehr präzisen Sensirion SGP41-Sensor. Die Werte werden innert weniger Sekunden angezeigt.
Beispiel:
def onDraw():
tvoc = getVOC()
print(tvoc)
delay(10000)
Dieses Beispiel gibt den VOC-Wert alle 10 Sekunden im Terminal aus.
Nähere Angaben zu dem Wert kann man dem Datenblatt entnehmen. Der Hersteller empfiehlt für Messungen die Funktion getVOCIndex.
getHumidityAbsolute()->float
Nur Oxocard-Science, Science+, Connect+AIR-Cartridge
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:
getAmbientLux()->long
Nur Oxocard-Science, 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()->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()->int
Nur Oxocard-Science, 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()->byte
Nur Oxocard-Science, 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()->long
Nur Oxocard-Science, 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()->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()->float
Nur Oxocard-Science, 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 |
Oxocard Science: Beachte, dass der ZMOD4410-Sensor eine Aufwärmzeit von etwa 2 Minuten benötigt. In dieser Zeit wird immer -1 zurückgegeben.
Oxocard Science+: Diese Karte einhält den hochwertigen und sehr präzisen Sensirion SGP41-Sensor. Die Werte werden innert weniger Sekunden angezeigt.
Beispiel:
def onDraw():
tvoc = getTVOC()
print(tvoc)
delay(10000)
Dieses Beispiel gibt den TVOC-Wert alle 10 Sekunden im Terminal aus.
getIAQ()->float
Nur Oxocard-Science, 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 der Science-Karte eine Aufwärmzeit von etwa 2 Minuten benötigt. In dieser Zeit wird immer -1 zurückgegeben. Die Science+-Karte reagiert innert weniger Sekunden.
Beispiel:
def onDraw():
iaq = getIAQ()
print(iaq)
delay(10000)
Dieses Beispiel gibt den IAQ-Wert alle 10 Sekunden im Terminal aus.
getCO2()->float
Nur Oxocard-Science, Science+, Connect+AIR-Cartridge
Gibt den aktuellen CO2-Wert in ppm zurück.
Die Oxocard Science enthält den ZMOD4410-Sensor. Diese hat eine Aufwärmzeit von etwa 2 Minuten. In dieser Zeit wird immer -1 zurückgegeben. Der CO2-Wert wird bei diesem Sensor nicht direkt gemessen, sondern mit einem speziellen Algorithmus. Der Startwert ist immer 400ppm und ändert sich mit der Zeit. Werte unter 1000ppm sind gut und Werte unter 800ppm sind ausgezeichnet. Der Algorithmus wird besser, je länger gemessen wird (ab mehreren Stunden).
Die Oxocard Science + und die AIR-Cartridge verfügen über einen Sensirion-Sensor (SCD41). Dieser ist hochpräzise und liefert exakte Werte innert Sekunden.
Beispiel:
def onDraw():
co2 = getCO2()
print(co2)
delay(10000)
Dieses Beispiel gibt den CO2-Wert alle 10 Sekunden im Terminal aus.
getAmbientIR()->long
Nur Oxocard-Science, 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()->color
Nur Oxocard-Science, 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()->float
Nur Oxocard-Science, 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()->float
Nur Oxocard-Science, Science+, Connect+AIR-Cartridge
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()->float
Nur Oxocard-Science, Science+, Connect+AIR-Cartridge
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()->vector3D
Ermittelt die aktuellen Beschleunigungswerte in den drei Achsen x,y und z. Die Werte sind in 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()->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()->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()