Hallo zusammen,
ich möchte an meinen Arduino Nano ein SBC-OLED01 Display und einen RGB-Sensor, und zwar den APDS9960 anschließen.
Für beide devices habe ich schon jeweils einen eigenen Sketch geschrieben, funktioniert auch super.
Wenn ich aber beide gleichzeitig angeschlossen haben möchte, benötige ich ja, soweit ich weiß, einen I2C Bus, da beide über die Anschlüsse A4 und A5 (SDA und SCL) angeschlossen werden.
Mein Problem ist, dass ich nicht weiß, wie ich mit beiden devices gleichzeitig kommunizieren kann.
Ich habe einen sketch geschrieben, der auf beide devices gleichzeitig zugreift, jedoch kann ich immer nur mit dem device kommunizieren, welches innerhalb meines Sketches zuerst auftaucht.
Hier mein aktueller Sketch:
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_APDS9960.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_APDS9960 apds;
Adafruit_SSD1306 display(OLED_RESET);
enum {ein, aus};
int gruen = 2;
bool freigabe = ein;
void setup() {
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Adressierung beachten, hier 0x3C!
//enable color sensign mode
apds.enableColor(true);
}
//DEKLARATION ALLER MOEGLICHEN VARIABLEN
int i;
int countscrew = 0;
void loop() {
//VARIABLEN FÜR FARBE
uint16_t r, g, b, c;
//RGB SENSOR DATEN LADEN
while(!apds.colorDataReady()){
delay(5);
}
//START ANZEIGE
if(countscrew == 0){
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(4);
display.setCursor(5,0);
display.println("los");
display.display();
delay(1000);
}
else{}
//RGB WERTE VOM SENSOR BEKOMMEN
apds.getColorData(&r, &g, &b, &c);
delay(300);
//DISPLAY EINSTELLUNGEN
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(4);
//ANZEIGE TEXT
display.setCursor(35,0);
display.println(countscrew);
//ZEUG DAMIT ANZEIGE PASST
display.display();
display.clearDisplay();
if(countscrew == 30){
display.setTextSize(2);
display.setCursor(35,0);
display.println(countscrew);
display.setCursor(10,18);
display.println("W223 iO");
display.display();
}
if(countscrew == 32){
display.setTextSize(2);
display.setCursor(35,0);
display.println(countscrew);
display.setCursor(3,18);
display.println("V/Z 223 iO");
display.display();
}
if(countscrew == 10){
display.setTextSize(2);
display.setCursor(35,0);
display.println(countscrew);
display.setCursor(10,18);
display.println("V297 iO");
display.display();
}
else{}
delay(1000);
}
Was gerade passiert ist, dass das OLED display nicht das anzeigt, was angezeigt werden soll. Ich vermute, dass es daran liegt, dass der sketch ab der Zeile, in der die Daten vom RGB-Sensor geladen werden sollen, hängen bleibt.
Ich bin dankbar für eure Hilfe!
viele Grüße
Julia