Damit das Programm fehlerfrei arbeitet, müssen Sie die unterschiedlichen Farbkanäle miteinander abgleichen: Jede Lichtquelle erzeugt ein etwas anderes Licht, die Sensoren zeigen sich für die einzelnen Farben unterschiedlich empfindlich. Auch der Abstand zwischen Sensor und Lichtquelle beeinflusst die Messwerte.
Für den Abgleich aktivieren Sie in Listing 3 zunächst die drei auskommentierten Zeilen 33 bis 35. Danach setzen Sie alle Korrekturfaktoren auf 100 und starten das Programm. Sie erhalten daraufhin unterschiedliche Werte für die einzelnen Farbkanäle. Das Ziel des Abgleichs: Die Resultate für die drei Farben sollen bei weißem Licht möglichst alle denselben Wert annehmen. Passen Sie also nach dem ersten Prüflauf die Faktoren an, starten Sie das Programm erneut, und beginnen Sie gegebenenfalls von vorn, bis alles passt. Es hilft, zum Abgleich die Division durch 1000 in den Berechnungszeilen auszukommentieren.
Sobald Sie gut funktionierende Korrekturfaktoren gefunden haben, kommentieren Sie die drei Codezeilen wieder aus und können nun den Gummibärchensensor testen. Allerdings gibt es keine blauen Gummibären (Anm. d. Red.: siehe Kasten “Käpt’n Blaubär”). Als Ersatz können Sie beispielsweise eine durchscheinende Stiftkappe verwenden.
Käpt’n Blaubär
Wie die mit den Produkten einer bekannten Bonner Süßwarenfirma äußerst vertraute Gattin des Chefredakteurs auf Befragen anmerkte, gibt es im Gegensatz zur Annahme des Autors sehr wohl blaue Gummibärchen, die besagtes Unternehmen traditionell zu jeder Fußballweltmeisterschaft in einer Sonderedition (“Fan-tasia”) anbietet [4]. Zumindest im Sommer 2018 haben Sie also gute Chancen, auch die blaue Sensorkomponente des APDS-9960 mit hochwertigen Gelatineprodukten testen zu können. Diese bieten außerdem anders als die vom Autor ersatzhalber vorgeschlagenen Stiftkappen appetitlichere Zweitverwertungmöglichkeiten. Die nächste passende Testmöglichkeit ergibt sich dann voraussichtlich erst wieder Mitte 2022. (jlu)
Falls Sie Probleme beim Abgleich der Werte haben, kann das an einer zu schwachen oder zu starken Lichtquelle liegen. Der APDS-9960 ermöglicht eine Verstärkung für den Farbsensor über die Bits 0 und 1 im Register 0x8f. Möchten Sie den Gummibärchenensensor in Aktion sehen, finden Sie dazu ein Video [2] auf Youtube.
Listing 3
// APDS-9960.go
package main
import (
"fmt"
"gobot.io/x/gobot/drivers/i2c"
"gobot.io/x/gobot/sysfs"
"time"
)
func main() {
var red,green,blue uint16
bus,_ := sysfs.NewI2cDevice("/dev/i2c-1")
device := i2c.NewConnection(bus,0x39)
defer device.Close()
device.WriteByteData(0x8f,0x01)
device.WriteByteData(0x80,0x03)
redc=100
greenc=166
bluec=231
for {
redl,_ := device.ReadByteData(0x96)
redh,_ := device.ReadByteData(0x97)
greenl,_ := device.ReadByteData(0x98)
greenh,_ := device.ReadByteData(0x99)
bluel,_ := device.ReadByteData(0x9a)
blueh,_ := device.ReadByteData(0x9b)
red=((uint16(redh)<<8)+uint16(redl)*redc)/1000
green=((uint16(greenh)<<8)+uint16(greenl)*greenc)/1000
blue=((uint16(blueh)<<8)+uint16(bluel)*bluec)/1000
// --- Farbabgleich -------------------
// fmt.Printf("red Value:%d\n",red)
// fmt.Printf("green Value:%d\n",green)
// fmt.Printf("blue Value:%d\n",blue)
// --- Ende Farbabgleich --------------
if (red>green&&red>blue) {fmt.Printf("RED\n")}
if (green>red&&green>blue) {fmt.Printf("GREEN\n")}
if (blue>green&&blue>red) {fmt.Printf("BLUE\n")}
time.Sleep(1 * time.Second)
}
}
Fazit
Der APDS-9960 ist ein wirklich interessanter und vielseitiger Sensor. Er vereint quasi vier unterschiedliche Anwendungsfälle – die Erkennung von Farben, Annäherung, Bewegungen und der Umgebungshelligkeit – in einem Gehäuse. Das macht ihn für dem Bastler so interessant.
Der APDS-9960 ein ziemlich komplexer Sensor; Sie sollten sich also etwas Zeit nehmen, um seine Funktionsweise zu verstehen. Auf Github finden Sie eine Bibliothek [3] für den Arduino, die einfache Aufrufmöglichkeiten für den APDS-9960 bereitstellt. Mit etwas Geschick lassen sich diese auch für den Raspberry Pi anpassen.
Der Autor
Martin Mohr entwickelte schon in früher Jugend eine Vorliebe für alles, was blinkt. Nach einer Ausbildung zum Elektroniker und einem Informatikstudium programmierte er überwiegend Java-Applikationen. Mit dem RasPi erwachte die alte Liebe zur Elektronik wieder.
Infos
- Datenblatt APDS-9960: https://docs.broadcom.com/docs/AV02-4191EN
- Video des Sensors: https://youtu.be/GNjVjgZQO5Q
- Bibliothek für den APDS-9960: https://github.com/sparkfun/APDS-9960_RGB_and_Gesture_Sensor
- Quelle für blaue Gummibärchen: https://onlineshop.haribo.com/haribo/fussball-fieber/





