Ir ao conteúdo
  • Cadastre-se

Arduino Como representar os dados lidos dos pinos como char string etc.


Posts recomendados

Estou tentando representar os dados lidos dos pinos do arduino, para saída serial...

achei muita coisa na web e tentei usar... ficou uma mistureba danada... algumas funcionaram, mas deve ter forma mais fácil e elegante de de fazer isso...

por exemplo, tentei ler 8 bits de pinos setador como entradas e através de chaves eu seto o dado na entrada então quero ler e mostrar na serial o resultado.

Exemplo de saída que pretendo:

//----------------

11111111

255

FF

()aqui mostraria o cacter ascii caso seja visível)

//----------------

Para isso usei este exemplo que peguei da net:

  

    long saida;
    char entrada[]= {'1','1','1','1','0','0','0','0'}; //preenchida assim funciona
    //char entrada[]= "11110000"; //esta variável também pode ser preenchida assim
    saida= strtol(entrada, NULL, 2);
    Serial.println(saida);

Mas quero preencher esta variável assim:

char entrada[]={digitalRead(9),digitalRead(8),digitalRead(7),digitalRead(6),digitalRead(5),digitalRead(4),digitalRead(3),digitalRead(2)};

Mas não estou obtendo sucesso... parece que a função não entende os dados lidos como se fossem strings ou char, parece que entende como booleanos...

alguma dica? gostaria que com esta função retornasse 255 caso a entrada fosse 11111111

 

depois, de posse deste valor, tentaria algo como:  

Serial.write(saida); para obter o caracter ascii

 

Pensei em ler bit a bit... algo horrível como:

se pino2 == 0 então variavelchar = '0'

mas encher de laços deste tipo nào deve ser o caminho ideal...

 

então para o momento estou conseguindo representar de forma tosca o seguinte:

Exemplo de saida:

//----------------

11111111 (já consigo representar isso)

255 (ainda não está funcionando)

FF (já consigo representar isso)

(ASCII) ainda falta pois não consegui representar o valor byte (255 por exemplo)

//----------------

 

Agradeço as dicas.

 

Link para o comentário
Compartilhar em outros sites

3 horas atrás, Blumer Celta disse:

Funcionou esta parte, mas de onde vem este 48? qual a lógica dele?

 

obrigado.

Em ASCII os algarismos de 0 a 9 são representados pelos códigos de 48 a 57.

Então, para converte um algarismo de um tipo numérico para char basta somar 48.

Para transformar de binário para decimal:

char dec = 0;
for (int i=0; i<8; i++)
{
   dec += (digitalRead(i+2) << i);
}
               

Em "dec" terá o número convertido de binário para decimal;

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!