agrobot_base/Firmware/Modulos/MuxService.h

44 lines
1.2 KiB
C++

#ifndef MuxService_h
#define MuxService_h
#include "SerialService.h"
#include <Wire.h>
class MuxService {
public:
static const uint8_t enderecoMux = 0x70; // Padrão do TCA9548A
static bool Iniciado;
static int canalAtivo;
static void IniciarMUX() {
PrintTela("[MUX] Iniciando TCA9548A...");
Wire.beginTransmission(enderecoMux);
Iniciado = (Wire.endTransmission() == 0);
if (Iniciado) {
canalAtivo = -1; // Nenhum canal ativo ainda
PrintTela("[MUX] TCA9548A Iniciado");
}
else {
PrintTela("[MUX] TCA9548A nao Iniciado, endereco " + String(enderecoMux) + " nao encontrado no barramento");
}
}
static void SelecionarCanal(uint8_t canal) {
if (!Iniciado) return;
if (canalAtivo == canal) return; // Já está no canal certo
Wire.beginTransmission(enderecoMux);
Wire.write(1 << canal);
Wire.endTransmission();
PrintTela("[MUX] Canal alterado de " + String(canalAtivo) + " para " + String(canal));
canalAtivo = canal;
}
};
bool MuxService::Iniciado = false;
int MuxService::canalAtivo = -1;
#endif