Exercícios de programação à fixação dos conceitos

Antes de mais nada, você precisará ter uma pequena quantidade de materiais para realizar as experiências.

  1. Uma placa do Arduino Uno R3
  2. Cabo USB (AB)
  3. Protoboard
  4. Jumpers (MM e MF)
  5. Três leds (vermelho, verde e amarelo – um de cada cor)
  6. Um led RGB
  7. Resistores (220R, 1K, 10K)
  8. Um diodo 1N4007
  9. Um transistor BC549
  10. Uma chave táctil (push-button)
  11. Um potenciômetro linear (1K ou 5K ou 10K)
  12. Um display de 7 segmentos
  13. Um buzzer de 5 Volts
  14. Um relé de 5 Volts
  15. Um LDR de 10K
  16. Um termistor NTC de 10K
  17. Um micro servo motor SG-90
  18. Um motor de 6 Volts

Partindo da premissa que a IDE foi instalada – inclusive para placas genéricas, devido ao chip CH340G -, é necessário configurá-la  para reconhecer a placa, e qual porta de comunicação virtual ela está instalada.

Clique para aumentar

Clique para aumentar

Passe o mouse sobre cada um dos botões que compõem a barra de botões, identificando as funções : Verificar, Carregar, Novo, Abrir e Salvar – contidos no canto superior esquerdo, logo abaixo à barra de menu.

É possível redefinir algumas configurações, caso queira aumentar o tamanho da fonte ou onde salvar. Para tanto : Barra de Menu > Arquivo > Preferências > Configurações.

Existe a possibilidade de envio do programa compilado para terceiros. Para tanto : Barra de Menu > Sketch > Exportar binário compilado.

A vantagem é que você protege sua propriedade intelectual de alterações, embora seja possível fazer Engenharia Reversa. Isso não quer dizer que o código fonte voltará; apenas os mneumônicos do código estarão visíveis.

Daqui em diante, iremos praticar vários exemplos. Embora o código do exemplo aberto esteja digitado em algum lugar, inclusive no próprio SDK do Arduino, minha sugestão é : digite o código. Você pode até estar gastando tempo, que lhe ajudará a fixar melhor as funções. Acredite. Sou de uma escola que a gente aprendia fazendo; não copiando e colando.

 

Propostas de montagem

1° exemplo – “Hello World” do Arduino com um led da placa piscando na porta digital 13 (LED_BUILTIN ).

Clique para expandir o código Blinky

Clique para expandir o código Blinky

Digite o código contido nesta tela e como não é necessário qualquer hardware adicional, carregue o sketch na placa e observe o resultado final.

 

2° exemplo – Mude o endereço para outra porta de saída. Note como sugeri a forma de endereçamento da nova porta e faça a montagem abaixo do código.

Clique para expandir o código Blinky 2

Clique para expandir o código Blinky 2 – arquivo pessoal

 

Monte esta proposta

Monte esta proposta – arquivo pessoal

Podemos aproveitar este exemplo para acionar um motor através de um relé, protegido por um diodo. E uma pequena alteração no código original do exemplo 2, como segue abaixo.

Proposta de circuito – Arquivo pessoal

Código com poucas alterações

 

3° exemplo – Neste exemplo iremos usar o led RGB. Atenção deve ser dada ao tipo de led RGB, porque existem as versões Anodo comum e catodo comum – Em consequência desta variável de hardware, a lógica a ser usada é diferente. Será empregado a instrução “int” e portas analógicas.

Digite código

Digite código

Note como uma função do desenvolvedor pode ser criada dentro do sketch – void setCor (int vermelho,int verde, int azul), que é compilado tudo junto.

 

... e realize a montagem no protoboard

… e realize a montagem no protoboard

Dentro da função loop, retire todo o seu conteúdo e digite apenas a função analogWrite (pino R, 255). Varie o segundo argumento e veja o resultado.

 

4° exemplo – Led acionado por chave tactil – funções minuteria e liga-desliga

Neste exemplo temos a aplicação das instruções “if/else”, “switch/case/default/break”

Montagem

Montagem

Código 1

Código 1 – empregando if/else

Código 1

Código 2 – switch/case/default/break

 

5° exemplo – Fazendo barulho com um buzzer

Neste exemplo, recomenda-se atenção a pinagem positiva do buzzer. Empregando as funções tone e noTone.

Montagem

Montagem

Código 1

