Я хотел бы использовать Arduino в качестве ведомого i2c. Но я требую, чтобы Arduino действовал как несколько устройств, зарегистрировавшись на несколько адресов i2c.Arduino как подчиненный с несколькими адресами i2c
Это, вероятно, не то, что можно было бы нормально сделать, но вот моя причина сделать это:
Я хочу использовать Arduino, чтобы действовать в качестве датчиков телеизмерения для Spektrum телеметрии. Приемник Telemetry имеет несколько разъемов i2c, которые соединяются с несколькими датчиками (ток 0x02, напряжение 0x03, воздушная скорость 0x11 и т. Д.), Каждый из которых имеет фиксированный адрес i2c, который ожидает приемник Telemetry.
Я хотел бы использовать один Arduino, чтобы действовать как все эти устройства, зарегистрировавшись со всеми вышеуказанными адресами и соответствующим образом отредактировав показания.
Я мог бы использовать один Arduino на датчик, который кажется глупым, поскольку я могу выполнять все эти показания с помощью одного Arduino pro-mini.
Я знаю, что вы можете зарегистрировать Arduino с помощью
Wire.begin(0x02);
Но я требую что-то вроде этого (псевдо код)
Wire.begin(0x02, 0x03, 0x11);
И когда запрос получен, мне нужно знать, с какой адрес Ардуино был задан.
Например (псевдокод)
void receiveEvent(byte address, int bytesReceived){
if(address == 0x02){
// Current reading
}
else if(address == 0x03){
// Voltage reading
}
else if(address == 0x11){
// Airspeed reading
}
}
Любые советы будут оценены.
При использовании платформы кроме оригинального Arduino, есть опция, устройства ATxmegaA1 оснащены 4 интерфейсами I2C и есть [ATxmega fork Arduino] (https://github.com/Xmegaduino), называемый Xmegaduino на github. – vega8