APDS-9960 - Sensor

Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: APDS-9960 - Sensor

Beitrag von Admin »

Egal, wann du Lust und Zeit hast. Nur der Samstag ist schlecht, da haben wir viel Besuch. Dadurch dass wir jetzt durchgeimpft sind und der Besuch auch, können wir uns wieder treffen. Da wird gegrillt, bis die Bude brennt. :oo:
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: APDS-9960 - Sensor

Beitrag von Admin »

Ich habe mich noch nicht drüber gemacht. Aber es wird schon die Tage.

Gute Nacht
Franz :(V):
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: APDS-9960 - Sensor

Beitrag von e69-fan »

Servus,

das ist überhaupt kein Problem. Ich bin mit der Reisebürokratie beschäftigt.
Da fährt man leichter nach Nordkorea als Italien hin- und zurück.

Viel Spaß beim Grillen und schönes Wetter.


:hng:
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: APDS-9960 - Sensor

Beitrag von Admin »

OK, ich habe mir auch schon das Programm zum Testen zurecht gemacht. Ich muss nur noch den Sensor anschließen, dann wirdd sich zeige was geht. Ich denke das wird heute Abend noch was. Ich habe ja in der Nacht immer noch 2 Std. in denen ich einiges machen kann. Oder am Wochenende, weil morgen ist natürlich keine Arbeit. Da habe ich ein Treffen mit Grillfleisch, Bier und ........ :(oo): :(o): :(o):
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: APDS-9960 - Sensor

Beitrag von Admin »

OK, ich habe es gerade mal in Betrieb genommen. Alles klar. Geht 1A
Hier mal der Code:

Code: Alles auswählen

/****************************************************************
  GestureTest.ino
  APDS-9960 RGB and Gesture Sensor
  Shawn Hymel @ SparkFun Electronics
  May 30, 2014
  https://github.com/sparkfun/APDS-9960_RGB_and_Gesture_Sensor

  Testet die Gestenerkennungsfähigkeiten des APDS-9960. Konfiguriert
  APDS-9960 über I2C und wartet auf Gestenereignisse. Berechnet die
  Wischrichtung (oben, unten, links, rechts) und zeigt diese an
  auf einer seriellen Konsole.

  Um eine NEAR-Geste auszuführen, halten Sie Ihre Hand
  weit über den Sensor und bewegen Sie ihn in die Nähe des Sensors (innerhalb von 2
  Zoll). Halte deine Hand dort für mindestens 1 Sekunde und bewege sie weg. 

  Um eine FAR-Geste auszuführen, halten Sie Ihre Hand innerhalb von 5 cm vom
  Sensor für mindestens 1 Sekunde und bewegen Sie ihn dann nach oben (aus
  Reichweite) des Sensors.

  Hardware-Anschlüsse:

  WICHTIG: Das APDS-9960 kann nur 3,3V aufnehmen!

  Arduino Pin APDS-9960 Board-Funktion

  3.3V         VCC              Power
  GND          GND              Ground
  A4           SDA              I2C Data
  A5           SCL              I2C Clock
  2            INT              Interrupt

  Ressourcen:
  Wire.h und SparkFun_APDS-9960.h einschließen

  Besonderheiten der Entwicklungsumgebung:
  Geschrieben in Arduino 1.0.5
  Getestet mit SparkFun Arduino Pro Mini 3.3V

  Dieser Code ist Bierware; wenn du mich siehst (oder irgendeinen anderen SparkFun
  Mitarbeiter) im Lokal, und Sie fanden unseren Code hilfreich, bitte
  kauf uns eine Runde!

  Wird unverändert verteilt; es wird keine gewährleistung gegeben.
****************************************************************/

#include <Wire.h>
#include <SparkFun_APDS9960.h>

// Pins
#define APDS9960_INT    2 // Muss ein Interrupt-Pin sein 

// Constants

// Globale Variablen
SparkFun_APDS9960 apds = SparkFun_APDS9960();
int isr_flag = 0;

void setup() {

  // Interrupt-Pin als Eingang setzen
  pinMode(APDS9960_INT, INPUT);

  // Initialize Serial port
  Serial.begin(9600);
  Serial.println();
  Serial.println(F("--------------------------------"));
  Serial.println(F("SparkFun APDS-9960 - GestureTest"));
  Serial.println(F("--------------------------------"));

  // Interrupt-Service-Routine initialisieren
  attachInterrupt(0, interruptRoutine, FALLING);

  //APDS-9960 initialisieren (I2C und Anfangswerte konfigurieren)
  if ( apds.init() ) {
    Serial.println(F("APDS-9960-Initialisierung abgeschlossen "));
  } else {
    Serial.println(F("Bei der APDS-9960-Initialisierung ist etwas schief gelaufen!"));
  }

  // Starten Sie die APDS-9960-Gestensensor-Engine
  if ( apds.enableGestureSensor(true) ) {
    Serial.println(F("Gestensensor läuft jetzt"));
  } else {
    Serial.println(F("Beim Init des Gestensensors ist ein Fehler aufgetreten!"));
  }
}

