|
|
Linha 1: |
Linha 1: |
| =Plataforma Arduíno=
| |
|
| |
| (Extraído da apostila [https://wiki.ifsc.edu.br/mediawiki/images/2/22/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 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++.
| |
| *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.
| |
|
| |
|
| |
| 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: Fig001_MCO018703.jpg|center]]
| |
|
| |
|
| |
| 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!
| |
|
| |
|
| |
| ==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]]
| |
|
| |
| *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
| |
|
| |
| ===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()
| |
|
| |
| =Referências=
| |
| [1] [http://www.arduino.cc/ ''Site'' oficial Projeto Arduino]
| |
|
| |
| [2] [http://www.CursoDeArduino.com.br/apostila Baixar apostila de Álvaro Justen]
| |
|
| |
| [3] [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]
| |
|
| |
|
|
| |
|
Linha 293: |
Linha 4: |
|
| |
|
| ----- | | ----- |
| [[Imagem:icone_voltar.png|link=MCO018703_2018_1_AULA01]] | | [[Imagem:icone_voltar.png|link=MCO018703_2018_1_AULA08]] |
| [[Imagem:icone_menu.png|link=MCO018703_2018_1#Aulas]] | | [[Imagem:icone_menu.png|link=MCO018703_2018_1#Aulas]] |
| [[Imagem:icone_prox.png|link=MCO018703_2018_1_AULA03]] | | [[Imagem:icone_prox.png|link=MCO018703_2018_1_AULA10]] |