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
  mehrere Taster entprellen Kitt 15 524 24.10.2016 21:17
Letzter Beitrag: georg01
  Taster für mehrere Funktionen matthias3579 5 353 16.08.2016 16:00
Letzter Beitrag: StephanBuerger
  Mehrere Wertabfragen blebbens 5 374 18.06.2016 22:58
Letzter Beitrag: Scheams
  2 und mehrere Led´s mit Fernbedienung AN / AUS + Blinkfunktion Golffahrer 22 944 07.06.2016 11:31
Letzter Beitrag: hotsystems
  Mehrere Abläufe gleichteitig mit "Millis" MarkusSpielt 3 670 11.04.2016 18:23
Letzter Beitrag: MarkusSpielt
  I ch brauche mehrere SDA und SCL am MEGA2560 arduinofan 5 759 10.01.2016 21:15
Letzter Beitrag: arduinofan
  Mehrere Geräte über eine IR Fernbedienung Respun 20 2.012 07.01.2016 23:51
Letzter Beitrag: hotsystems
  ESP8266, MCP23017 mit MQTT Pf@nne 0 786 17.12.2015 11:46
Letzter Beitrag: Pf@nne
  mehrere Analoge eingänge seriell ausgeben rieders 5 803 28.11.2015 09:55
Letzter Beitrag: Bitklopfer
  Wie frag ich mehrere Taster in einem Programm ab? blowingwater 7 1.135 02.06.2015 19:05
Letzter Beitrag: blowingwater

Gehe zu:


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