INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Mehrere MCP23017 dynamisch verwenden
13.02.2016, 10:10 (Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2016 11:24 von Bitklopfer.)
Beitrag #1
Mehrere MCP23017 dynamisch verwenden
Hallo zusammen,

ich habe mehrere MCP(1)23017 mit denen nacheinander die gleichen Aktionen durchgeführt werden sollen. Das klingt eigentlich nach einer Funktion oder Schleife, aber wie?

Im Prinzip ist es auch kein eigentliches Problem mit dem MCP.
Als Beispiel die Initialisierung zur Verdeutlichung.

Folgende Ausgangssituation ist gegeben:

Adafruit_MCP23017 mcp1;
Adafruit_MCP23017 mcp2;
Adafruit_MCP23017 mcp3;
Adafruit_MCP23017 mcp4;

Nun wird jeder MCP separat initialisiert:

mcp1.begin(4);
for (byte i=0; i < 16; i++) {
mcp1.pinMode(i, INPUT);
mcp1.pullUp(i, LOW);
}

Mein Wunsch für diese und weitere Aktionen ist es, "mcp1.xxx", mcp2.xxx" usw. dynamisch einzusetzen, also "mcpx" mit x = 1-4.

Vielen Dank
itsy

(1) edit by bk
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.02.2016, 11:24
Beitrag #2
RE: Mehrere MCP23017 dynamisch verwenden
Ich kann gerade nicht testeten ob das funktioniert, aber Versuch doch mal die mcps in ein Array zu packen
Code:
const byte mcpCount = 4;
Adafruit_MCP23017 mcp[mcpCount];
wenn das funktioniert kannst du da mit einer for Schleife durch wandern
Code:
for (x=0; x<mcpCount; x++) {
  mcp[x].digitalWrite(0, HIGH);
}

Gruß Bob

Elektronische Torwand
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.02.2016, 11:30 (Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2016 11:32 von Bitklopfer.)
Beitrag #3
RE: Mehrere MCP23017 dynamisch verwenden
Moin itsy,
bei deinem Code fehlen ein paar aufschlußreiche Stellen und zwar wo ist definiert welche I2C Adresse welches Teil hat.
Dann stellt sich noch die Frage ob sich das im zusammenspiel mit der Adafruit Lib händeln läßt.
Hinzu kommt das die Chip Adresse in den Bits 4 bis 6 positioniert ist wenn man bei Bit 0 zu zählen anfängt.
Spezialisten können hier vielleicht ein Indexdatenfeld generieren über das dann zugegriffen wird aber dazu fehlen mir gesicherte Erkenntnisse.
Einfacher zu lösen wäre es mit einem switch case Konstrukt.
lgbk

Nachtrag, das was Bob geschrieben hat könnte zielführend sein...

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.02.2016, 19:32
Beitrag #4
RE: Mehrere MCP23017 dynamisch verwenden
Hallo zusammen und erstmal vielen Dank für Eure Antworten.

An die Antwort von MeisterBob hatte ich auch ursprünglich gedacht, habe sie dann aber verworfen, weil sie so einfach war ;-)

Nach dem Posting habe ich es dann doch probiert und was soll ich sagen ... es funktioniert! Ich kann es gar nicht glauben, dass man diese Funktion einfach in ein Array packen kann!

Vielen Dank!

Es läuft :-)

(13.02.2016 11:30)Bitklopfer schrieb:  Moin itsy,
bei deinem Code fehlen ein paar aufschlußreiche Stellen und zwar wo ist definiert welche I2C Adresse welches Teil hat.
Dann stellt sich noch die Frage ob sich das im zusammenspiel mit der Adafruit Lib händeln läßt.
Hinzu kommt das die Chip Adresse in den Bits 4 bis 6 positioniert ist wenn man bei Bit 0 zu zählen anfängt.
Spezialisten können hier vielleicht ein Indexdatenfeld generieren über das dann zugegriffen wird aber dazu fehlen mir gesicherte Erkenntnisse.
Einfacher zu lösen wäre es mit einem switch case Konstrukt.
lgbk

Nachtrag, das was Bob geschrieben hat könnte zielführend sein...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.02.2016, 23:17
Beitrag #5
RE: Mehrere MCP23017 dynamisch verwenden
(13.02.2016 19:32)itsy schrieb:  ...

Es läuft :-)
....

...obligatorische Frage auch an dich, wie funzt es dann bitte ?

lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.02.2016, 13:22
Beitrag #6
RE: Mehrere MCP23017 dynamisch verwenden
So wie Bob es vermutet hat:

const byte Anzahl_Sensoren_Bienenzaehler = 4;
Adafruit_MCP23017 mcp[Anzahl_Sensoren_Bienenzaehler];

[SETUP]

for (byte j=0; j < Anzahl_Sensoren_Bienenzaehler; j++) {
mcp[j].begin(j+4);
for (byte i=0; i < 16; i++) {
mcp[j].pinMode(i, INPUT);
mcp[j].pullUp(i, LOW);
}
}

Die MCP wurden mit 4,5,6 und 7 adressiert :-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Ampelschaltung mehrere Befehle möglichst gleichzeitig Jan5663 3 55 Heute 23:00
Letzter Beitrag: GuaAck
  Wie Programmiere ich mehrere if-Abfragen? Mr.Purz 7 234 12.12.2017 21:25
Letzter Beitrag: Tommy56
Question Mehrere HX711 an einem Arduino Nano Lambacher 59 2.362 17.10.2017 09:34
Letzter Beitrag: Tommy56
Lightbulb mehrere Funktionen mit Schalter mechastef 7 908 21.08.2017 22:34
Letzter Beitrag: SkobyMobil
Brick Welcher FTP Client um mehrere Dateien auf den Server zu schieben. derAllgaeuer 26 2.177 19.08.2017 21:27
Letzter Beitrag: Bitklopfer
  TFT neu Verwenden Harry Hirsch 11 1.149 01.08.2017 13:22
Letzter Beitrag: Harry Hirsch
  Mehrere HX711 mit einem Arduino Uno be14b029 5 927 08.02.2017 18:09
Letzter Beitrag: Binatone
  Mehrere Servos gleichzeitig steuern (Hexapod) scritch 7 1.044 25.01.2017 08:18
Letzter Beitrag: scritch
  mehrere Taster entprellen Kitt 15 2.175 24.10.2016 21:17
Letzter Beitrag: georg01
  Taster für mehrere Funktionen matthias3579 5 1.023 16.08.2016 16:00
Letzter Beitrag: StephanBuerger

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste