AULA 1 - Microcontroladores - Técnico: mudanças entre as edições

De IFSC
Ir para navegação Ir para pesquisar
imported>Fargoud
imported>Fargoud
Sem resumo de edição
 
(48 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
[[MCO1870321| << Página do curso ]]
=Introdução aos Microcontroladores=
=Introdução aos Microcontroladores=


Linha 21: Linha 26:
O Arduino também é conhecido como [https://computacaofisicabr.wordpress.com/o-que-e-computacao-fisica/ plataforma de computação física].  
O Arduino também é conhecido como [https://computacaofisicabr.wordpress.com/o-que-e-computacao-fisica/ plataforma de computação física].  


PLATAFORMAS DE COMPUTAÇÃO FÍSICA: são sistemas digitais ligados a
'''PLATAFORMAS DE COMPUTAÇÃO FÍSICA:''' são sistemas digitais ligados a
sensores e atuadores, que permitem construir sistemas que percebam a realidade e respondem com ações físicas.  
sensores e atuadores, que permitem construir sistemas que percebam a realidade e respondem com ações físicas.  
O Arduíno é baseado em uma placa microcontrolada, com acessos de Entrada/Saída (I/O), que permite a criação de sistemas embarcados para aplicações industriais, comerciais, amadoras, profissionais, dos mais variados tipos.  
O Arduíno é baseado em uma placa microcontrolada, com acessos de Entrada/Saída (I/O), que permite a criação de sistemas embarcados para aplicações industriais, comerciais, amadoras, profissionais, dos mais variados tipos.  
Linha 29: Linha 34:




[[imagem: due.jpg|center]]
[[imagem: due2.jpg|center]]


[[imagem: uno.jpg|center]]


A principal diferença entre um Arduino e um computador convencional é que, além ter menor porte (tanto
A principal diferença entre um Arduino e um computador convencional é que, além ter menor porte (tanto
Linha 80: Linha 84:
*Arduino Fio
*Arduino Fio


[[imagem: modelos.jpg|center]]
[[imagem: modelos2.jpg|center]]


===Quadro Comparativo===
===Quadro Comparativo===
Linha 88: Linha 92:


===Arduino UNO:===
===Arduino UNO:===
Talvez o modelo mais popular atualmente seja o Uno:
[[imagem: uno2.jpg|center]]
[[imagem: uno2-3.jpg|center]]
*Microcontrolador: '''ATmega328 '''
*Microcontrolador: '''ATmega328 '''
*Tensão de operação: '''5V '''
*Tensão de operação: '''5V '''
Linha 104: Linha 115:
* O Arduino UNO pode ser alimentado pela porta USB ou por uma fonte externa DC.  
* O Arduino UNO pode ser alimentado pela porta USB ou por uma fonte externa DC.  
*A recomendação é que a fonte externa seja de 7 V a 12 V e pode ser ligada diretamente no conector de fonte ou nos pinos Vin e Gnd.
*A recomendação é que a fonte externa seja de 7 V a 12 V e pode ser ligada diretamente no conector de fonte ou nos pinos Vin e Gnd.
==Instalação do software==
Para criar um projeto com o Arduino, basta comprar uma placa Arduino (utilizaremos o Arduino Uno, como exemplo) (que custa em torno de US$30 no exterior e por volta de R$100 no Brasil), fazer download da interface integrada de desenvolvimento (IDE) e ligar a placa à porta USB do PC.
Como qualquer computador/microcontrolador, o Arduino precisa de um software para executar comandos. Esse software será desenvolvido na Arduino IDE em nosso PC, utilizando a linguagem C/C++.
Após escrever o código, o compilaremos e então faremos o envio da versão compilada para a memória ‘’flash’’ do Arduino, através da porta USB.
A partir do momento que o software é gravado no Arduino não precisamos mais do PC: o Arduino conseguirá executar o software independentemente, modo ‘’standalone’’, desde que seja ligado a uma fonte de energia.
Antes de iniciar nosso projeto precisamos então instalar a IDE.
O ambiente de desenvolvimento do Arduino (IDE) é gratuito e pode ser baixado no seguinte endereço: [[http://www.arduino.org/software#ide Arduino.org/software#ide]]
Vamos lá:
* Ubuntu GNU/Linux 10.10: Basta executar em um terminal:
: sudo aptitude install arduino
ou procurar pelo pacote \arduino no Synaptic (menu Sistema!Administração!Gerenciador de pacotes Synaptic).
* Ubuntu GNU/Linux (anterior a 10.10): Consulte a página de instalação do Arduino em Ubuntu.
* Outras distribuições GNU/Linux: Consulte a página de instalação em outras distribuições GNU/Linux.
* Microsoft Windows: Basta baixar o arquivo de instalação e clicar duas vezes no mesmo. Consulte a página de instalação para as variadas versões do Microsoft Windows.
* Apple Mac OS X: Consulte a página de instalação para o Mac OS X.
Após a instalação, abra a IDE. A seguinte tela será mostrada:
[[imagem: IDEarduino.jpg|center]]
As seguintes configurações são necessárias:
[[imagem: IDEinicio.jpg|center]]
Chamamos um código feito para Arduino de sketch e o salvamos em um arquivo com a extensão .pde.
Com nosso sketch pronto, bastará conectar o Arduino na porta USB e clicar no botão ''upload'' (segundo, da direita para a esquerda { destacado na figura acima).
Após o processo, será vista a mensagem '''Done uploading''' na IDE e então o sketch estará rodando no Arduino, ou seja, o LED acenderá e apagará, de 1 em 1 segundo. Vamos agora à explicação do processo:


==IDE Arduino==
==IDE Arduino==
O ambiente de desenvolvimento do Arduino (IDE) é gratuito e pode ser baixado no seguinte endereço: [[http://www.arduino.org/software#ide Arduino.org/software#ide]]
 


[[imagem: arduino.jpg|center]]
[[imagem: arduino.jpg|center]]
Utiliza uma biblioteca de funções que simplifica a sua programação, por meio de uma sintaxe similar a das linguagens C e C++ (‘’Wiring’’).
Utiliza uma biblioteca de funções que simplifica a sua programação, por meio de uma sintaxe similar a das linguagens C e C++ ([http://wiring.org.co/reference/ ''Wiring'']).




Linha 116: Linha 162:
*Salvar o código do programa  
*Salvar o código do programa  
*Compilar um programa  
*Compilar um programa  
*Transportar o código compilado para a placa do Arduino (menu ‘’’Upload’’’)
*Transportar o código compilado para a placa do Arduino (menu '''Upload''')
Permitir comunicação serial com o PC
*Permitir comunicação serial com o PC
 
 
Mais detalhes sobre a IDE: [[IDEArduino IDE Arduino Menus]]
 


===Funções===  
===Funções===  


As duas principais funções de um programa desenvolvido para o Arduino são:  
As duas principais funções de um código Arduíno, isto é, de um programa desenvolvido para o Arduino são:  
*setup(): onde devem ser definidas algumas configurações iniciais do programa. Executa uma única vez, no início.  
 
*loop(): função principal do programa. Fica executando indefinidamente.  
*''setup()'': onde devem ser definidas algumas configurações iniciais do programa. Executa uma única vez, no início.  
*''loop()'': função principal do programa. Fica executando indefinidamente.  
 
Todo programa para o Arduino deve ter estas duas funções!
 
[[imagem: funcs1.jpg|center]]
 
 
====Exemplo 1: acionando o led da placa (pino digital 13)====
 
Começaremos com o exemplo clássico '''Blink''', que já vem como exemplo, no aplicativo.
 
Para encontrar o exemplo clique em '''File ! Examples ! Digital ! Blink'''.
 
O programa tem como objetivo acender e apagar o LED de um em um segundo. Para compilar
este exemplo não é necessário de nenhuma outra infraestrutura, ou ''hardware'', que não o próprio Arduino.
 
Primeiramente, vamos criar uma variável chamada '''ledPin''' para endereçar o pino de saída, onde o LED da placa já está conectado (variável do tipo inteiro):
 
int ledPin = 13;
 
Assim quando nos referirmos à variável ledPin, estaremos nos referindo ao pino 13.
 
Este tipo de instrução não é obrigatória, mas é uma das boas práticas de programação e organização de código!
 
 
O seguinte passo é classificar o ledPin como pino de '''SAÍDA''', porque os pinos são bidirecionais.
 
Isto é feito da seguinte maneira:
 
void setup() {
  pinMode(ledPin, OUTPUT);
  }
 
 
A função ''pinMode()'' tem como primeiro parâmetro o número do pino e como segundo parâmetro, se
ele é pino de entrada ou saída.
 
Agora começaremos a escrever o processamento.
 
O programa rodará em um ''loop eterno'', pois não deverá haver interrupções (ocorrências ou interferências que mudem o estado).
 
Dentro do loop terá uma função que fará o LED ficar aceso por 1 segundo e depois apagado, por mais um segundo, e assim, sucessivamente.
 
Escreva da seguinte maneira:
 
void loop() {
    digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    delay(1000);
  }
 
A função ''delay(x)'' pára a execução do código durante ''x'' milissegundos (ms). Por isto temos que utilizar o argumento 1000, para setar os atrasos em 1 segundo (=1000 ms).
 
O código completo poderia ser:
 
[[imagem: funcs2.jpg|center]]
 
A função ''digitalWrite()'' '''escreve''' uma informação digital (nível lógico), ou seja, 0 (LOW) ou 1 (HIGH) em uma das saídas digitais.
Seu primeiro parâmetro é o pino de saída, que no caso é o '''ledPin''' (pino 13).
O segundo parâmetro é o estado a ser atribuído ao pino, HIGH ou LOW.
 
Quando uma porta digital está em estado baixo (LOW), ela estará em 0V; já quando está em estado alto (HIGH), estará com 5 V.
 
 
 
Antes de fazer o ''upload'' do programa (carregar o código pra memória FLASH do Arduíno), primeiro deve-se escolher a porta USB em que o Arduino se encontra (conectado ao PC).
 
Para isso vá em '''Tools ! Serial Port ! porta''', para setar onde porta é o nome da porta onde estão ligados
o Arduino (/dev/ttyUSB*, no caso de GNU/Linux, COM* em Windows).
 
Para saber em qual porta o Arduino se encontra, faça por tentativa e erro, logo escolha um e tente rodar, caso não
rode, é o outro.
 
Outro passo que deve-se fazer é escolher o modelo da placa, para isso vá em: '''Tools ! Board''' e o modelo da sua placa.
 
Agora sim para fazer o upload, clique em ''Upload'', como mostra a figura abaixo:
 
[[imagem: upload.jpg|center]]
 
Deve-se ressaltar que a IDE Arduino inclui automaticamente todas as bibliotecas que utilizamos.
 
Se você está acostumado com C/C++, note que não precisamos digitar as diretivas ''include'' para arquivos como o
''stdlib.h'', por exemplo.
 
Tudo é feito de forma automática para facilitar o desenvolvimento do projeto!
 
 
Como o Arduino já vem com um LED internamente conectado á porta 13, não precisaremos de circuitos
externos para que esse projeto funcione, ou seja, bastará fazer ''upload'' daquele código e já teremos o resultado
esperado:
 
[[imagem: blink.jpg|center]]
 
====Exercícios:====
#Altere o código para que o led da placa fique 2 segundos apagado e 3 segundos aceso.
#Altere o código para que o led da placa fique 1 segundo aceso, 2 segundos apagado, mais meio segundo aceso e 300 ms apagado.
#Porque a função ''delay()'' é necessária?
#Porque foi necessário utilizar-se o pino digital 13?
 
===Outras funções===
 
====Digital I/O====
pinMode()
digitalWrite()
digitalRead()
 
====Analógico I/O====
analogReference()
analogRead()
analogWrite() - PWM
 
====Avançado I/O====
tone()
noTone()
shiftOut()
pulseIn()
 
====Tempo====
  millis()
  micros()
  delay()
  delayMicroseconds()
 
====Matemática====
min()
max()
abs()
constrain()
map()
pow() ***só do C/C++ sqrt() ***só do C/C++
 
====Trigonométrica====
sin() ***só do C/C++
cos() ***só do C/C++
tan() ***só do C/C++
 
====Números aleatórios====
randomSeed()
random()


Todo programa para o Arduino deve ter estas duas funções.  
====bits e Bytes====
lowByte()
highByte()
bitRead()
bitWrite()
bitSet()
bitClear()
bit()
 
====Interrupções externas====
attachInterrupt()
detachInterrupt()
 
====Interrupções====
interrupts()
noInterrupts()
 
====Comunicação Serial====
 
Serial.
begin() 
read() 
write() 
print() 
println() e
available()
 
=Acionando display LCD com arduino=
 
 
A maioria das aplicações demanda o uso de um display LCD comum, que nada mais é do que uma matriz 16x2 de leds, para visualização dos resultados.
 
[[image: DispLCD1.png|center]]
 
Nesta aula, veremos como escrever neste, usando o arduino.
 
[https://www.filipeflop.com/blog/controlando-um-lcd-16x2-com-arduino/ Display LCD 16x2 com arduino]
 
==Displays LCD Keypad Shield==
 
 
O curso técnico de Eletroeletrônica do IFSC, Campus Itajaí dispõe de displays LCD 16x2 '''Keypad Shield''', os quais prescindem de todo cabeamento e protoboards externos.
 
[[image: DispLCDshield.png|center]]
 
O funcionamento deste pode ser compreendido nos links:
 
[https://www.arduinoecia.com.br/2013/08/arduino-shield-lcd-16x2-com-keypad.html Funcionamento do Keypad Shield]
 
Maiores detalhes acerca da biblioteca [http://blog.baudaeletronica.com.br/conhecendo-biblioteca-liquidcrystal/ '''''LiquidCrystal.h''''']
 
===Escrever texto deslizante ("scrolling text") no display:===
 
#include <LiquidCrystal.h> 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 
void setup() 
{ lcd.begin(16, 2); 
  lcd.setCursor(0,0); 
  lcd.print("Fernanda - MIC2");
  delay(2000);
 
void loop() 
{ int i;
  for(i=0;i<16;i++)
  { lcd.setCursor(i,1); 
    lcd.print("Texto deslizante"); 
    delay(300);
    lcd.clear();
  }
 
===Texto deslizante usando a função ''scrollDisplayLeft'':===
 
#include <LiquidCrystal.h>
 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 
   
   
===Outras funções===
void setup()  
Digital I/O
{ lcd.begin(16, 2)
pinMode() digitalWrite() digitalRead()
  lcd.setCursor(16,0);
_ Analógico I/O
  lcd.print("Fernanda - MIC2");
analogReference() analogRead() analogWrite() - PWM
_ Avançado I/O
 
tone() noTone() shiftOut() pulseIn()
void loop()
_ Tempo
millis() micros() delay() delayMicroseconds()
  lcd.scrollDisplayLeft()
_ Matemática
  delay(500);
min() max() abs() constrain() map() pow() ***só do C/C++ sqrt() ***só do C/C++
}
_ Trigonométrica
 
sin() ***só do C/C++ cos() ***só do C/C++ tan() ***só do C/C++
[[media: lcdVIDEO.mov video]]
_ N_umeros aleatórios
 
randomSeed() random()
===Identificar tecla pressionada e mostrar no display===
_ bits e Bytes
 
lowByte() highByte() bitRead() bitWrite() bitSet() bitClear() bit()
 
_ Interrupç~oes externas
#include <LiquidCrystal.h> 
attachInterrupt() detachInterrupt()
 
_ Interrupç~oes
LiquidCrystal lcd(8, 9, 4, 5, 6, 7)
interrupts() noInterrupts()
 
_ Comunicação Serial
void setup()  
  lcd.begin(16, 2)
  lcd.setCursor(0,0)
  lcd.print("Fernanda - MIC2");
  lcd.setCursor(0,1)
  lcd.print("Tecla:")
 
void loop()
  int botao; 
  botao = analogRead (0);  //Leitura do valor da porta analógica A0
  lcd.setCursor(10,1)
  if (botao < 99)
  lcd.print ("Direita ")
  } 
  else if (botao < 200)
    lcd.print ("Cima    ")
  } 
  else if (botao < 400)
    lcd.print ("Baixo  ")
  } 
  else if (botao < 600)
    lcd.print ("Esquerda")
  } 
  else if (botao < 800)
    lcd.print ("Select  ")
  } 
}
 
 
[http://blog.usinainfo.com.br/shield-lcd-16x2-lcd-keypad-shield-com-botoes-para-arduino/ Programa-exemplo de uso do Keypad Shield]
 
 
------------------
 
{| border="1" cellpadding="5" cellspacing="0"
! style="background: #cdc5bf;" | [[MCO1870321| << Página do curso ]]
! style="background: #cdc5bf;" | AULA 1 - Introdução aos Microcontroladores
! style="background: #cdc5bf;" | [[AULA 2 - Microcontroladores - Técnico| Arquitetura do Arduíno >> ]]
|}

Edição atual tal como às 09h37min de 8 de agosto de 2018


<< Página do curso


Introdução aos Microcontroladores

Apresentação sobre Microcontroladores

Apostila sobre Microcontroladores

A plataforma Arduíno

(Extraído da apostila Curso de Arduíno, de Álvaro Justen e do curso Programação Básica em Arduíno, UFSC)

Arduino 1 é um projeto que engloba software e hardware e tem como objetivo fornecer uma plataforma fácil para prototipação de projetos interativos, utilizando um microcontrolador.

O projeto do Arduino teve início em 2005 na cidade de Ivrea, Itália.

O Arduino é composto por uma placa com microcontrolador Atmel AVR e um ambiente de programação baseado em Wiring e C++.

Tanto o hardware como o ambiente de programação do Arduino são livres, ou seja, qualquer pessoa pode modificá-los e reproduzi-los.


O Arduino também é conhecido como plataforma de computação física.

PLATAFORMAS DE COMPUTAÇÃO FÍSICA: são sistemas digitais ligados a sensores e atuadores, que permitem construir sistemas que percebam a realidade e respondem com ações físicas. O Arduíno é baseado em uma placa microcontrolada, com acessos de Entrada/Saída (I/O), que permite a criação de sistemas embarcados para aplicações industriais, comerciais, amadoras, profissionais, dos mais variados tipos.


Existem inúmeros modelos de Arduínos, como veremos na sequência, mas existem alguns mais populares, como o antigo Duemilanove (2009, em italiano) e o Uno, muito utilizado atualmente.


Due2.jpg


A principal diferença entre um Arduino e um computador convencional é que, além ter menor porte (tanto no tamanho quanto no poder de processamento), o Arduino utiliza dispositivos diferentes para entrada e saída em geral.

Por exemplo: em um PC utilizamos teclado e mouse como dispositivos de entrada e monitores e impressoras como dispositivos de saída; já em projetos com o Arduino os dispositivos de entrada e saída são circuitos elétricos/eletrônicos.


Como a interface do Arduino com outros dispositivos está mais perto do meio físico que a de um PC, podemos ler dados de sensores (temperatura, luz, pressão etc.) e controlar outros circuitos (lâmpadas, motores, eletrodomésticos etc.), dentre outras coisas que não conseguiríamos diretamente com um PC.

A grande diferença com relação ao uso desses dispositivos, no caso do Arduino, é que, na maior parte das vezes, nós mesmos construímos os circuitos que são utilizados, ou seja, não estamos limitados apenas a produtos existentes no mercado: o limite é dado por nosso conhecimento e criatividade! O melhor de tudo nesse projeto é que seu software, hardware e documentação so abertos. O software é livre (GNU GPL2), o hardware é totalmente aberto, especificado (basta entrar no site e baixar os esquemas) e a documentação está disponível em Creative Commons3, os usuários podem colaborar (seja escrevendo documentação, seja traduzindo) através da wiki!



Referências:

  1. Site oficial Projeto Arduino
  2. Baixar apostila de Álvaro Justen
  3. Curso de programação básica para Arduíno

Modelos de Arduíno

  • Arduino UNO
  • Arduino Leonardo
  • Arduino Due
  • Arduino Esplora
  • Arduino Mega
  • Arduino Mega ADK
  • Arduino Ethernet
  • Arduino Mini
  • Arduino LilyPad
  • Arduino Micro
  • Arduino Nano
  • Arduino ProMini
  • Arduino Pro
  • Arduino Fio
Modelos2.jpg

Quadro Comparativo

(arduino.org)

Quadro.jpg

Arduino UNO:

Talvez o modelo mais popular atualmente seja o Uno:

Uno2.jpg
Uno2-3.jpg
  • Microcontrolador: ATmega328
  • Tensão de operação: 5V
  • Tensão recomendada (entrada): 7-12V
  • Limite da tensão de entrada: 6-20V
  • Pinos digitais: 14 (seis pinos com saída PWM)
  • Entrada analógica: 6 pinos
  • Corrente contínua por pino de entrada e saída: 40 mA
  • Corrente para o pino de 3.3 V: 50 mA
  • Quantidade de memória FLASH: 32 KB (ATmega328) onde 0.5 KB usado para o bootloader
  • Quantidade de memória SRAM: 2 KB (ATmega328)
  • Quantidade de memória EEPROM: 1 KB (ATmega328)
  • Velocidade de clock: 16 MHz

Alimentação

  • O Arduino UNO pode ser alimentado pela porta USB ou por uma fonte externa DC.
  • A recomendação é que a fonte externa seja de 7 V a 12 V e pode ser ligada diretamente no conector de fonte ou nos pinos Vin e Gnd.

Instalação do software

Para criar um projeto com o Arduino, basta comprar uma placa Arduino (utilizaremos o Arduino Uno, como exemplo) (que custa em torno de US$30 no exterior e por volta de R$100 no Brasil), fazer download da interface integrada de desenvolvimento (IDE) e ligar a placa à porta USB do PC.

Como qualquer computador/microcontrolador, o Arduino precisa de um software para executar comandos. Esse software será desenvolvido na Arduino IDE em nosso PC, utilizando a linguagem C/C++.

Após escrever o código, o compilaremos e então faremos o envio da versão compilada para a memória ‘’flash’’ do Arduino, através da porta USB.

A partir do momento que o software é gravado no Arduino não precisamos mais do PC: o Arduino conseguirá executar o software independentemente, modo ‘’standalone’’, desde que seja ligado a uma fonte de energia. Antes de iniciar nosso projeto precisamos então instalar a IDE.

O ambiente de desenvolvimento do Arduino (IDE) é gratuito e pode ser baixado no seguinte endereço: [Arduino.org/software#ide]

Vamos lá:

  • Ubuntu GNU/Linux 10.10: Basta executar em um terminal:
sudo aptitude install arduino

ou procurar pelo pacote \arduino no Synaptic (menu Sistema!Administração!Gerenciador de pacotes Synaptic).

  • Ubuntu GNU/Linux (anterior a 10.10): Consulte a página de instalação do Arduino em Ubuntu.
  • Outras distribuições GNU/Linux: Consulte a página de instalação em outras distribuições GNU/Linux.
  • Microsoft Windows: Basta baixar o arquivo de instalação e clicar duas vezes no mesmo. Consulte a página de instalação para as variadas versões do Microsoft Windows.
  • Apple Mac OS X: Consulte a página de instalação para o Mac OS X.

Após a instalação, abra a IDE. A seguinte tela será mostrada:

IDEarduino.jpg

As seguintes configurações são necessárias:

IDEinicio.jpg

Chamamos um código feito para Arduino de sketch e o salvamos em um arquivo com a extensão .pde.

Com nosso sketch pronto, bastará conectar o Arduino na porta USB e clicar no botão upload (segundo, da direita para a esquerda { destacado na figura acima).

Após o processo, será vista a mensagem Done uploading na IDE e então o sketch estará rodando no Arduino, ou seja, o LED acenderá e apagará, de 1 em 1 segundo. Vamos agora à explicação do processo:

IDE Arduino

Arduino.jpg

Utiliza uma biblioteca de funções que simplifica a sua programação, por meio de uma sintaxe similar a das linguagens C e C++ (Wiring).


As principais funcionalidades do IDE do Arduino são:

  • Escrever o código do programa
  • Salvar o código do programa
  • Compilar um programa
  • Transportar o código compilado para a placa do Arduino (menu Upload)
  • Permitir comunicação serial com o PC


Mais detalhes sobre a IDE: IDEArduino IDE Arduino Menus


Funções

As duas principais funções de um código Arduíno, isto é, de um programa desenvolvido para o Arduino são:

  • setup(): onde devem ser definidas algumas configurações iniciais do programa. Executa uma única vez, no início.
  • loop(): função principal do programa. Fica executando indefinidamente.

Todo programa para o Arduino deve ter estas duas funções!

Funcs1.jpg


Exemplo 1: acionando o led da placa (pino digital 13)

Começaremos com o exemplo clássico Blink, que já vem como exemplo, no aplicativo.

Para encontrar o exemplo clique em File ! Examples ! Digital ! Blink.

O programa tem como objetivo acender e apagar o LED de um em um segundo. Para compilar este exemplo não é necessário de nenhuma outra infraestrutura, ou hardware, que não o próprio Arduino.

Primeiramente, vamos criar uma variável chamada ledPin para endereçar o pino de saída, onde o LED da placa já está conectado (variável do tipo inteiro):

int ledPin = 13;

Assim quando nos referirmos à variável ledPin, estaremos nos referindo ao pino 13.

Este tipo de instrução não é obrigatória, mas é uma das boas práticas de programação e organização de código!


O seguinte passo é classificar o ledPin como pino de SAÍDA, porque os pinos são bidirecionais.

Isto é feito da seguinte maneira:

void setup() {
  pinMode(ledPin, OUTPUT);
 }


A função pinMode() tem como primeiro parâmetro o número do pino e como segundo parâmetro, se ele é pino de entrada ou saída.

Agora começaremos a escrever o processamento.

O programa rodará em um loop eterno, pois não deverá haver interrupções (ocorrências ou interferências que mudem o estado).

Dentro do loop terá uma função que fará o LED ficar aceso por 1 segundo e depois apagado, por mais um segundo, e assim, sucessivamente.

Escreva da seguinte maneira:

void loop() {
    digitalWrite(ledPin, HIGH);
    delay(1000);
    digitalWrite(ledPin, LOW);
    delay(1000);
 }

A função delay(x) pára a execução do código durante x milissegundos (ms). Por isto temos que utilizar o argumento 1000, para setar os atrasos em 1 segundo (=1000 ms).

O código completo poderia ser:

Funcs2.jpg

A função digitalWrite() escreve uma informação digital (nível lógico), ou seja, 0 (LOW) ou 1 (HIGH) em uma das saídas digitais. Seu primeiro parâmetro é o pino de saída, que no caso é o ledPin (pino 13). O segundo parâmetro é o estado a ser atribuído ao pino, HIGH ou LOW.

Quando uma porta digital está em estado baixo (LOW), ela estará em 0V; já quando está em estado alto (HIGH), estará com 5 V.


Antes de fazer o upload do programa (carregar o código pra memória FLASH do Arduíno), primeiro deve-se escolher a porta USB em que o Arduino se encontra (conectado ao PC).

Para isso vá em Tools ! Serial Port ! porta, para setar onde porta é o nome da porta onde estão ligados o Arduino (/dev/ttyUSB*, no caso de GNU/Linux, COM* em Windows).

Para saber em qual porta o Arduino se encontra, faça por tentativa e erro, logo escolha um e tente rodar, caso não rode, é o outro.

Outro passo que deve-se fazer é escolher o modelo da placa, para isso vá em: Tools ! Board e o modelo da sua placa.

Agora sim para fazer o upload, clique em Upload, como mostra a figura abaixo:

Upload.jpg

Deve-se ressaltar que a IDE Arduino inclui automaticamente todas as bibliotecas que utilizamos.

Se você está acostumado com C/C++, note que não precisamos digitar as diretivas include para arquivos como o stdlib.h, por exemplo.

Tudo é feito de forma automática para facilitar o desenvolvimento do projeto!


Como o Arduino já vem com um LED internamente conectado á porta 13, não precisaremos de circuitos externos para que esse projeto funcione, ou seja, bastará fazer upload daquele código e já teremos o resultado esperado:

Blink.jpg

Exercícios:

  1. Altere o código para que o led da placa fique 2 segundos apagado e 3 segundos aceso.
  2. Altere o código para que o led da placa fique 1 segundo aceso, 2 segundos apagado, mais meio segundo aceso e 300 ms apagado.
  3. Porque a função delay() é necessária?
  4. Porque foi necessário utilizar-se o pino digital 13?

Outras funções

Digital I/O

pinMode() 
digitalWrite() 
digitalRead()

Analógico I/O

analogReference() 
analogRead() 
analogWrite() - PWM

Avançado I/O

tone() 
noTone() 
shiftOut() 
pulseIn()

Tempo

 millis() 
 micros() 
 delay() 
 delayMicroseconds()

Matemática

min() 
max() 
abs() 
constrain() 
map() 
pow() ***só do C/C++ sqrt() ***só do C/C++

Trigonométrica

sin() ***só do C/C++ 
cos() ***só do C/C++ 
tan() ***só do C/C++

Números aleatórios

randomSeed() 
random()

bits e Bytes

lowByte() 
highByte() 
bitRead() 
bitWrite() 
bitSet() 
bitClear() 
bit()

Interrupções externas

attachInterrupt() 
detachInterrupt()

Interrupções

interrupts() 
noInterrupts()

Comunicação Serial

Serial.

begin()  
read()  
write()  
print()  
println() e 
available()

Acionando display LCD com arduino

A maioria das aplicações demanda o uso de um display LCD comum, que nada mais é do que uma matriz 16x2 de leds, para visualização dos resultados.

DispLCD1.png

Nesta aula, veremos como escrever neste, usando o arduino.

Display LCD 16x2 com arduino

Displays LCD Keypad Shield

O curso técnico de Eletroeletrônica do IFSC, Campus Itajaí dispõe de displays LCD 16x2 Keypad Shield, os quais prescindem de todo cabeamento e protoboards externos.

DispLCDshield.png

O funcionamento deste pode ser compreendido nos links:

Funcionamento do Keypad Shield

Maiores detalhes acerca da biblioteca LiquidCrystal.h

Escrever texto deslizante ("scrolling text") no display:

#include <LiquidCrystal.h>  
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);  
void setup()   
{ lcd.begin(16, 2);  
  lcd.setCursor(0,0);  
  lcd.print("Fernanda - MIC2");
  delay(2000);
}  
  
void loop()  
{ int i;
  for(i=0;i<16;i++)
  { lcd.setCursor(i,1);  
    lcd.print("Texto deslizante");  
    delay(300);
    lcd.clear();
 }

Texto deslizante usando a função scrollDisplayLeft:

#include <LiquidCrystal.h> 
 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);  

void setup()   
{ lcd.begin(16, 2);   
  lcd.setCursor(16,0); 
  lcd.print("Fernanda - MIC2");
}  
  
void loop()  
{  
  lcd.scrollDisplayLeft();   
  delay(500); 
}

media: lcdVIDEO.mov video

Identificar tecla pressionada e mostrar no display

#include <LiquidCrystal.h>  
 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);  
  
void setup()   
{  
 lcd.begin(16, 2);  
 lcd.setCursor(0,0);  
 lcd.print("Fernanda - MIC2");
 lcd.setCursor(0,1);  
 lcd.print("Tecla:");  
}  
  
void loop()  
{  
 int botao;  
 botao = analogRead (0);  //Leitura do valor da porta analógica A0
 lcd.setCursor(10,1);  
 if (botao < 99) {  
  lcd.print ("Direita ");  
 }  
 else if (botao < 200) {  
    lcd.print ("Cima    ");  
 }  
 else if (botao < 400){  
    lcd.print ("Baixo   ");  
 }  
 else if (botao < 600){  
   lcd.print ("Esquerda");  
 }  
 else if (botao < 800){  
   lcd.print ("Select  ");  
 }  
}


Programa-exemplo de uso do Keypad Shield



<< Página do curso AULA 1 - Introdução aos Microcontroladores Arquitetura do Arduíno >>