Código 1 – função tone e noTone

Código 4

Código 2 – usando a função digitalWrite

 

6° exemplo – Comunicação serial – Um “Hello World” na tela do PC com o Serial Monitor

O exemplo de código abaixo serve para realizar uma contagem iniciando em 0 e não irá parar, até que a execução seja encerrada. Faça um comentário nas linhas 1 e 10 (usando //). Abaixo da linha 10 adicione a seguinte linha:

Serial.println (“Hello World !”);

Não se esqueça de ativar o Serial Monitor, no canto superior direito.

Código

Código

Este código não contém um instanciamento da classe incluída, porque a chamada das funções contidas na classe são previamente conhecidas pelo compilador.

As linhas 5 e 10 são a forma como invocamos os métodos para utilizar nos processos.

O desenvolvedor é encorajado a inspecionar os métodos contidos dentro da classe.

 

Este código será reutilizado no exercício a seguir.

 

7° exemplo – Usando um potenciômetro – trabalhando com porta analógica e monitor serial

Montagem

Montagem

Código 1

Código 1 – a porta analógica varia de 0 a 1023

Código 2

Código 2

 

Observe a riqueza deste pequeno código :

  1. Emprego da função Serial.begin
  2. Emprego da função Serial.println
  3. Emprego da função analogRead
  4. Os caracteres || tem o valor da função lógica de condição OR

Os exemplos propostos fazem:

  1. Leitura e impressão constante – código 1
  2. Leitura e impressão  somente quando houver alteração – código 2

 

8° exemplo – A função “map” – Interpolação

Há situações em que a faixa de atuação de um sinal analógico está acima da faixa de trabalho de um sinal interno. Para estes casos, usamos a função map.

Código usando a função "map"

Código usando a função “map”

Montagem - Arquivo pessoal

Montagem – Arquivo pessoal

 

9° exemplo – Acionamento de servo motor

Código

Código

Note que é incluída a biblioteca Servo.h no cabeçalho do código. Esta ação pode ser feita de duas formas:

  • Manualmente – digitação direta
  • Inclusão automática – Barra de menu > Sketch > incluir biblioteca > Servo

Note a linha 3 : Ela contém um instanciamento da classe incluída.

Na linha 8 está a forma como invocamos os métodos para utilizar nos processos.

O desenvolvedor é encorajado a inspecionar os métodos contidos dentro da classe.

Montagem - arquivo pessoal

Montagem – arquivo pessoal

 

10° exemplo – Usando a E2PROM interna do Arduino – memória Flash –

Este tipo de memória preserva os dados – não volátil, mesmo que a placa seja desenergizada ou que um reset seja aplicado.

Código

 

11° exemplo – LDR – sensor dependente da luz

Circuito

O código

 

12° exemplo – Termistor – Sensor de temperatura do tipo NTC (negative temperature coeficient)

Circuito

Note que é incluída a biblioteca Termistor.h no cabeçalho do código. Esta ação pode ser feita de duas formas:

  • Manualmente – digitação direta
  • Inclusão automática – Barra de menu > Sketch > incluir biblioteca > Termistor

Código

Note a linha 3 : Ela contém um instanciamento da classe incluída.

Na linha 12 está a forma como invocamos os métodos para utilizar nos processos.

O desenvolvedor é encorajado a inspecionar os métodos contidos dentro da classe.

 

13° exemplo – Entrada de dados pela serial com atuação

Circuito

Código

 

14° exemplo – Display de 7 segmentos (anodo comum)

Empregado o Arduino Nano neste projeto, devido as suas dimensões reduzidas. Por ser o maior dos exemplos, disponibilizo tudo que fiz.

Esquemático

Esquemático

Placa

Placa

Como o local onde hospedo minha página não permite colocar arquivos compactados, por questões de segurança, deixo os links no 4Shared, logo abaixo, caso queira reproduzir o exemplo. O diferencial neste exemplo é que integrei um controle remoto de carrinho para comandar a distância.

Esquemático e placa (em Eagle)

Código fonte (em Arduino)

Note que foi usado a vírgula para criar várias variáveis.

Foi usado neste exemplo a instrução for entre { }; embora exista a forma de usar uma linha só, que é  chamada de inline.

Por fim, podemos apenas verificar nosso código, sem transferir para o microcontrolador : Barra de menu > Sketch > Verificar.

 

<Voltar a página inicial>

Comentários encerrados.