Code: Alles auswählen
i2c = I2C(1, sda=Pin(22), scl=Pin(21))
apds9960=APDS9960_ALS_PROX.APDS9960(i2c) # apds9960 instanziieren
s = apds9960.als # ALS-Sensor s instanziieren
s.enableSensor() # Licht-Sensor aktivieren
s.redLightLevel bzw. s.greenLightLevel bzw. s.blueLightLevel
erhalten und mit einer print-Funktion auf dem Terminal ausgeben lassen. Will man statt der Rohwerte relative Farbwerte anzeigen lassen, benutzt man das Property rgb_tuple: print(s.rgb_tuple) zeigt dann die relativen Farbwerte als 3-Tupel an.
Besonders wirkungsvoll ist es, wenn man den Sensor mit verschiedenfarbigen LEDs beleuchtet, z. B. mit Hilfe eines RGB-LED-Moduls wie dem JY-MCU-Baustein.
Das folgende Programm beleuchtet den Sensor nacheinander mit rotem, grünen und blauen Licht und zeigt die gemessenen Lichtwerte am Terminal an.
Code: Alles auswählen
# APDS9960_ALS_colors_test_1.py (08.03.2023)
# Für APDS9960!
# 3 LEDs (R, G, B) beleuchten das APDS9960-Modul nacheinander.
# Wir benutzen ein RGB-LED-Modul (JY-MCU) mit eingebauten Vorwiderständen 100 bzw. 50 Ohm.
# Die jeweils gemessenen Farbwerte werden auf dem Terminal (als Rohwert und in %) ausgegeben.
#########################
# APDS9960 | TTGO #
# --------------------- #
# GND | G #
# VCC | 3V (3.3 V) #
# SDA | Pin22 #
# SCL | Pin21 #
#########################
# Blaue LED an Pin25 #
# Grüne LED an Pin26 #
# Rote LED an Pin27 #
#########################
from machine import Pin, I2C
from time import sleep_ms
import APDS9960_ALS_PROX
blue = Pin(25, Pin.OUT)
green = Pin(26, Pin.OUT)
red = Pin(27, Pin.OUT)
time = 1000 # Blink-Intervall in ms
#Init I2C
i2c = I2C(1, sda=Pin(22), scl=Pin(21))
apds9960=APDS9960_ALS_PROX.APDS9960(i2c) # apds9960 instanziieren
s = apds9960.als # ALS-Sensor s instanziieren
s.enableSensor() # Licht-Sensor aktivieren
s.eLightGain = 1 # Foto-Signal-Verstärkung (0..3); Standardwert: 0
print('eLightGain: ', s.eLightGain) # nur zur Kontrolle
print()
def messung():
sleep_ms(10)
'''while (apds9960.statusRegister & 0b0000_0001) == 0: # warten bis AVALID = 1
pass'''
abs_colors = (s.redLightLevel, s.greenLightLevel, s.blueLightLevel)
print('absolute Farbwerte:', abs_colors)
print('relative Farbwerte:', s.rgb_tuple)
red, green, blue = s.rgb_tuple
print()
while True:
print('R E D')
red.on()
messung()
sleep_ms(time)
red.off()
print('G R E E N')
green.on()
messung()
sleep_ms(time)
green.off()
print('B L U E')
blue.on()
messung()
sleep_ms(time)
blue.off()
Ein zugehöriges Programm sowie ein Video finden Sie im Anhang.
.