Eletrônica digital com Arduíno – tirando dúvidas

Baseado no motor de busca do WordPress, coletei uma série de dúvidas básicas das pessoas que estão iniciando em Arduino. Então decidi escrever um post exclarecendo essas dúvidas.

Livro de Arduino
Talvez não seja uma boa idéia adquirir livros de Arduíno, uma vez que tudo se encontra na net. Tutoriais podem ser encontrados com pesquisas no google. Documentação das bibliotecas podem ser encontradas na própria interface do Arduino ou ainda no site oficial arduino.cc.

Quando se compra um componente em site (recomendo que seja feito dessa forma), o datasheet do componente normalmente está disponível no próprio link de compra e se comprar em um dos sites recomendados nesse link, você poderá encontrar até tutoriais de uso desse componente.

Linguagem C para eletrônica
Isso pode variar de controladora pra controladora. No caso do Arduíno, as funções de suas bibliotecas estão especificadas na própria interface e no site oficial. O básico de C obviamente é igual para qualquer controladora, porém uma função simples como printf() não está disponível por motivos óbvios; a comunicação com Arduino é serial.

Contador em Arduino
Essa eu ví que é falta de intimidade com programação, mas vou exclarecer. Um contador é uma variável que é incrementada ou decrementada, normalmente em um loop. Por exemplo:


int counter;
for (counter=0;counter<100;counter++){
...
}

Expliquei loops em outro post, mas vou explicar o laço for novamente. Seu formato é:

for(int VALOR INICIAL;int VALOR FINAL;int incremento)

Ou seja, inicializa-se a variável com o valor inicial pretendido; diz-se ao laço quantas voltas ele dará; valor do incremento – nesse caso, ++ incrementa 1, porém poderia ser algo do tipo:

x = x+2

char em Arduino
Não há diferença de char em C. Não havia falado de char até agora, então vou explicar um pouco.

char letra = 'a';

Quando declaramos uma variável letra do tipo char, o programa reservará na memória um endereço livre onde seja possível alocar 1 byte do tipo char. Se for necessário, basta mudar o valor da variável e o endereço de memória será atualizado com o novo valor. Repare que para uma letra (ou 1 byte) usa-se apóstrofe para proteção. Mas se queremos guardar uma palavra, entram outros conceitos e usa-se aspas.

Uma string (ou palavra) em C é um array de chars. Isso quer dizer que é necessário alocar N chars para guardar N letras de uma palavra. Além disso, é necessário reservar 1 byte a mais, para dizer que a variável termina naquele ponto. É como um ponto final, e esse byte deve alocar ''.

Supondo uma variável chamada arduino para guardar o link suhanko.wordpress.com, que possui 21 bytes (e não devemos esquecer do terminador nulo):


char arduino[22] = {"suhanko.wordpress.com"};
arduino[22] = '';
printf("%s",arduino);

Na declaração da variável (onde especificamos seu tipo) fizemos um array de characters e na linha abaixo colocamos o terminador nulo na posição 22 da memória reservada para a variável.
Para entender exatamente o que faz o terminador nulo, inclua-o em outra posição, por exemplo 7:

arduino[7] = '';

Isso fará com que o printf exiba apenas a palavra “suhanko”, ou seja, o terminador nulo é o ‘ponto final’ de uma string – que em C é um array de chars.

Uma maneira segura de manipular uma string é preenche-la com terminador nulo ao criá-la, da seguinte maneira:

char uma_string_qualquer[30] = {''};

Assim, basta manipular os endereços dos chars sem se preocupar com o terminador nulo desta variável.

O que acontece quando não se utiliza o terminador nulo?
Um endereço de memória pode estar livre para uso, mas se em algum momento esse endereço de memória foi utilizado e não foi limpo, encontram-se dados de tipo desconhecido. Se criamos uma variável que se utilize desse endereço de memória mas o seu conteúdo não preenche o endereço reservado completamente, esses dados de tipo desconhecido farão parte de seu conteúdo. Se terminamos uma string com ”, então o programa fará a leitura somente até encontrar o terminador nulo, ignorando quaisquer dados contidos no restante do endereço de memória reservado para esta variável.
Se queremos acessar um determinado byte dessa variável, basta indicar sua posição, iniciando do 0. por exemplo, a variavel x[8] contendo “arduino” tem 7 letras. Para trocar a primeira letra por maiúsculo, basta fazer isso:

x[0] = 'A';

Capacidade dos pinos do Arduino
Não exceda 20mA em cada pino. Isso está descrito em algum lugar do site oficial.
Além disso, mesmo que seja para um LED, utilize resistores. Se estiver na dúvida de qual utilizar, experimente um de 220ohms. Em um post futuro explicarei uma fórmula para calcular o resistor necessário.
Os pinos do Arduino fornecem 5v. Nos pinos PWM a diferença está nas interrupções, não na voltagem.
Os pinos digital também podem fazer leituras, como por exemplo o sensor TSL235R de luminosidade, que tem saída digital. Então utiliza-se a função digitalRead para isso.
Os pinos analógicos somente fazem leitura.
Conforme formar novas listas de dúvidas, farei posts para exclarecê-las.

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Deixe uma resposta