Prezados,
Para fins de teste, conectei um dip switch nas entradas de um módulo multiplex 4067. No arduino, construi um código para varrer todas as entradas do 4067 e exibir as respectivas saidas. Por exemplo, com todo o dipswitch desligado eu teria uma sequencia de 16 zeros.
Contudo, o código não faz as leituras corretas a não ser que eu introduza um delay de 10 ms entre a seleção da entrada do multipex e a leitura de A0. A impressão que dá é que o arduino lê A0 antes que o dado da entrada selecionada (S0 a S3) esteja disponível em A0.
Alguém experimentou algo parecido?
Agradeço qualquer ajuda.
Trecho de código faz a seleção da entrada e leitura do sinal.
int analogVal;
for(int i = 0; i < 4; i ++){
digitalWrite(controlPin[i], muxChannel[inputCH][i]);
}
////////////////////////////////////////////
//delay(10); // Essencial para funcionar.
// sem esse atraso, não há tempo para
// s0 a s3 selecionarem a entrada correta
// e transferirem o valor para saida.
////////////////////////////////////////////
analogVal = analogRead(an_in)== 1023;
return analogVal;