Hallo alle miteinander,
seit kurzem beschäftige ich mich mit dem Multiplexer ADG728 von Analog Devices.
Diesen möchte ich dazu verwenden 8 Sensoren mittels dem UNO einzulesen.
Laut Datenblatt werden die unterschiedlichen Schalterpositionen mittels eines 8-Bit Wortes geschalten. Beispiel: 10000000 für Pos#8 00000001 für Pos#1 etc.
welche ich in einem Array verpackt habe.
Es sollen nun alle der Reihe nach durchgeschalten und dannach die Sensorwerte eingelesen werden.
Aber: Es wird nicht durchgeschalten, sondern immer nur das erste Byte im array verwendet.
Vielleicht sieht jemand den Fehler im nachfolgenden Code ?
Damit wäre mir sehr geholfen.
//Use the ADG 728 Multiplexer for sensing up to 8 Sensors
#include <Wire.h> // include the wire library for i2c communication
//#define MUX_Adress 0x4C // AGD728 MUX Adress
//int analogPin = A1; // Pin for reading the sensor values with the integrated 10 bit ADC , 4.9mV resolution @ 5 Volt, integer values between 0 and 1023
//int sensorwert = 0; // variable to store the value read
//byte myswitch[8] = {0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80}; // hex for selecting the different switch position
byte myswitch[] = {
0b10000000, //#8
0b01000000, //#7
0b00100000, //#6
0b00010000, //#5
0b00001000, //#4
0b00000100, //#3
0b00000010, //#2
0b00000001, //#1
}; // Binarys for selecting the different switch position
void setup(){
Serial.begin(9600); // setup serial
Wire.begin(); // join i2c bus (address optional for master)
}
void loop() {
Wire.beginTransmission(0x4C); // initialize transmission with to ADG728
for ( int i = 0; i < 8; ++i){ //loop through each channel of the mux
Wire.write(myswitch[i]);
Wire.endTransmission();
int sensorwert = analogRead(A1);
delay(500);
Serial.print("Sensor"); // debug value
Serial.print(i); // debug value
Serial.print(":"); // debug value
Serial.println(sensorwert); // debug value
Serial.print("Einheit"); // debug value
Serial.println(myswitch[i], BIN); // debug value
delay(1000);
}
}
Mfg S.