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

De IFSC
Ir para navegação Ir para pesquisar
imported>Fargoud
imported>Fargoud
Linha 186: Linha 186:
[[imagem: funcs2.jpg|center]]
[[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.
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).  
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.  
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.  
Quando uma porta digital está em estado baixo (LOW), ela estará em 0V; já quando está em estado alto (HIGH), estará com 5 V.  




Linha 196: Linha 196:
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).
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 �e o nome da porta onde est�ão ligados
Para isso 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).  
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
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.  
rode, é o outro.  


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


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

Edição das 16h28min de 2 de outubro de 2015

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
  • 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.

IDE Arduino

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

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

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

Exercícios:

  1. Baseado no programa exemplo acima, o que vc imagina que a função digitalWrite() faça?
  2. Baseado no programa exemplo acima, o que vc pensa sobre as palavras reservadas HIGH e LOW? Para que servem?
  3. Altere o código para que o led da placa fique 2 segundos apagado e 3 segundos aceso.
  4. Porque a função delay() é necessária?
  5. 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()
<< Página do curso AULA 1 - Introdução aos Microcontroladores Arquitetura do Arduíno >>