Ir ao conteúdo

Posts recomendados

Postado

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.

 

Postado
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

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!