Galera,

preciso de uma ajuda. Como faço para utilizar um valor dinâmico em um digitalRead?

Estou tentando declarar as portas de forma sequencial (b1, b2, ...) e concatenar o caráctere 'b' com os números em sequencia gerados no FOR.

Ocorre que, conforme o código abaixo, se utilizar direto MAF dentro de digitalRead na erro no compilador dizendo que é impossível a conversão de CHAR para INT.

Com ATOI tentei efetuar a conversão antes de utilizar no digitalRead, no entanto, retorna valor zero.

 

int b1 = A8;
int b2 = 7;
int b3 = 10;

[...]

for (uint8_t mab=1; mab<=qtiOSC; mab++) {
char maf[3];
sprintf(maf,"%c%d",'b',mab);
int mag;
mag = atoi(maf);
val = digitalRead(mag);
Serial.print(val);
Serial.println();
}

 

Exibições: 168

Responder esta

Respostas a este tópico

Bom a principio, A8 é um #define dentro de alguma das bibliotecas do arduino que direciona para a porta, tipo, no ATMEGA328, o A0 é o pino 14, A1 é o pino 15, como você tem mais q 6 portas analógicas, estou assumindo que está usando um MEGA.

acho q o melhor seria você ter um array b que apontaria para cada porta que você quer ler e assim ir colocando cada valor em um dos elementos do array, essa "macrosubstituição" deve ser muito alto nível para o C# do AVR

Assim

int b[3];

b[0] = A8;

b[1] = 7;

b[2] = 10;

for (unint8_t i = 0; i <= qtiOSC; i++)

{

  val = digitalRead(b[i]);

  Serial.print(val);

  Serial.println(); 

}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço