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();
}
Tags:
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();
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por