Guten Tag, ich arbeite momentan An einer "Leitungs-Prüfbox" zum Feststellen von den Verbindungen von x1 zu x2. (wobei ich auf X1 jeden Pin einzeln mit Negativer Logik ansteure und auf X2 dann alle Auslese)
Der Aufbau funktioniert soweit eigentlich warte momentan nur noch auf die Platine.
in eine andere Box wo ein Arduino UNO (2) und ein LCD Display drin sitzt sollen jetzt die Daten die der Arduino UNO (1) in der Leitungsprüfbox ermittelt von X1/X2 mittels I2C übertragen werden.
Leitungs-Prüfbox:
Ich benutze je 1 PCA9505 für X1 und X2, damit ich Kabelstränge/Kabelbäume mit bis zu 40 Pins testen kann. Wie beim I/O Expander üblich sende ich ihm die zu schreibenden Daten von X1 im 8 BIT und lese diese von X2. die ersten 12 Pins werden mir auf einer LED "Matrix" (jede LED wird einzeln über 5 weitere PCA9505 I/O Expander angesteuert)
angezeigt.
Beispiel:
Ich sende über X1 Ich empfange an X2
11111110 11110110
11111101 11111101
11111011 10111111
... ...
jetzt ist X1_1 mit X2_1 & X2_4 verbunden.
x1_2 mit x2_2 und x1_3 mit x2_7
I2C Problem:
Wie lese ich die Daten richtig um diese auszuwerten?
wie stelle ich es an da die richtige Reihenfolge zu haben?
ich dachte an ein Initialisierung Bit vor jedem Status von X1 & X2
so ungefähr hab ich mir das vorgestellt
Arduino (1) sender
00000000 // Initialisierung byte
11111110 // X1 Out
11110110 // X2 In
I2C
Arduino (2) Empfangen
00000000 // Initialisierung byte
11111110 = x1.1 // X1 Out
11110110 = x2 // X2 In
Arduino 2
11111110 XOR = 00000001 //X1
11110110 XOR = 00001001 //X2
Wie werte ich jetzt x2 Aus?
man kann zwar eine Menge if, if else abfragen machen (256 st.) aber das ist ja keine schöne Lösung und ziemlich viel Schreiberei.
Kann man irgendwie ein Byte in 8 Variablen ausgeben damit ich jede zahl einzeln auswerten kann?
am Ende soll da stehen das:
x1_1 = x2_1, x2_4
und dann das gleiche für alle andern 40 Pins
ich hoffe ich hab mein Vorhaben ausführlich genug erklärt damit man es nachvollziehen kann
finde leider nix im Netz dazu aber wahrscheinlich hab ich es auch einfach nur übersehen.
Danke für Hilfe