void loop() {
  if ( isr_flag == 1 ) {
    detachInterrupt(0);
    handleGesture();
    isr_flag = 0;
    attachInterrupt(0, interruptRoutine, FALLING);
  }
}

void interruptRoutine() {
  isr_flag = 1;
}

void handleGesture() {
  if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_UP:
        Serial.println("Hoch");
        break;
      case DIR_DOWN:
        Serial.println("Runter");
        break;
      case DIR_LEFT:
        Serial.println("Links");
        break;
      case DIR_RIGHT:
        Serial.println("Rechts");
        break;
      case DIR_NEAR:
        Serial.println("Nahe");
        break;
      case DIR_FAR:
        Serial.println("Fern");
        break;
      default:
        Serial.println("Nichts");
    }
  }
}
Jetzt mal noch mit dem LCD Display 4x20
.

Code: Alles auswählen

/****************************************************************
   GestenTest.ino
   APDS-9960 RGB- und Gestensensor
   Shawn Hymel @ SparkFun Electronics
   30. Mai 2014
   https://github.com/sparkfun/APDS-9960_RGB_and_Gesture_Sensor

   Testet die Gestenerkennungsfähigkeiten des APDS-9960. Konfiguriert
   APDS-9960 über I2C und wartet auf Gestenereignisse. Berechnet die
   Wischrichtung (oben, unten, links, rechts) und zeigt diese an
   auf einer seriellen Konsole.

   Um eine NEAR-Geste auszuführen, halten Sie Ihre Hand
   weit über den Sensor und bewegen Sie ihn in die Nähe des Sensors (innerhalb von 2
   Zoll). Halte deine Hand dort für mindestens 1 Sekunde und bewege sie
   Weg.
   Um eine FAR-Geste auszuführen, halten Sie Ihre Hand innerhalb von 5 cm vom
   Sensor für mindestens 1 Sekunde und bewegen Sie ihn dann nach oben (aus
   Reichweite) des Sensors.

   Hardware-Anschlüsse:

   WICHTIG: Das APDS-9960 kann nur 3,3V aufnehmen!

   Arduino Pin APDS-9960 Board-Funktion

  3.3V         VCC              Power
  GND          GND              Ground
  A4           SDA              I2C Data
  A5           SCL              I2C Clock
  2            INT              Interrupt

  Ressourcen:
  Wire.h und SparkFun_APDS-9960.h einschließen

  Besonderheiten der Entwicklungsumgebung:
  Geschrieben in Arduino 1.0.5
  Getestet mit SparkFun Arduino Pro Mini 3.3V

  Dieser Code ist Bierware; wenn du mich siehst (oder irgendeinen anderen SparkFun
  Mitarbeiter) im Lokal, und Sie fanden unseren Code hilfreich, bitte
  kauf uns eine Runde!

  Wird unverändert verteilt; es wird keine gewährleistung gegeben.
****************************************************************/

#include <Wire.h>
#include <SparkFun_APDS9960.h>
#include <LiquidCrystal_I2C.h> // LCD Display
// Die LCD-Adresse Uno 0x3f for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address

// Pins
#define APDS9960_INT    2 // Muss ein Interrupt-Pin sein 
#define LED_PIN        13 // LED zur Anzeige von Interrupt

// Constants

// Globale Variablen
SparkFun_APDS9960 apds = SparkFun_APDS9960();
int isr_flag = 0;

void setup() {

  // Interrupt-Pin als Eingang setzen
  pinMode(APDS9960_INT, INPUT);

  // Initialize Serial port
  Serial.begin(9600);
  lcd.begin(20, 4);  // initialisierung der LCD Displays für 20 chars 4 lines, turn on backlight
  lcd.backlight();
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(F("===================="));
  lcd.setCursor(0, 1);
  lcd.print(F(" APDS-9960 - Gesten"));
  lcd.setCursor(0, 2);
  lcd.print(F("===================="));

  // Interrupt-Service-Routine initialisieren
  attachInterrupt(0, interruptRoutine, FALLING);

  //APDS-9960 initialisieren (I2C und Anfangswerte konfigurieren)
  if ( apds.init() ) {
    Serial.println(F("APDS-9960-Initialisierung abgeschlossen "));
  } else {
    Serial.println(F("Bei der APDS-9960-Initialisierung ist etwas schief gelaufen!"));
  }

  // Starten Sie die APDS-9960-Gestensensor-Engine
  if ( apds.enableGestureSensor(true) ) {
    Serial.println(F("Gestensensor läuft jetzt"));
  } else {
    Serial.println(F("Beim Init des Gestensensors ist ein Fehler aufgetreten!"));
  }
}

