Hi guys,
I am trying to run a sketch on my Due to control 2 OLEDs - later 12.
On my Arduino Mega the Sketch works fine, but on the Arduino Due it doesn't work.
Only the display I define at first work. It seems so that all commands send to the first display.
Hallo Leute,
Ich versuche einen Sketch auf dem Due zum laufen zu bekommen um 2 und mehr OLEDs zu steuern.
Auf dem Mega funktioniert der Test Sketch ohne Probleme, aber auf dem Due geht nur ein Display an. Und zwar immer das mit der Anstöße welches ich zuerst anspreche. Alle Befehle egal auf welches Display gesendet gehen dann immer zum erstangespeochenden Display
Wir sind hier im deutschen Teil des Forums, somit reicht es, wenn du deine Post auch in deutsch schreibst.
Setze deinen Sketch bitte direkt ins Forum und verwende dazu Code-Tags.
Das geht mit der Schaltfläche </> oben links im Editorfenster.
Dann können alle User den Sketch lesen.
Riecht doch so, daß der MUX nicht umschaltet - wenn Dem die Pegel nicht reichen, schaltet Der nicht (mehr?) um.
Sobald ein Display was anzeigt, geht vll. die Spannung in die Knie und der MUX hat keine Lust mehr.
Du solltest dir mal das Datenblatt ansehen, für welche Spannung das Display spezifiziert ist.
Nicht einfach alles an 5Volt betreiben.
Die Pins vom Due sind nur 3,3V und du kannst dann Probleme haben, wenn der Rest dann 5 Volt liefert.
Bis zum zerstören des Due.
Der Mega kann ggf. einfach mehr Strom liefern?
Klar kann auch der Due einen Schuss haben - aber Das geht eher in die Richtung: Jammern auf hohem Niveau.
Viel wahrscheinlicher ist, daß der Due die Befehle von der Fehlerquelle bekommt
Noch nicht im Besitz eines Due.
So, habe mir das mal genauer angeschaut....
Mit nur Wire funktioniert der Multiplexer perfekt.
Problem 1:
Die U8glib.h nutzt nicht Wire.
Kommt sich offenbar damit sogar ins Gehege.
So versagt die Multiplexer Kanalumschaltung. mit dem Fehler 2
Problem 2:
Auch den Multiplexer weg zu lassen, hat keinen Erfolg.
Bei der Verwendung von U8G_I2C_OPT_DEV_1 oder U8G_I2C_OPT_DEV_0 gewinnt der jeweils letzte Eintrag und damit landet alles auf einem Display
Offensichtlich ist die Lib nicht für DualDisplays geeignet.
Hier mal ein I2C Scanner, der alle Känale des Multiplexers untersucht.
Der basiert auf Wire und funktioniert somit mit dem DUE und dem Mega oder UNO
Die gleiche Umschaltroutine versagt, sobald deine Displays nicht nur dranstecken , sondern auch benutzt werden.
Mit dem dir schon bekannten Fehler 2
Beweis 2:
Wirf alles was Wire heißt aus deinem Programm.
Und das Display tuts weiterhin
Versuchs mal mit der u8g2 Library, statt der U8glib. Das habe ich noch nicht getestet.
Soweit ich das erkennen kann basiert diese auf Wire, und könnte somit problemlos funktionieren.
#include <Wire.h>
#define TCAADDR 0x70
void tcaselect(uint8_t i) {
if (i > 7) return;
Wire.beginTransmission(TCAADDR);
Wire.write(1 << i);
Wire.endTransmission();
}
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
byte tcakanal = 0;
void loop()
{
byte error, address;
int nDevices;
tcaselect(tcakanal);
Serial.print("Scanning... TCA Kanal ");
Serial.println(tcakanal);
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknown error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(1000); // wait seconds for next scan
tcakanal++;
tcakanal &= 0b111;
}
Caombie vielen Dank für den Sketch. Es wird auf jeder Adresse ein Display gefunden. Ich werde es heute abend mal mit der anderen Lib versuchen und mich dann melden.
Soweit alles dann erstmal einen schönen Samstag - ich hoffe das Wetter ist bei euch auch so gut
Leider auch mit der Library das selbe bild. Aud dem Due wechseln die Bilder abwechselnd auf dem selben Display und auf dem Mega laufen die beiden Displays.