Aus Oxoscript wird NanoPy - mehr Infos

Bibliotheken

AIR

Nur Oxocard-Connect mit AIR Cartridge

Das AIR Cartridge beinhaltet 3 Luftqualitäts-Sensoren von Sensirion: - SHT40 Temperatur- und Feuchtigkeits-Sensor - SCD40 CO2-Sensor - SGP41 VOC- und NOx-Sensor

Die AIR-Bibliothek stellt das AIR-Objekt zur verfügung.

Funktionen:

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

AIR.CO2()

Gibt den NOx-Index zurück. Dieser wird mit “Sensirion’s Gas Index”-Algorithmus berechnet und entspricht einem representativen Wert zwischen 1 und 500.
Beachte: Es dauert etwa 1 Minuten bis die Funktion Messwerte liefert.

AIR.NOxIndex()

Gibt den VOC-Index zurück. Dieser wird mit “Sensirion’s Gas Index”-Algorithmus berechnet und entspricht einem representativen Wert zwischen 1 und 500.
Beachte: Es dauert etwa 1 Minuten bis die Funktion Messwerte liefert.

AIR.VOCIndex()

image

Gibt die aktuelle Temperatur in °C zurück.

AIR.temperature()

Gibt die aktuelle Luftfeuchtigkeit in %RH zurück.

AIR.humidity()

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.

AIR.humidityAbsolute()

Gibt die aktuelle IAQ-Einstufung zurück. IAQ steht für Indoor Air Quality und nimmt normalerweise einen Wert zwischen 0 und 5 an:

AIR.IAQ()

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

Beispiel:

import air

setPrecision(3)
textFont(FONT_ROBOTO_24)

def onDraw():
    clear()
    drawText(10, 10, "CO2: " + AIR.CO2() + " ppm")
    drawText(10, 40, "NOxIdx: " + AIR.NOxIndex() + " / 500")
    drawText(10, 70, "VOCIdx: " + AIR.VOCIndex() + " / 500")
    drawText(10, 100, "IAQ: " + AIR.IAQ())
    drawText(10, 130, "temp: " + AIR.temperature() + " °C")
    drawText(10, 160, "humi: " + AIR.humidity() + " %RH")
    drawText(10, 190, "humiAbs: " + AIR.humidityAbsolute() + " g/m3")
    update()
    delay(100)

TOF

Nur Oxocard-Connect mit TOF Cartridge

Die TOF-Bibliothek stellt das TOF-Objekt zur verfügung.

Der “Time of Flight”-Sensor (TOF) ist ein Distanzsensor. Er misst die Distanz zu einem Objekt in einer Matrix (8x8 oder 4x4) und gibt die 64 oder 16 Werte in Millimeter zurück.

Funktionen:

Der TOF muss zuerst initialisiert werden. Die Initialisierung dauert beim ersten Mal etwa 10 Sekunden.

TOF.init()

Wenn nicht 8x8 mit 15Hz sondern 4x4 mit 60Hz Abtastung verwendet werden will, kann die set4x4() Funktion verwendet werden. Und zum Zurückwechseln set8x8().

TOF.set4x4()
TOF.set8x8()

Mit getData() werden die 64 oder 16 Werte gelesen und in das TOF.data-Array gespeichert.

TOF.getData()

Klassen-Variablen:

Die TOF-Klasse enthält zwei Variablen, welche beim Aufruf von getData() aktuallisiert werden.

Das TOF.data-Array enthält die gemessenen Distanzen in Millimeter.

TOF.data[64]

Das TOF.status-Array enthält den Status der einzelnen gemessenen Distanzen. Dabei entsprechen die Werte 5 und 9 einer gültigen Messung und alle anderen Werte einer ungültigen Messung.

TOF.status[64]

Beispiel:

import tof

TOF.init()
TOF.set4x4()

def onDraw():
    TOF.getData()
    for i in 16:
        print(TOF.data[i] + "mm (" + TOF.status[i] + ")")
    print("")

IO

Die IO-Bibliothek stellt das IO Objekt zur Verfügung, welches das Ansteuern von Hardware IOs vereinfacht.

Funktionen:

Setze mit writePin() ein IO entweder auf 0 (LOW) oder 1 (HIGH).

IO.writePin(pinid:byte, value:bool)

Bestimme mit setSampleRate() die Anzahl Messwerte für die Durchschnittsbildung bei ADC-Messungen (IO06 & IO07).

IO.setSampleRate(newSampleRate:int)

Mit readPin() kann der aktuelle Zustand (0 oder 1) eines IOs zurückgegeben werden.

IO.readPin(pinid:byte)->int

Beispiel #1:

import io

def onDraw():
    IO.writePin(C_PIN_01, 1)
    delay(500)
    IO.writePin(C_PIN_01, 0)
    delay(500)

Beispiel #2:

import io

IO.setSampleRate(1000)

def onDraw():
    if IO.readPin(C_PIN_01):
        IO.writePin(C_PIN_04, 1)
    else:
        IO.writePin(C_PIN_04, 0)
    if IO.readPin(C_PIN_06) > 200:
        IO.writePin(C_PIN_05, 1)
    else:
        IO.writePin(C_PIN_05, 0)
    delay(10)

Beachte:
C_PIN_06 und C_PIN_07 geben mit readPin() nicht einen digitalen Wert (1 oder 0) sondern einen analogen Wert (0 bis 4095) zurück.