Ich habe einen Problem: Mein(Adafruit 7-Segmentdisplay mit I2C Display) funktioniert, wie im Titel, nur manchmal.
Die beiden I2C Pins habe ich richtig angeschlossen, das habe ich schon mehrere male nachgeprüft. Zum testen habe ich das Testprogramm der Library hochgeladen:
/***************************************************
This is a library for our I2C LED Backpacks
Designed specifically to work with the Adafruit LED 7-Segment backpacks
----> http://www.adafruit.com/products/881
----> http://www.adafruit.com/products/880
----> http://www.adafruit.com/products/879
----> http://www.adafruit.com/products/878
These displays use I2C to communicate, 2 pins are required to
interface. There are multiple selectable I2C addresses. For backpacks
with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks
with 3 Address Select pins: 0x70 thru 0x77
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution
****************************************************/
#include <Wire.h> // Enable this line if using Arduino Uno, Mega, etc.
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
Adafruit_7segment matrix = Adafruit_7segment();
void setup() {
#ifndef __AVR_ATtiny85__
Serial.begin(9600);
Serial.println("7 Segment Backpack Test");
#endif
matrix.begin(0x70);
}
void loop() {
// try to print a number thats too long
matrix.print(10000, DEC);
matrix.writeDisplay();
delay(500);
// print a hex number
matrix.print(0xBEEF, HEX);
matrix.writeDisplay();
delay(500);
// print a floating point
matrix.print(12.34);
matrix.writeDisplay();
delay(500);
// print with print/println
for (uint16_t counter = 0; counter < 9999; counter++) {
matrix.println(counter);
matrix.writeDisplay();
delay(10);
}
// method #2 - draw each digit
uint16_t blinkcounter = 0;
boolean drawDots = false;
for (uint16_t counter = 0; counter < 9999; counter ++) {
matrix.writeDigitNum(0, (counter / 1000), drawDots);
matrix.writeDigitNum(1, (counter / 100) % 10, drawDots);
matrix.drawColon(drawDots);
matrix.writeDigitNum(3, (counter / 10) % 10, drawDots);
matrix.writeDigitNum(4, counter % 10, drawDots);
blinkcounter+=50;
if (blinkcounter < 500) {
drawDots = false;
} else if (blinkcounter < 1000) {
drawDots = true;
} else {
blinkcounter = 0;
}
matrix.writeDisplay();
delay(10);
}
}
alle drei benötigen Bibliotheken habe ich installiert. Wenn ich denn mal das Glück habe, das es funktioniert, dann funktioniert es einwandfrei. Meistens jedoch leuchtet keine einzige LED. Übrigens habe ich bereits schoneinmal so ein Display gekauft (andere Anzeigefarbe, sonst das selbe) und dies habe ich zurück gesendet, da nichts funktionierte und die LEDs nur geflackert haben. An diesem Display habe ich den Fehler nicht.
In den Bewertungen des Produkts (ich habe es auf Amazon gekauft) hatte anscheinend niemand das selbe Problem, deshalb denke ich mal das es an mir liegt.
Ich habe schon gelesen, das man Pull-Up Widerstände nutzen soll, jedoch sind erstens auf dem I2C Backpack welche verbaut und es hat auch nicht mit den Pull-Up-Widerständen funktioniert.
Hattet ihr bereits ähnliche Erfahrungen mit dem selbem Produkt oder Ideen, woran es liegen könnte?
Vielen Dank im voraus auf eure Antworten!
Warum sprichst du in Rätseln ?
Was heißt extra Netzteil ?
Wie hast du das angeschlossen.
Mach es nicht so spannend, zeige ein Schaltbild wie das Netzteil bzw. extra Netzteil angeschlossen ist.
Was sind daran Rätsel?
Ich habe ganz einfach das USB Kabel zwischen Arduino und meinem Computer, was ich eig. zur Stromversorgung benutze, entfernt, und dafür ein externes Netzteil (output: 1,5A) direkt in die Steckdose gesteckt und mit dem Arduino verbunden. Warum soll ich für soetwas ein eigenes Schaltbild machen?
TheBigPekka:
Was sind daran Rätsel?
Ich habe ganz einfach das USB Kabel zwischen Arduino und meinem Computer, was ich eig. zur Stromversorgung benutze, entfernt, und dafür ein externes Netzteil (output: 1,5A) direkt in die Steckdose gesteckt und mit dem Arduino verbunden. Warum soll ich für soetwas ein eigenes Schaltbild machen?
Weil du das zuvor nicht so beschrieben hast.
Und dennoch bin ich der Meinung, es liegt an der Spannung.
Du solltest mal das Display mit einer eigenen Spannung betreiben.
Evtl. bringt der Spannungsregler auf dem Arduino ja nicht die Leistung die du ihm abverlangst.
Da du aber wieder mal nur die hälfte geschrieben hast, ist das auch nur eine Vermutung.
Welche Spannung hat dein externes Netzteil ?
Das z.B. sind alles Dinge, die in einem Schaltbild vorhanden wären.
Aber das willst du nicht.
Willst aber Hilfe haben......
Eddy599:
.....
Habe das hier geschrieben, auch wenn die Nachricht alt ist, damit das Thema abgeschlossen ist.
Das Thema wird erst abgeschlossen sein, wenn der TO selbst eine entsprechende Information liefert.
Da er aber nichtmal richtige Informationen zur Fehlerlokalisierung liefert, wird das wohl nicht passieren.
Schon garnicht nach 4 Jahren.
Du mußt auf alle Fälle die Stiftleisten einlöten. Ob die Kontaktflächen vergoldet sind oder nur verzinnt ist für eine gute Lötung unerheblich. Es muß auf alle Fälle gut gelötet werden.
Die Stifte auf der der Einlötseite engegengesetzten Seite müssen sauber gehaltet werden. Normalerweise besteht keine Gefahr daß diese sich durch Geistehand verzinnen. Man braucht nur nicht mit dem Lötkolben drankommen.
Beim Lesen des Anfangs-Tread ist mir aufgefallen, daß niemand auf ein eventuelles Problem mir dern Kabellängen bzw den unterdimensionierten Pullupwiderstand des I2C Busses. Das Modul hat zwar 10kOhm Widerstände und der Arduino aktiviert die internen Pullupwiderstände aber bei zu langen Kabeln ( zu große Kapazität gegen Masse) kann der I2C Bus instabil funktionieren.