void loop() {
  if ( isr_flag == 1 ) {
    detachInterrupt(0);
    handleGesture();
    isr_flag = 0;
    attachInterrupt(0, interruptRoutine, FALLING);
  }
}

void interruptRoutine() {
  isr_flag = 1;
}

void handleGesture() {
  if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_UP:
        lcd.setCursor(0, 3);
        lcd.print(F("     nach Oben     "));
        break;
      case DIR_DOWN:
        lcd.setCursor(0, 3);
        lcd.print(F("     nach Unten    "));
        break;
      case DIR_LEFT:
        lcd.setCursor(0, 3);
        lcd.print(F("     nach Links    "));
        break;
      case DIR_RIGHT:
        lcd.setCursor(0, 3);
        lcd.print(F("     nach Rechts   "));
        break;
      case DIR_NEAR:
        lcd.setCursor(0, 3);
        lcd.print(F("     nach Hinten   "));
        break;
      case DIR_FAR:
        lcd.setCursor(0, 3);
        lcd.print(F("     nach Vorne    "));
        break;
      default:
        lcd.setCursor(0, 3);
        lcd.print(F("   Nichts erkannt  "));
    }
  }
}
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: APDS-9960 - Sensor

Beitrag von Admin »

Ich habe gerade meine drei Sensoren bekommen. Die haben mit dem I2C Scanner die selben I2C Adressen, ich habe erst auf 3,3 Volt versucht, dann auf 5 Volt, weil die ja auch 5 Volt können sollten. Aber die gehen gar nicht. Egal welche Spannung. Die Software sagt dass er jetzt funktioniert, aber er tut nichts :eek: Alle drei das selbe. Die sind schön klein, also etwa die halbe Platinengröße von den deinen, aber wenn sie nichts tun, hilft mir das auch nichts :O:
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: APDS-9960 - Sensor

Beitrag von Admin »

Soooo, meinen Geburtstag habe ich gut überstanden. :(V): Naja, nur etwas vollgefressen vielleicht :hng: Das Wetter hatte zum Grillen eine schöne Regenpause eingelegt. So konnten wir alles schön fertiggrillen und gegessen haben wir drin. Mit dem Alk habe ich es auch nicht übertrieben, also alles gut :(oo):

Ich habe jetzt gerade mal noch den I2C Bus von meinen Sensoren gemessen. 10k von SCL und SDA zum VCC. Das ist der selbe Wert wie der von deinem funktionierenden Sensor. Morgen schaue ich mal mit dem Oszi wie es am Bus ausschaut. Heute habe ich keine Lust mehr. Bin schon ganz schön Müde :(o):

Also dann, servus
Franz
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: APDS-9960 - Sensor

Beitrag von e69-fan »

Hallo Franz, nachträglich alles Gute zu Deinem Geburtstag,
Soooo, meinen Geburtstag habe ich gut überstanden.
Hoffentlich nicht so, aber Ihr seid ja geimpft.

Grüße und Glückwünsche von uns beiden
Dateianhänge
OIP.jpg
OIP.jpg (18.4 KiB) 948 mal betrachtet
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: APDS-9960 - Sensor

Beitrag von Admin »

Ja, wir sind durchgeimpfter Haushalt. Auch Sandra und Olli.

Bin mit 2kg mehr !! aus dem Geburtstag raus gekommen :hng: ......aber ich arbeite heute schon wieder daran dass das ohne folgen bleibt :(oo):

Ich faule Socke habe heute meine Sensoren noch nicht mit dem Oszi kontrolliert. Ich denke nicht, dass alle meine drei Sensoren Müll sind, sondern dass der I2C Hi/Lo Pegel nicht passt. Aber Herr von faule Socke hatte noch keine Lust dafür eine Bestätigung zu erarbeiten. Ich habe noch immer Geburtstag :(o): :(o):
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: APDS-9960 - Sensor

Beitrag von Admin »

Satz mit x, was wohl nix. :sad:
Der Signalpegel auf I2C ist der selbe, nur dass diese Dinger wirre Signale mit Dauerfeuer senden. Der funkionierende setzt seinen Datensatz ab und alles ist gut. Wenn ich wieder vorbei wische, wieder einen Satz, und wieder ist alles gut.

Alles klar. Wo hast du deine bestellt? Da ich nicht wieder Müll bestellen will, hole ich sie da, wo du deine her hast. Die funktionieren ja, wenn man nicht vergisst sie mit 3 Volt zu versorgen. Bei meinem Lieferanten habe ich Rücksendung und Rückzahlung beantragt. Mal schauen wie das läuft.

Franz :(o):
Antworten

Zurück zu „Hardware / Schaltungstechnik“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast