Arduino - Programa 01: Acendendo um LED
Eletrônica

Arduino - Programa 01: Acendendo um LED


Bom pessoal como prometido estarei iniciando hoje o primeiro tutorial de arduino, o primeiro programa me pareceu bem simples, acendendo um LED.
Entretanto apesar de ser um programa bem pequeno ele não pode ser deixado de lado. Acho melhor mostrar o programa e depois discutir o que cada instrução significa.

// 01 Acendendo um LED int ledPin = 10; // declara o pino de saída para o LED void setup() { pinMode(ledPin, OUTPUT); // define a porta como saída } void loop(){ digitalWrite(ledPin, HIGH); // saída em nível alto delay(1000); // atraso de 1 segundo digitalWrite(ledPin, LOW); // saída em nível baixo delay(1000); }

Então vamos lá, no código acima iniciamos com duas barras (//), são elas que permitem que o programador/usuário comente seu código, há outras maneiras de iniciar um comentário, como por exempo:

/* Seu comentário...*/

Tanto da primeira quanto da segunda forma de comentar o código são funcionais, cabe ao usuário escolher a que melhor se adapte, eu particularmente gostei da primeira (duas barras //), é importante lembrar que todo texto entre a barra e o asterisco ou depois das barras será ignorado na hora em que o programa for compilado para a placa, e que os comentários não ocupam espaço na memória. Lembre-se, parece estranho comentar um código pequeno como o apresentado, mas ao longo do tempo estaremos hábeis a criar programas tão complexos, o que exige que comentemos o programa, possibilitando não só encontrarmos os erros de forma mais fácil e rápida como poderá ajudar um próximo usuário do programa. 

Na segunda linha temos " int ledPin = 10; ", em geral quando estamos construindo um programa, temos diversos tipos de variáveis, ou seja, variáveis numéricas, literais, constantes etc. Assim como as outras linguagens de programação (C, C++, java, MatLab), a linguagem do arduino também possui sua forma de declarar as variáveis literais, numéricas e constantes. A forma " int " em arduino significa que a variável é do tipo inteiro. Mais adiante explicarei com clareza oque significa variáveis inteiras, lógicas, literais, etc. Continuando temos " ledPin ", ela denota o nome de uma variável, observe que, poderíamos ter chamado a variável do que quisermos, então eu poderia ter chamado de  " João " ? Sim, mas em um programa buscamos nomear as variáveis de forma que as identifiquemos de forma fácil. Em seguida tinha " = 10; ", nessa parte temos a atribuição, ou seja, atribuímos ao pino digital 10 da placa do arduino o nome de ledPin, e ao longo do programa referenciamos a porta 10 como sendo ledPin. É claro que eu poderia escolher outra porta, por exemplo, 9 ou 7, bastando mudar a conexão do LED. Observe que depois do numero 10 há um ponto e vírgula (;), ele indica que o código termina naquela ponto, ou seja, o que vier escrito depois de ponto e vírgula não fará parte da instrução anterior.
Depois temos " void setup() ", essa instrução é chamada de função setup e todo programa arduino deve conte-lá, a função setup é responsável por preparar todo a inicialização das variáveis, preparar as portas de saída/entrada, a taxa de transmissão serial, etc. No livro Arduino Básico o autor Michael McRoberts diz " void setup() Isso diz ao compilador que sua função é chamada setup, que ela não retorna nenhum dado (void) e que você não passa nenhum parâmetro a ela (parênteses vazios) ". Logo temos que todo programa deve conter está função. Por isso a importância da função setup, ela preparará o arduino para iniciar o código que está gravado.

Na quarta linha temos " pinMode(ledPin, OUTPUT); " a instrução pinMode indica que estamos iniciando uma porta, logo a porta iniciada é o pino 10 (ledPin), e em seguida declaramos o tipo se é saída ou entrada, então do inglês OUTPUT significa saída, logo estamos declarando o pino 10 como saída. Essa instrução é muito importante, pois ela é lida somente uma vez e é ela que fará com que o microcontrolador disponha a saída que precisamos. Observe que o código " pinMode(ledPin, OUTPUT); " está dentro de chaves ({ }), as chaves em um programa indica o inicio e o final das instruções, ou seja, o que estiver dento das chaves será executado se não houver erros, e o que estiver fora o interpretador não irá entender e acusará o programador de erro. Então não se esqueça, se abriu uma chave feche-a, pois dependendo da extensão do código encontrar um erro por falta de fechar uma chave, pode ser penoso.

Em seguida temos " void loop() ", essa função é chamada de função loop, ela é executada infinitamente ou até que o microcontrolador seja resetado, ou seja, o código é lido linha por linha até que se chegue ao final. O programa é lido de cima para baixo, então quando se chega ao final do código, o interpretador não vai para função setup (pois ele já verificou os parâmetros necessários para o código funcionar) e sim para a função loop em um ciclo. Continuando temos em seguida " digitalWrite(ledPin, HIGH); ", a instrução digitalWrite significa que modificaremos o estado da porta (no nosso caso a porta 10), em seguida chamamos a porta 10 (ledPin) e indicamos o seu estado, ou seja, HIGH, que significa alto, dizer que uma porta está em estado alto (HIGH) quer dizer que a porta está apta a ligar o LED, ou seja, haverá circulação de uma corrente elétrica pelo circuito conectado à ela. A instrução digitalWrite é muito útil quando queremos em algum momento modificar o estado de uma porta. Para quem conhece de eletrônica digital e até mesmo analógica HIGH, significará nível lógico alto, ou seja, temos uma tensão (e não voltagem !) de 5 volts disponível na saída, podemos pensar também em binário 0 e 1, onde HIGH é 1, e LOW é 0. Cabe destacar que digitalWrite é usado para modificar as portas digitais do arduino, enquanto que para portas analógicas é utilizado outra instrução (analogWrite).
Em seguida temos a instrução " delay(1000); " ela é usada para gerar um atraso, ou seja, o programa é pausado por um tempo (no caso 1 segundo), o tempo é definido em milisegundos, ou seja, 0,001 segundos. Essa também é mais uma instrução bastante utilizada, e pode servir como um cronômetro dentro do programa, ou o que a imaginação de cada um puder criar.

Agora temos uma expressão que acabamos de ver " digitalWrite(ledPin, LOW) " a unica diferença está no estado '' lógico ''em que se encontra a porta ledPin, ou seja, em nível lógico baixo. E depois temos novamente um atraso '' delay(1000) ", esse ultimo delay gera um atraso, o que faz com que a porta 10 fique com nível lógico baixo por certo período de tempo. Veja que toda instrução está contida entre chaves ({ }), isso significa que essas instruções estão sendo executadas.

Então simplificando, temos o programa em que o arduino pisca um LED. Atente-se nas instruções apresentadas, pois piscar um LED, poderia ser feito de outras maneiras e de forma mais simples. 

Como o bom do aprendizado é testar e ver ele funcionando na prática, montei e verifiquei o código acima, para quem quiser montar também, o esquema de ligação e o componentes necessários estão  logo abaixo:


  1. 1 LED de 5mm, de qualquer cor;
  2. 1 Resistor de 200 Ohms;
  3. Fios jumper;
  4. 1 microcontrolador arduino;
  5. Protoboard.
Os componentes devem ser conectados da seguinte maneira:

Fig. 1 - Disponível em: http://www.novatec.com.br/livros/arduino/Arduino_Vers_oCores.pdf
Esse é o esquema de ligação, atente-se para a conexão do LED, anodo no pino 10 e catodo no GND. Depois de testar o código e ver que ele funciona, faça alguns testes, modifique o delay, altere o pino, divirta-se. E como não podia faltar o filminho, está ai o vídeo que criei mostrando o código em funcionamento no arduino:


Para quem quiser saber por onde estou estudando arduino, estou utilizando o livro Arduino Básico de Michael McRoberts da editora Novatec e também assisto a vídeo-aulas do Renato Aloi no YouTube.

Este e outros programas podem ser baixados aqui.

Bom pessoal, por hoje é só, estarei em breve trazendo mais um vídeo e um tutorial. Qualquer dúvida entre em contato, deixe seu comentário, se inscreva no nosso canal do YouTube Eletrônica de Garagem. Muito obrigado !




loading...

- Arduino - Programa 08: Led Pulsante
Neste tutorial será apresentado um efeito pulsante com LED. Para isso faremos uso de uma saída PWM (Pulse Width Modulation).  Figura 1 - LED PulsanteEste programa traz uma aplicação com iluminação, ou seja, se antes o LED era aceso e apagado,...

- Arduino - Programa 07: Interrupção (parte 1)
No tutorial de hoje vou falar sobre a interrupção do arduino. Esta função permite interromper uma tarefa que esteja sendo executada pelo arduino a qualquer momento. Uma situação do tipo pode parecer sem lógica, mas em determinado problema pode...

- Arduino - Programa 06: Efeito Sequencial Variável Com Led
Olá pessoal, vamos dar continuidade aos tutoriais de arduino, desta vez trago o código do efeito sequencial com LED, porém há uma característica muito interessante nesse código. Este código é o mesmo do programa anterior, só que agora podemos...

- Arduino - Programa 05: Efeito Sequencial Com Led
Olá, vamos ao quinto tutorial de arduino, desta vez trago o código de um efeito sequencial com LED, a ideia em si é simples, acender sequencialmente dez LED's, mas no entanto o código apresenta uma maneira simples e eficiente de acender os...

- Arduino - Programa 04: Semáforo Interativo Com Led
Continuando os tutoriais de arduino, dessa vez trago o código aprimorado do semáforo anterior. A peculiaridade deste código está no fato do usuário poder interagir com o arduino. Mas, o que estamos a aprender de verdade, é como fazer a leitura de...



Eletrônica








.