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
 
(73 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=


[[media: mic.pdf| Apresentação sobre Microcontroladores]]
[[media: microc.pdf| Apresentação sobre Microcontroladores]]
 
[[media: microcapostila.pdf | Apostila sobre Microcontroladores]]


=A plataforma Arduíno=
=A plataforma Arduíno=
(Extraído da apostila [[media: apostilaArduino1.pdf| Curso de Arduíno]], de Álvaro Justen e do curso [http://www.oficinaderobotica.ufsc.br 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
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.  
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 [http://wiring.org.co/reference/ Wiring] e C++.  


Atualmente, o projeto está na versão Mega, porém muitos Arduinos encontrados hoje são da versão Uno, e Duemilanove (2009, em italiano), que possui um clock de 16MHz, 2kB de memoria RAM, 32kB de memoria flash, 14 portas digitais e 6 entradas analogicas.
Tanto o hardware como o ambiente de programação do Arduino são [https://pt.wikipedia.org/wiki/Hardware_livre livres], ou seja, qualquer pessoa pode modificá-los e reproduzi-los.  




[[imagem: due.jpg|center]]
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
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.
 
 
[[imagem: due2.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 33: Linha 57:
está disponível em Creative Commons3, os usuários podem colaborar (seja escrevendo documentação, seja
está disponível em Creative Commons3, os usuários podem colaborar (seja escrevendo documentação, seja
traduzindo) através da wiki!
traduzindo) através da wiki!
----
Referências:
# [http://www.arduino.cc/| ''Site'' oficial Projeto Arduino]
# [http://www.CursoDeArduino.com.br/apostila| Baixar apostila de Álvaro Justen]
# [http://oficinaderobotica.ufsc.br/files/2013/04/Programação-em-Arduino-Módulo-Básico.pdf 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
[[imagem: modelos2.jpg|center]]
===Quadro Comparativo===
(arduino.org)
[[imagem: quadro.jpg|center]]
===Arduino UNO:===
Talvez o modelo mais popular atualmente seja o Uno:
[[imagem: uno2.jpg|center]]
[[imagem: uno2-3.jpg|center]]
*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: [[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==
[[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++ ([http://wiring.org.co/reference/ ''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!
[[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()
====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); 
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  "); 
  } 
}
[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 >>