Aus Raspberry Pi Geek 08/2018

I2C-Workshop, Teil 20: APDS-9960 (Seite 2)

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.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben