im Ordner Adafruit-MCP23017-Library-master/examples/mcp23xxx_blink
Woher sollen wir wissen, was du auf deinem Rechner installiert hast ;-)
Link zur Bibliothek?
Hast du einmal einen I2C-Scanner laufen lassen, um zu gucken, ob das Board überhaupt ansprechbar ist und wenn "ja", auf welcher Adresse. Oder fehlen in deinem Aufbau vielleicht Pull-Ups oder andere elementare Dinge?
... sind im Allgemeinen sowieso öffentlich zugänglich, und der
Hersteller hat ja ein Interesse dass über seine Produkte
informiert wird und sie verstanden werden.
Hier gleich eine Vorwarnung: Längeren Sourcecode nicht im
Text einfügen, sondern als Dateianhang. Siehe unter:
Wichtige Regeln - erst lesen, dann posten!
"i2c master" : hä ? hab hier nen nano zum testen, da gibts nur pin 4+5
meines wenigen wissens..
und i2c-scanner : hab ich mal gelesen, aber konnt ich nix mit anfangen ???
wegen presse-job und danach noch musikalischem auftritt
kann ich erst morgen früh näheres posten..sorry !
Wir wissen immer noch nicht welche IDE du verwendest (da
gibt es heutzutage eine Auswahl) und wie du alles verschaltet
hast. Nicht umsonst fragte Rahul bereits ganz am Anfang
nach diesen Angaben. Mit Schaltplan ist im Allgemeinen auch
nach einem Aufbau (detailliertes Foto) gefragt bei dem viele
Leute Fehler machen können. Natürlich sollte der Aufbau genau
deinem verwendeten Schaltplan entsprechen.
Bei Compiler-Ausgaben besteht oft das Problem dass Ausgaben
von Warnings ausgeschaltet sind und darin oft noch Fehler-
quellen vermutet werden können. Dann darf man aufgrund deiner
dürftigen Amgaben durchaus mal fragen ob du den Code überhaupt
erfolgreich hochgeladen hast.
Edit: Letzteres hast du dann offensichtlich getan.
ok,ich prüfe jetzt mal die Schaltung durch..evtl ein Wackler
aufm Breadboard..
ausserdem muss ich wohl mal auf die "MC23017-Expansion-Board-Schematic" schauen..na dann..
nach LEsen der Readme.md hat sich das mit Pin-Benennung
der IO-Pins erstmal geklärt;demnach muß die LED mit dem Pluspol
via Vorwiderstand an GPA0 angeschlossen werden.
Ach! Das alleinige Überprüfen der Verdrahtung hat den I2C-
Scanner schon zum Funktionieren gebracht? Welch Zauberei!
Du hast also vorher schon alles richtig verdrahtet, nur
die Hardware hat sich magic geweigert korrekt zu arbeiten.
laut Readme.md ist 0x27 voreingestellt und braucht Nicht extra
als Parameter angegeben werden.
Seltsam, in meiner Version des Lib-Archivs steht im Readme.md
nichts davon drin. Dagegen finde ich in diesem Archiv die
Datei <Adafruit_MCP23XXX.h> mit der Voreinstellung:
im Ordner steht auch nur "Adafruit-MCP23017-Arduino-Library-master",
darin u.a. .github als Ordner und sonst eben die Readme.md
und noch n paar Dateien und Ordner,
anbei Screenshot..
Laut Datenblatt (oben gepostet) FIGURE 3-4 auf Seite 15 von 42 kann man die Adresse von 0x20 bis 0x27 wählen. Die Adresse wird an Pin 11 bis 13 (A0-A2) des QFN-Gehäuses fest verdrahtet.
Achtung, die Anschlüsse der Platine A0-A2 haben damit nichts zu tun!
So ein Scanner findet auch bei fehlenden Pull-down-Widerständen und Jumpern irgendeine Adresse, aber es ist doch anzunehmen, dass 0x27 stimmt. Drunterschauen bringt Gewissheit. Jedenfalls scheint Wastls Library mit 0x20 nicht zuzutreffen.
So ein Scanner findet auch bei fehlenden Pull-down-Widerständen und
Jumpern irgendeine Adresse
Siehst du irgendwo unbestückte Widerstände?
Drunterschauen bringt Gewissheit. Jedenfalls scheint Wastls
Library mit 0x20 nicht zuzutreffen.
Das Drunterschauen bring nur etwas, wenn man den richtigen Schaltplan anguckt.
Der von dir verlinkte zeigt Pull-Down Widerstände mit Lötjumpern nach VCC, der von Wolf hochgeladene zeigt Pull-Up Widerstände mit Lötjumpern nach Gnd.
Falls letzterer stimmt, würde gelten:
Wenn die drei Lötkleckse "bestückt" sind gilt die 0x20, ohne sie 0x27.
Im hochgeladenen Manual steht auf S.4:
"Default address of module is 0x27, you can also change its device address by welding
A2, A0, A1. By default, A2, A1, A0 are all High without welded."
RTFM
Da könnte man eher mit einem Multimeter nach der Spannung gucken.
Aber wozu, wenn der Baustein nachgewiesenermaßen auf 0x27 reagiert, so wie im Manual beschrieben.
Was ist denn so schwierig mal das Programm mit Adresse
0x20, 0x27, und 0 und 7 auszuprobieren. Ist der Aufwand
so gross dass man das nicht durchführen kann?
Du hast dein Adafruit-Archiv nicht hochgeladen, daher wissen
wir nicht ob wir genau von der gleichen Version reden. So
einfach ist das. Daher wissen wir auch nicht ob der
Automatismus mit Adresse 0x27 zutrifft oder nicht.
nun muss ich noch das LCD - Display in Gang bringen..
da es standardmäßig auch auf 0x27 daherkommt, ändere ich
mcp-Aufruf auf mcp.begin(0x28)..müßte eigentlich klappen..
mcp-Aufruf auf mcp.begin(0x28)..müßte eigentlich klappen..
Wenn du die Adress-Jumper entsprechend setzt und das Board das
unterstützt, dann ja.
Nein, 0x28 kann nie funktionieren. Das liegt nicht am Board, sondern am MC23017. Nur die unteren drei Bits der Adresse können konfiguriert werden, also 0x20 bis 0x27 (Datenblatt Kap. 3.3.1).
das benutzt einen PCF8574
https://www.nxp.com/docs/en/data-sheet/PCF8574_PCF8574A.pdf
und der hat seine Adressen ebenfalls einstellbar auf 0x20 bis 0x27
(Seite 5 Table 4), würde also hinkommen. Wenn die beide auf 0x27 eingestellt sind und am I2C angeschlossen, findet der Scanner nichts, weil beide auf die Anfrage gleichzeitig reagieren.
Die Adresse am Display ist mit drei pull-up Widerständen fest auf 0x27 verdrahtet (-> Dokument: Development Resources -> CO02013 neu.zip -> Schematic.PDF) also muss die am MC23017-Board umgestellt werden auf eine der übrigen, 0x20...0x26.
Wenn die beide auf 0x27 eingestellt sind und am I2C angeschlossen,
findet der Scanner nichts, weil beide auf die Anfrage gleichzeitig
reagieren.
Unsinn - von beiden kommt gleichzeitig ein Ack. Da kommt sich nichts in die Quere. Folglich sieht der Scanner auch, dass jemand unter der Adresse ansprechbar ist.
Wenn die beide auf 0x27
eingestellt sind und am I2C angeschlossen, findet der Scanner nichts,
weil beide auf die Anfrage gleichzeitig reagieren.
Nein. Der Scanner findet "etwas" auf dieser Adresse, weil mindestens einer (in diesem Fall beide) die SDA Leitung zum Bestätigen auf LOW zieht. Genau das ist das Signal, dass da "jemand" auf dieser Adresse ansprechbar ist.
Sinnvoll benutzen kann es wegen dem Konflikt aber nicht.
Ich dachte, da wird genauer ermittelt, was dran hängt. Die Linuxreferenz warnt vor dem Scanner, der kann manche I2C-Bauteile verwirren:
https://linux.die.net/man/8/i2cdetect
Der I²C Scanner funktioniert, wie die Anwesenheitskontrolle im Klassenzimmer. Der Lehrer ruft nacheinander alle Namen auf. Wenn jemand "hier" antwortet, hakt er den Namen ab.
Genau das gleiche macht der I²C Scanner, nur mit Adressen statt Namen. Er scannt alle möglichen (ca. 100) Adressen ab.
I²C Kommunikation läuft nach diesem Muster ab:
Lehrer: Achtung (START)
Lehrer: Pascal (Adresse senden)
Pascal: Jawohl (ACK)
Lehrer: Mach das Licht aus (Byte senden)
Pascal: Jawohl (ACK)
Lehrer: Gut, setz dich wieder (STOP)
Oder beim lesen:
Lehrer: Achtung (START)
Lehrer: Maria (Adresse senden)
Maria: Jawohl (ACK)
Lehrer: Wie spät ist es? (Byte senden)
Maria: Verstanden (ACK)
Maria: Es ist 14 Uhr (Byte empfangen)
Lehrer: Weiter
Maria: und 55 Minuten (Byte empfangen)
Lehrer: Weiter
Maria: und 27 Sekunden (Byte empfangen)
Lehrer: Das reicht (NACK)
Lehrer: Gut, setz dich wieder (STOP)
wenn ich mir das mit A0,A1,A2 so anschaue..von Waveshare wurde ja wenigstens
das Schema abgedruckt - ein Beispiel wäre evtl auch nett gewesen - ,
so graut mir nur noch vor dem Lötvorgang, also Überbrücken der jeweils 2 Lötpunkte..bin nicht mehr der Jüngste und smd-Löten ist nicht mein Ding..
was für ne Adresse wird gültig , wenn ich A0 überbrücke ?
(steckbare Jumper wären da auch netter gewesen !)
bevor ich da was für immer versaue..es soll außer dem Display
auch noch ein ein PCA 9685 mit an den I2C-Bus, also insgesamt
3 Boards, muß ich genau wissen, wo der mcp liegt ..
also try and fly : A0 brücken und mit dem scanner sehen , wo's landet :-))
Es geht ja bei mir um zwei kleine Moodellbahnen mit nur jeweils 3 Loks usw.
Eure Meinung zu I2C (mit Arduino) generell :
das ist wohl mehr für kleinere RPojekte, oder ?
sollte man für größere Projekte (z.B. "Wunderland")
CAN-Bus verwenden ? märklin hat ja was realisiert..
ist aber auch anspruchsvoller auch fürn Geldbeutel...
Meine Märklin Spur Null ist Vorkriegsware, ganz ohne Computer. Liegt aber seit Jahrzehnten im Keller. Gleich neben dem Metallbaukasten, der ist aus den frühen 60ern.
nachdem es heute shields usw für Arduino u SPI gibt,
scheint sich da was zu tun..
Deine Spur 0 kann heute als Sammlerware viel wert sein :
evtl bei "Bares uznd Rares" anbieten und natürlich inden Foren..
warum im Keller verstauben (und verrosten ?) lasse ..
Obacht, bei Chinaware kann es auch gut mal sein, das da eben mal PCF8574A bestückt werden und der Laie verzeifelt schier daran, das der Typ mit dem Suffix A einen anderen Adressaum hat.
Das ist ja fies, ich hatte schon das "A" bemerkt, mich aber nicht für den Unterschied interessiert.
"Bares und Rares"
da bekäm ich bestimmt von Horst und Sven dat Händlerkärchtschen.
Für die Waggons habe ich eine Vitrine "angefangen", eines meiner unvollendeten Projekte. Bilderrahmen 70*100cm nach hinten verlängert und mit dünnen Regalbrettern unterteilt (nachdem ich die professionellen Preise für sowas gesehen hatte, gibts alles auch zu kaufen).
Für Spur Null gab es eine Website, alle Teile mit Foto, Beschreibung und Preisen, Adresse hab ich verloren. Hier eine ähnliche:
http://www.alte-spur-0.de/start
Da sind 6 Adresseingänge, wenn die auf der Platine alle einstellbar
sind, sollte das kein Problem sein.
Hör doch endlich mal auf, Nebelkerzen zu schmeißen. Beim PCA9685 liegt das oberste Adressbit fest auf 1, bei dem MC23017 fest auf 0. Egal, wie man die freien Adressbits konfiguriert, kann also überhaupt keine Überschneidung entstehen.
Vielleicht verrät uns Wolf demnächst noch, was sonst noch für sein Wunderland geplant ist, und welche Adressen da noch gebraucht werden. Aber ok, bisher gab es nur die eine Überschneidung.
Man merkt halt, dass Philips den I2C-Bus damals nur für TV-Geräte erfunden hatte, um Kanal, Helligkeit und Lautstärke einzustellen. Dann wurde es immer mehr.
soo..habe geschaut und gesehen, daß ich gestern
testweise 0x28 fürs LCD-Display eingegeben hatte..
nun mit 0x27 ist die Fehlermeldung weg und Blinktest funzt..
aber es kommt noch keine Meldung aufm Display..??
hab hier noch PCA 9548 liegen, ist sowas ähnliches wie der mcp..
hab ich damit mehr Glück ?
Langsam kommt es mir so vor als ob du dich absichtlich dumm
anstellst um hier herumzutrollen. Auf Nachfragen von Leuten
die dir helfen wollen kommt von dir wenig bis keine Reaktion.
Bedienungsanleitung" zum LCD-Display hab ich net..
bei forum.arduino.cc auch nix brauchbares gefunden..
Warum kaufst du das dann? Man vergewissert sich vorher, dass alle nötigen Unterlagen vom Händler oder Hersteller bereit gestellt werden. Und ja, das ist bei 90% aller Asia Händler ein K.O. Kriterium.
So wie deine Frau keine Dessous bei Conrad Elektronik kauft, so solltest du keine Elektronik bei Dessous-Händlern kaufen.
Du musst doch nur die i2c adressen einstellen und im Programm bei begin. auf diese verweisen.
(nebenher: ich lese schon n paar Tage still mit. irgendwann ists aber mal gut)
Wir brauchen uns nicht wundern, wenn alle hier fluchtartig die Plattform verlassen oder sich zurückziehen.
So etwas kann man auch selbständig suchen und muss nicht in
einem Forum um Hilfe bitten.
Wer es damit nicht schafft sollte sich ein anderes Hobby
suchen. Kegeln, Stricken, Angeln, Häkeln .....
ich weiß nicht, warum manche sich mit abstrakteren, prinzipiellen Fragestellungen so schwer tun..und was der Ausdruck "herumtrollen" bedeuten soll, ist mir auch unklar !
Wenn ich z.B. einen Schaltplan zeichnen will, muß mir für jede Verbindung klar sein, wozu sie dient.
Wenn ich das Nicht weiß, macht das Zeichnen KEINEN SINN !
Man muß erstmal verstehen, was man den Modulen bzw Boards machen
kann und soll und was nicht ! Noch habe ich Nicht den großen Überblick,
zumal laufend Neues hginzukommt !
Ich weiß nicht, warum in deutschsprachigen Foren oft gleich
der große Finger kommt (Zeige..), warum gleich auf dem Fragesteller herumgehackt wird..in den anders-sprachigen Foren kommt das zumindest nicht so oft - wenn überhaupt vor !
Angenommen, es sei das I2C-LCD von Eckstein. Hier die Pläne des Moduls, aus den gezippten "Development Resources" entnommen. Ein normales 2*16-stelliges Textdisplay mit 1602-Controller und einem PCF8574 als I2C-Interface.
Aber Wolf will uns die genaue Bezeichnung nicht nennen, Schade!
hi ,
also, daß sich ein Forenbetreiber über zuviel Traffic - also zuviel
Beiträge - beschwert, lese ich zum erstenmal !
Es geht nicht darum, dass sich der Forehnbetreiber adrüber beschwert, sonderen u.a. darum, dass man Bilder auch komprimieren kann, und sie trotzdem noch aussagekräftig sind.
Datenblätter kann man i.d.R. auch verlinken, und muss sie nicht auch noch in Beiträgen hochladen.
Dafür gibt es hiner auf der Seite sogar eine Funktion.
Ok, werde mir mal die Arbeit machen , alle verwendeten Boards usw
zu dokumentieren :
Nummern und Bezeichnungen
Quelle, Beschaffungstermin
Foto
Dinge, die niemanden interessieren...
Wichtig sind dein Schaltplan (und nicht nur Kästchen, die den Namen der Boards enthalten).
Schaltpläne sind nun mal ein Kommunikationshilfsmittel für E-Techniker, wie Maßbilder für Mechaniker und Quellcode für Informatiker (Mechatoniker solten mit allen umgehen können ;) )
mit den Links : ok, mach ich auch noch, weiss jetzt noch nicht, wie das hier geht
bin mir aber nicht immer sicher,
ob es diejenigen sind , auf die ich mich ggf mal bezogen habe..
da die Modellbahn im Vordergrund stand, hab ich -leider - nix dokumentiert, sondern ,wenns fertig war, gefreut
das Innenleben der auf den Boards verlöteten Chips interessiert wohl
eher kaum jemand
Stimmt, aber es interessiert, wie der Portexpander mit dem Display verbunden ist. Denn da gibt es mehrere Varianten im Handel, die zueinander inkompatibel sind.
es interessiert, wie der Portexpander mit dem Display
verbunden ist. Denn da gibt es mehrere Varianten
Hier die acht Ports P0 bis P7 sind mit dem LCD verbunden.
Vier Datenbits, RS = Register select, RW = read/write, CS = chip select
und P3 schaltet die Hintergrundbeleuchtung ein. Ob die anders verbunden sind, weiß die Software nicht.
nur noch zum lcd-display hd4470 : hatte das bei AZ-Delivery
erworben mit der "Huckepack-Platine" und einstellbarer
I2C-Adresse; jetzt erscheinen auf deren Webseite 2 davon,
kann aber nicht erkennen, worin die sich unterscheiden außer beim preis,
und so weiß ich nicht, welche mein Exemplar ist.
Cyblord : ja, auch so kann man Traffic erzeugen.
schreibe jetzt hier nix mehr !
Außer dem Tipp mit dem I2C-Scanner NIX, nur zusätzlich nicht
anerkannte Arbeit...
Die Suchfunktion von az ist grauslich, da kommt alles mögliche unsinnige. Grafikanzeigen und ohne I2C-Bus, alles durcheinander. Ist die I2C-Schnittstelle schon auf der Displayplatine enthalten, oder ist das ein "Bundle" mit einer zweiten Platine? Hat es 2*16 Zeichen oder mehr?
nachdem der mcp23017 durch einen kleinen unfall
unwiderbringlich kaputt ist und ich diesen Nicht ersetzen werde,
hat sich dieser Thread wohl erledigt.
Zum Display : hat bei AZ-delivery die Artikelnummer 14-7 .
Läuft hier im Solo-Betrieb einwandfrei;das es zusammen mit dem mcp..
Probleme gab, lag wohl mehr am mcp, vermute ich. Vielleicht
war das auch "Montagsware" ?
Liebäugele momentan mit dem Analog-Multiplexer 74hc4037, gibts aber erst
Anfang Dezember..
Bei az-delivery finde ich keine Artikelnummer "14-7"
Die haben anscheinend nur ein I2C-Interface namens FC-113:
https://www.az-delivery.de/products/serielle-schnittstelle
leider ohne Schaltplan, welcher Port an welchen Pin des LCD führt.
Bei der Bestellung darf man noch ein "Deutsches eBook mit Einrichtungsanleitung" kostenlos mitbestellen, ein Download ist nicht möglich.
Im "Datenblatt"-PDF ist immerhin ein Arduino-Beispielcode abgedruckt, leider nicht kopierbar.
1
//Arduino Code
2
#include<Wire.h>
3
#include<LiquidCrystal_I2C.h>
4
5
LiquidCrystal_I2Clcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);// Initialize LCD Display at address 0x27
6
// unmodified backpack
7
8
voidsetup(){
9
// activate LCD module
10
lcd.begin(16,2);// for 16x 2 LCD module
11
lcd.setBacklightPin(3,POSITIVE);
12
lcd.setBacklight(HIGH);
13
}
14
15
voidloop(){
16
lcd.home();// set cursor to 0,0
17
lcd.print(" Hello, world!");
18
lcd.setCursor(0,1);// go to start of 2nd line
19
lcd.print(millis());
20
delay(1000);
21
lcd.setBacklight(LOW);// Backlight off
22
delay(500);
23
lcd.setBacklight(HIGH);// Backlight on
24
25
delay(1000);
26
}// END
ich nehme an, "LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE)"
beschreibt die Reihenfolge der Ports.
nachdem der mcp23017 durch einen kleinen unfall
unwiderbringlich kaputt ist und ich diesen Nicht ersetzen werde,
Vielleicht solltest du über geeignete Schutzmaßnahmen nachdenken, um "kleinem Unfällen" gar nicht erst eine Chance zu geben.
Bestell dir besser einen kleinen Logikanalysator im Gegenwert eines Kantinenessens, um den Signalen auf die Finger gucken zu können und lerne zu verstehen, was du dort machst, statt den Kopf in den Sand zu stecken und zum nächsten Baustein zu wechseln.
gibts nicht, CD4037 war ein "CMOS Triple AND/OR Bi-Phase Pairs" von RCA/Harris.
74HC4067 ist ein Analogschalter mit 16 Eingängen, der hilft auch nicht weiter.
gibts nicht, CD4037 war ein "CMOS Triple AND/OR Bi-Phase Pairs" von
RCA/Harris.
Trolle werfen irgendetwas in den Raum und die hilfsbereiten,
mit Scheuklappen ausgestatteten Helferlein lassen sich auf
alles ein was ihnen so vorgeworfen wird.
Es ist mir egal ob Wolf ein Troll ist oder einfach etwas hilflos im Umgang mit Computertechnik und dem Internet. Es gibt genügend andere, die vor ähnlichen Problemen stehen und für Hilfe dankbar sind.