ocyplex:
Ist die Belegung der PINS am Zero und dem UNO genau gleich?
Zero und UNO sind sehr unterschiedliche Boards, auch wenn die Pinbelegung weitgehend kompatibel gestaltet ist. Ganz wichtig: Der Zero ist ein 3,3V Prozessor - das gilt dann natürlich auch für alle Pins.
ocyplex:
Man kann ja nicht an einem I2C mehrere Sensoren direkt anschließen aufgrund der Vorwiderstände.
I2C ist ein Bussystem. Da kann man durchaus mehrere Sonsoren anschließen, soweit man bei ihnen unterschiedliche I2C-Adressen einstellen kann. Sind bei den Sensoren die Pullup-Widerstände bereits vorhanden, dann kann es bei mehreren angeschlossenen Sensoren nötig sein, die bei einigen zu entfernen, damit das nicht zu niederohmig wird.
ocyplex:
Ich habe gelesen, dass am UNO A4 SCL und A5 SDA sein kann.
Weil die PINS SCL("PIN 17") und SDA ("PIN16") am UNO habe ich bereits belegt.
Am UNO sind SCL/A4 und SDA/A5 identisch. D.h. die Pins sind auf dem Board miteinander verbunden, und können nicht für unterschiedliche Aufgaben verwendet werden.
Auf dem Zero ist das nicht so, da sind das jeweils unterschiedliche I/Os am Prozessor.
Mit dem Zero habe ich keine eigene Erfahrung, aber aus dem Schaltbild geht das eindeutig hervor.
Grundsätzlich ist I2C ein Bus. Du kannst da immer mehrere Sensoren oder I2C-Clients anschließen. Die müssen sich nur in der I2C-Adresse unterscheiden.
Was du da mit den Vorwiderständen meinst, weiß ich nicht. Allerdings benötigt I2C Pullup-Widerstände an den Anschlüssen.
Teilweise sind die aber auf den jeweiligen Sensoren bzw. Boards schon mit drauf. Das solltest du vorher nachmessen.
da es sich bei i2c um einen Bus handelt kann man natürlich mehrere Geräte an den beiden pins anschliessen. Es könnte eventuell sein das Du Geräte mit 3,3V an einen UNO / Zero anschliessen willst und aus diesem Grund Widerstände verbaut sind. ich meine jetzt nich die Pullup´s. In dem Fall verwendest Du besser levelshifter für den I2c Bus.
ich denke nicht das der Zero die gleiche pin Belegung hat wie der UNOZero Plan
Ich dachte PullUp-Widerstände sind Vorwiderstände.
@Rentner Ich habe mir den Plan angesehen, doch ich bin ein zu großer Amateur um dort den Durchblick zu haben.
Ich versuche noch eine leichtere Zeichnung zu finden. Wobei MicroBahner ja sagt, die seien getrennt.
Ich gebe euch Bescheid sobald ich näheres gefunden habe und es in die Praxis umgesetzt habe.
ocyplex:
Ich dachte PullUp-Widerstände sind Vorwiderstände.
@Rentner Ich habe mir den Plan angesehen, doch ich bin ein zu großer Amateur um dort den Durchblick zu haben.
Ich versuche noch eine leichtere Zeichnung zu finden. Wobei MicroBahner ja sagt, die seien getrennt.
Ich gebe euch Bescheid sobald ich näheres gefunden habe und es in die Praxis umgesetzt habe.
Suche einfach nach den jeweiligen Pinout.
Da kannst du die Unterschiede erkennen.
ocyplex:
IWobei MicroBahner ja sagt, die seien getrennt
Ich habe mich dabei an das Schaltbild gehalten, aus dem eindeutig hervorgeht, dass das unterschiedliche IO's des Prozessors sind. Auch das Pinout, dass agmue zeigt ( von der Arduino Seite ) bennent da die gleichen (jeweils unterschiedlichen) IOs für A4/A5 bzw SCL/SDA. Das ist die Hardware.
Ein andere Frage ist, wie in der Software für das Board das Mapping der Pinnummern auf die Prozessor IO's gemacht wird. Die gleiche Pinnummer gleichzeitig auf unterschiedliche IOs zu mappen ist aber nicht möglich. Also kann das in dem Pinout nur ein Fehler sein. Aus Gründen der Kompatibilität gehe ich mal davon aus, Das A4/A5 auch als 18/19 angesprochen werden können ( wie beim UNO ). Wie das dann bei SCL/SDA ist, müsste man in der Software nachschauen. Die Software für das Zero Board habe ich aber derzeit nicht installiert ( hab' ja auch keins ).
So, das hat mich jetzt doch mal interessiert, und ich habe mir die Software in eine portabel Variante installiert.
Hier ein (Kommentar-)Auszug aus der Datei, in der die Zusammenhänge definiert werden. (...\packages\arduino\hardware\samd\1.8.11\variants\arduino_zero\variant.cpp)
Ist da alles sehr gut dokumentiert. Daraus geht hervor, dass beim Zero SDA/SCL als 20/21 ansprechbar sind:
Die Pins SDA und SCL am Ende der digitalen Pins in der Revision R3 dienen dazu den I2C Bus auf verschiedenen Arduino-Modellen mit verschiedenen Controllern, wo der I2C Bus auf verschiedenen Pins ist, auf die gleichen Pins zu haben, damit die Shields mit I2C auf allen Arduinomodellen funktionieren.
Verschiedene Arduino-Modelle mit der Anordnung der Pins, wie der UNO, haben verschiedene Controller:
UNO, Leonardo, MEGA2650, DUE, (TRE), Zero, YUN und YUN2. Weil der I2C Bus an verschiedenen Pins sind, könnte ein Shield für den UNO auf dem Leonardo oder MEGA nicht funktionieren. Dazu haben die Arduinos zusätzliche Pins wo für alle Modelle der I2C angeschlossen sind. Nicht alle Modelle haben diese Pins noch ein zweites mal herausgeführt.
Gleichzeitig gibt es das Pin IOREF das je nach Versorgungsspannung des Controllers 3,3V oder 5V führt. So kann ein Shield an einem 5V Arduino wie auch an einem 3,3V Arduino funktionieren.
Gleiches gilt für den SPI-Bus. Nur am ICSP Anschluß ist der SPI Bus bei allen Modellen vorhanden.
Pullup:
Damit alle Ausgänge der verschieden I2C Slaves zusammengeschaltet werden können ohne ein Ausgang kaputtgeht können diese Ausgänge den Ausgang nur auf Masse schalten. Für das HIGH Signal ist der Pullupwiderstand zuständig.