StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o...

43
25/05/2017 1 Prof. Stefano 1 Mini-curso Prof. Stefano O que é o Arduino? “Arduino é uma plataforma de prototipagem eletrônica open- source baseado em hardware e software, flexível e fácil de usar. É destinado a artistas, designers, hobbistas e qualquer pessoa interessada em criar objetos ou ambientes interativos.” fonte: http://www.arduino.cc/ 2

Transcript of StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o...

Page 1: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

1

Prof. Stefano1

Mini-curso

Prof. Stefano

O que é o Arduino?

• “Arduino é uma plataforma de prototipagem eletrônica open-source baseado em hardware e software, flexível e fácil de usar. Édestinado a artistas, designers, hobbistas e qualquer pessoainteressada em criar objetos ou ambientes interativos.” fonte:http://www.arduino.cc/

2

Page 2: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

2

O que é o Arduino?

• Ou seja,

– O Arduino é uma placa eletrônica que possui ummicrocontrolador, onde você pode desenvolver programas,para receber sinais de sensores e botões nas suas entradas econtrolar leds e outras cargas nas suas saídas.

– Para fazer sua programação utiliza-se um software específicobaseado em linguagem C;

– Ele baseia-se na filosofia de hardware e software livre, ondepode-se baixar gratuitamente o software e o hardware éaberto, para que se alguém quiser montar sua própria placa oupode ser comprado pronta por um dos inúmeros fornecedoresexistentes.

3

Exemplo de placa do Arduino

4

Entradas/Saídas DigitaisAlguns componentesde uma placa doArduino

Entradas Analógicas

microcontrolador

ConectorMini-B USB

Entradafonte

Modelo

Alimentação

Page 3: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

3

Outros modelos

5Arduino Nano

Arduino Mega

Software Arduino

• IDE (Integrated Development Environment – Ambiente Integrado

de Desenvolvimento)

6

Verifica o programa

Carrega o programa no microcontrolador

Programa novo

Abrir um programa

Salvar o programa

Page 4: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

4

Exemplo prático – exer01

• Digite o programa a seguir no IDE do Arduino.

7

Após digitar aperteo primeiro íconepara verificar o

programa

Salve o programa como exer01.

Exemplo prático – exer01

• Explicando o programa

// - permite a inclusão de comentários, que são importantes paradocumentar o projeto. Funciona por linha;

/* */ - comentário para várias linhas;

; - o ponto e vírgula é utilizado para indicar o fim do comando;

No programa temos no mínimo duas funções obrigatórias:

void setup ( ) - onde fazemos as configurações, como por exemplose os pinos são entrada (INPUT) ou saída (OUTPUT).

É executada somente uma vez;

void loop ( ) – é a principal função do programa onde ele éexecutado continuamente;

8

Page 5: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

5

Exemplo prático – exer01

• Explicando o programa

• pinMode(pino, MODO); - instrução para definir se o pino éentrada (INPUT) ou saída (OUTPUT). Ex: pinMode (7,INPUT);

• digitalWrite(pino, VALOR); - instrução que coloca determinadopino em nível lógico alto (HIGH – 5 volts na saída) ou baixo (LOW –zero volts na saída). Neste caso irá liga o led do pino 13, que estána própria placa;

• delay(tempo em ms); - instrução que gera um atraso, emmilisegundos. Lembrando que 1000 milisegundos é igual a 1segundo;

9

Exemplo prático – exer01

• Conecte a placa do arduino ao computador;

• Em Tools verifique o modelo de placa e porta que está conectada;

• Depois carregue o programa no arduino;

10

placa

Porta serial

Page 6: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

6

Exemplo prático – exer01

• Programa final com comentários.

• Altere o programa para que pisque a cada 2 segundos.11

Examples e Sketchbook

• Abra o exemplo Blink. File � Examples � 01 Basics � Blink;

• Altere o tempo para 500 ms e salve.

12

Page 7: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

7

Examples e Sketchbook

• Os exemplos (examples) são arquivos somente de leitura e nãoserá permitido salvar;

• Quando pressionamos o OK o IDE irá abrir uma nova página paraque seja salvo no livro de rascunho (Sketchbook), geralmente naárea de documentos;

13

Entrada Analógica

• O arduino tem 6 entradas analógicas, onde é possível aplicar umatensão entre 0 e 5 volts que serão convertidos para um valordigital entre 0 e 1023, pois o conversor é de 10 bits (210 = 1024);

analogRead(pino); � retorna um valor entre 0 e 1023.

• Exemplo de aplicação:– Int valor = analogRead(A0); // Faz a leitura da entrada A0 e atribui este

valor a variável valor.

14

A função map converte o valor deuma variável de uma escala para outra.

map(variável,ini,fim,iniNova,fimNova)

map(valor,0,1023,0,100)

Page 8: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

8

Comunicação Serial

• O software do arduino tem uma função específica que permiteobter informações do microcontrolador durante a execução doprograma utilizando os comandos de comunicação serial.

• Para isso devemos inicialmente definir a taxa de transmissão em“bits por segundo”. O usual é que a transmissão seja de 9600 bitspor segundo.

• No programa a seguir enviaremos o valor obtido da entradaanalógica e depois o valor convertido

15

Comunicação Serial

16

int valor,valorCon;void setup() {

pinMode(9, OUTPUT); Serial.begin(9600);

}

void loop() {

valor = analogRead(A0);valorCon= map(valor,0,1023,0,255); analogWrite(9,valorCon); Serial.print(“\n Entrada = “);Serial.print(valor);Serial.print(“ \t Convertido = “);Serial.println(valorCon);

}

Exemplo de programa com comunicação serial

Page 9: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

9

Comunicação Serial

• Funções para comunicação serial:

• Serial.begin(taxa); -- inicializa a comunicação serial na taxadesejada;

• Serialprint(“mensagem”); -- envia para tela a mensagem

• Serialprintln(“mensagem”); -- envia para tela e vai para novalinha;

• Serial.read( ); - lê dados da porta serial;

– Funções de caracteres:

– \n - nova linha;

– \t – tabulação horizontal;

– \a – tabulação vertical;

17

Comunicação Serial

18

Para visualizar as informações abra o “Serial Monitor”

Page 10: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

10

Comunicação Serial

Exercício

Desenvolver um programa para monitorar as entradas digitais 2 e 3.

DigitalReadSerial

Page 11: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

11

SHIELD LCD

DISPLAY ALFANUMÉRICO

21

MODELO 16 COLUNAS POR 2 LINHAS

SHIELD LCD

22Fonte: http://www.arduinoecia.com.br/2013/08/arduino-shield-lcd-16x2-com-keypad.html

http://blog.filipeflop.com/display/controlando-um-lcd-16x2-com-arduino.html

Page 12: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

12

Composto por displayalfanumérico com 16 colunas e 2linhas.

114 Pinagem

É preciso verificar a pinagem com ofabricante, mas no geral encontramos aseguinte sequência para o LCD.

DISPLAY DE CRISTAL LÍQUIDO - LCD

No caso deste shield são utilizados os pinos Os botões utilizam a entrada analógica A0

Sobram os pinos 0, 1, 2, 3, 11, 12, 13 (digitais), e A1, A2, A3, A4, A5 (analógicos)

Page 13: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

13

Programas: fazer uma versão ensinando a programar utilizando o LCD- mostrar no lcd, posicionar linha coluna, apagar, tempo- leitura da entrada analógica A1. Valor aparece na tela lcd e utilizar função MAP em outro ponto do LCD. Depois mostrar o valor da entrada utilizando as chaves e A0- mostrar o conceito de variável e constante utilizando o LCD e inicialização dos elementos- tipos de if com as chaves, switch- for chaves e função scroll- while – chaves- arrays e matrizes- mini projetos - menu

-? mostrar operação matemática?

SHIELD LCD

26

#include <LiquidCrystal.h> // Inclui biblioteca do LCD

// Inicializa a biblioteca com os números dos pinos da interfaceLiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Cria um LCD objeto com estes pinos//ATENÇÃO: Diferente dos exemplos do Arduino lcd(12, 11, 5, 4, 3, 2);

void setup() {lcd.begin(16, 2); // Seta o display 16 colunas por 2 linhas

}

void loop() {

lcd.clear(); // Limpa Displaylcd.print("IFSC"); // Escreve o textodelay(2000); //espera em mslcd.setCursor(5,1); // Cursor coluna 5 linha 1 (linhas 0 ou 1)lcd.print("Campus JLLE");delay(2000);

}

Page 14: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

14

SHIELD LCD

• #include <LiquidCrystal.h> // inclui a biblioteca de LCD

� LiquidCrystal(rs, enable, d4, d5, d6, d7); // Cria um objeto LCDcom os respectivos pinos

• lcd.begin(coluna, linha); // define o nr de colunas e linhas do LCD

• lcd.clear(); // Limpa Display

• lcd.print(“TEXTO"); // Escreve algum texto

• lcd.setCursor(coluna,linha); // Posiciona Cursor

• lcd.scrollDisplayLeft(); //Desloca display esquerda

• lcd.scrollDisplayRight(); //Desloca display direita

� lcd.noDisplay(); // Desliga Display

� lcd.display(); //Liga display

27

Constantes e variáveis

• Constantes: são elementos que tem um valor fixo,não podendo ser mudados durante a execução doprograma;

– Exemplo: π = 3,1415927.... Em vez de escrever toda vez onúmero podemos nomear uma constante PI = 3,1415927 edurante programa utilizar PI;

• Variáveis: são elementos que permitem a alteraçãodo seu valor durante a execução do programa. Érecomendável que no início do programa sejaatribuído um valor inicial a elas, que elas sejaminicializadas;

– Exemplo: Calcule consumo médio de combustível de umautomóvel. CONSUMO= KM/L

28

Page 15: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

15

No arduino os tipos básicos são:

29

Constantes e variáveis

Tipo Tamanho

(Bits)

Tamanho

(Bytes)

Intervalo Obs

Char 8 1 -128 a 127 Especificados pela tabela ASCII

Int 16 2 -32768 a 32767 Números inteiros

Float 32 4 -3.4028235E+38 a 3.4028235E+38

Valor em ponto flutuante

Double 32 4 -3.4028235E+38 a 3.4028235E+38

Valor em ponto flutuante (Na placa Due é de 64 bits)

Boolean 8 1 true ou false Valores booleanos verdadeiros ou falsos

Byte 8 1 0 a 255 Números inteiros

Word 16 2 0 a 65535 Números inteiros

• O uso de operador do tipo float ou double acarretará em maior espaço alocado na memória e mais tempo de processamento nas operações matemáticas;

• Ainda temos outros tipos que veremos em maiores detalhes mais adiante.

SHIELD LCD

30

#include <LiquidCrystal.h> // Inclui biblioteca do LCD

LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //ATENÇÃO: Diferente dos exemplos do Arduino lcd(12, 11, 5, 4, 3, 2);

int i=5; char valor = ‘B’;

void setup() {lcd.begin(16, 2);

}

void loop() {

byte by=B1001;lcd.clear(); // Limpa Displaylcd.print("Valor de i = "); lcd.print(i); //Mostra o valor da variável inteira na mesma linhalcd.setCursor(5,1); lcd.print(valor); //Mostra o valor do caracterelcd.setCursor(8,1); lcd.print(by); //Mostra o valor da variável bytedelay(2000);

}

Exemplo de programa com utilização de variáveis

Declara e inicializavariáveis globais

Declara e inicializa variável local

Variável

GlobalX

Local

Page 16: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

16

Operadores

• Operador Aritmético

31

Operador Operação realizada

+ Soma

- Subtração

* Multiplicação

/ Divisão

% Resto da divisão

+ + Incremento

- - Decremento

SHIELD LCD + Entrada Analógica

32

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int valor,valorCon;

void setup() {lcd.begin(16, 2);

}

void loop() {valor = analogRead(A0); //Leitura entrada A0lcd.clear(); // Limpa Displaylcd.print("A0 = "); lcd.print(valor);lcd.setCursor(0,1); valorCon= map(valor,0,1023,0,100); lcd.print(" A0 Conver = "); lcd.print(valorCon);delay(200);

}

A função map converte o valor deuma variável de uma escala para outra.

map(variável,ini,fim,iniNova,fimNova)

map(valor,0,1023,0,100)

No shield LCD a entrada A0 tem oconjunto de chaves conectadas atravésde divisor de tensão e de acordo chavepressionada obtemos diferentes valores.Na figura abaixo temos os valoresaproximados para cada caso.

0

132

307

480

720

Page 17: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

17

Operadores

• Operador de Relação: eles testam as relações nasexpressões. Seu resultado é 1 se for verdadeiro ou 0se for falso;

33

Operador Operação realizada

= = Igual a

! = Diferente

> Maior que

< Menor que

> = Maior ou igual a

< = Menor ou igual a

Operadores

• Exemplos de Operador de Relação:

• 4 = = 3; retorna 0 - FALSO

• 3 = = 3; retorna 1 - VERDADEIRO

• 7 > = 3; retorna 1 – VERDADEIRO

• 4 < = 3; retorna 0 - FALSO

• 4 ! = 3; retorna 1 – VERDADEIRO

• 4 > 3; retorna 1 – VERDADEIRO

34

Page 18: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

18

Operadores

• Operadores lógicos: realizam operações lógicas nasexpressões. Os operandos são consideradosverdadeiros(1) ou falsos(0). Seu resultado é 1 se forverdadeiro ou 0 se for falso;

35

Operador Operação realizada

& & AND

| | OR

! NOT (Negado)

Operadores

• Exemplos de Operador Lógico:

a) (3 > 1) & & (2= = 2);

1 & & 1; resulta em 1 - verdadeiro

b) (3 > 7) | | (2= = 2);

0 | | 1 ; resulta em 1 - verdadeiro

c) !{(3 > 1) & & (2= = 2)} ;

!{ 1 & & 1};

!{ 1} ; - resulta em 0 - falso

36

Page 19: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

19

Operadores

• Operadores Bit a Bit: eles testam as relações dosoperadores nas expressões bit a bit;

37

Operador Operação realizada

& AND

| OR

^ XOR

~ NOT

> > SHIFT RIGHT,desloca bits a

direita

< < SHIFT LEFT, desloca bits a

esquerda

Operadores

• Exemplos de Operador Bit a Bit:

a) v1= 101101, v2=110011, v3 = v1 & v2; AND

v1 = 1 0 1 1 0 1

v2 = 1 1 0 0 1 1

v3 = 1 0 0 0 0 1

b) v1= 110001, v2=010111, v3 = v1 | v2; OR

v1 = 1 1 0 0 0 1

v2 = 0 1 0 1 1 1

v3 = 1 1 0 1 1 1

38

Page 20: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

20

Operadores

• Exemplos de Operador Bit a Bit:

c) v1= 101101, v2=110011, v3 = v1 ^ v2; XOR

v1 = 1 0 1 1 0 1

v2 = 1 1 0 0 1 1

v3 = 0 1 1 1 1 0

d) v1= 110001, v2 = ~ v1 ; NOT

v1 = 1 1 0 0 0 1

v2 = 0 0 1 1 1 0

39

SHIELD LCD

40

#include <LiquidCrystal.h> // Inclui biblioteca do LCD

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

boolean running = false;

void setup() {lcd.begin(16, 2);

}

void loop() {

lcd.clear(); // Limpa Displaylcd.print("Bool "); lcd.print(running);lcd.setCursor(8,0); lcd.print("4>3 = "); lcd.print(4>3);lcd.setCursor(0,1); lcd.print("(3>1)&&(2==2)= "); lcd.print((3>1) && (2==2)); //3>1=1;2==2=1;1&&1=1delay(2000); running = !running; //inverte variável

}

Exemplos de programas com operadores lógicos

Teste o programa para manipulação de bits

#include <LiquidCrystal.h> // Inclui biblioteca do LCD

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int a = 5;int b = 0;

void setup() {lcd.begin(16, 2);

}

void loop() {

lcd.clear(); // Limpa Displaylcd.print("a="); lcd.print(a); // binary: 000101 (5 dec)lcd.setCursor(5,0); b=a<<3; // binary: 00101000 (40 dec)lcd.print("b=a<<3 ->"); lcd.print(b);lcd.setCursor(4,1); lcd.print("a OR b = "); lcd.print(a | b); // binary: 00101101 (45 dec)delay(2000);

}

Page 21: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

21

• O controle do fluxo normal de um programa é um poderoso recurso em qualquer linguagem de programação;

• A seguir veremos as diferentes formas de fazer este controle;

41

Controle de fluxo de um programa

Controle de fluxo de um programa

• Declaração de controle condicional IF

IF.......THEN....ELSE

SE......ENTÃO...SENÃO• Ele é utilizado para executar um determinado

comando se uma determinada condição forverdadeira. A opção ELSE não é obrigatória.

42

IF (true) THENCommandsTrue

ELSECommandsFalse

IF (verdadeiro) THENComandosVerdadeiro

ELSEComandosFalso

Page 22: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

22

• Caso 1: somente verdadeiro:

43

Controle de fluxo de um programa

if (true) {

CommandsTrue}

#include <LiquidCrystal.h> // Inclui biblioteca do LCD

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int entrada=0;

void setup() {lcd.begin(16, 2);

}

void loop() {

lcd.clear(); // Limpa Displayentrada = analogRead(A0);if(entrada<100){ //botão direita do shield pressionadolcd.print(“right selecionado”);delay(2000); }

}

• Caso 2: com verdadeiro e falso:

44

Controle de fluxo de um programa

if (true) {

CommandsTrue}else{

CommandsFalse}

#include <LiquidCrystal.h> // Inclui biblioteca do LCD

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int entrada=0;

void setup() {lcd.begin(16, 2);

}

void loop() {

lcd.clear(); // Limpa Displayentrada = analogRead(A0);lcd.setCursor(1,0); lcd.print(“botão right”);lcd.setCursor(3,1);

if(entrada<100){ //botão direita do shield pressionadolcd.print(“pressionado”);}else{lcd.print(“não pressionado”);}delay(2000); }

}

Page 23: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

23

• Caso 3: IF aninhado:

45

Controle de fluxo de um programa

if (true1) {

Commands1}else if(true2)

{Commands2}

else if (true3){Commands3}

else{Commands4}

true1?

Commands1

N

V

true2?

N

V

true3?

N

V

Commands2

Commands3

Commands4

28/04/16

#include <LiquidCrystal.h> // Inclui biblioteca do LCD

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int entrada=0;

void setup() {lcd.begin(16, 2);

}

void loop() {

lcd.clear(); // Limpa Displayentrada = analogRead(A0);lcd.setCursor(1,0); if (entrada < 100) { lcd.print ("Direita "); }

else if (entrada < 200) { lcd.print ("Cima "); }

else if (entrada < 400){lcd.print ("Baixo "); }

else if (entrada < 600){ lcd.print ("Esquerda"); }

else if (entrada < 800){ lcd.print ("Select "); }

}

Page 24: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

24

28/04/16

switchSwitch( ) case:

• Declaração de controle condicional

switch (var){

case 1:

comandos;

break;

case 2:

comandos;

break;

default:

comandos;

break;

}

28/04/16

#include <LiquidCrystal.h> // Inclui biblioteca do LCD

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int entrada=0;

void setup() {lcd.begin(16, 2);

}

void loop() {

lcd.clear(); // Limpa Displayentrada = analogRead(A0);

valorCon= map(entrada,0,1023,0,10); lcd.setCursor(1,0); lcd.print(" valorCon ");

lcd.print(valorCon);lcd.setCursor(1,1); switch (valorCon){case 1:lcd.print ("Direita "); break; case 2:lcd.print ("Cima "); break; default:lcd.print ("Select ");

Break;}

Switch( ) case:

Page 25: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

25

Controle de fluxo de um programa

• Declaração de controle condicional WHILE

WHILE (true) { }

ENQUANTO (verdadeiro) { }• Faz a verificação da condição ANTES de executar o

comando. Enquanto a condição permanecerverdadeira o(s) comando(s) é/são executados.

49

WHILE (true){Comandos}

pergunta?

Comandos

N

V

50

Controle de fluxo de um programa

#include <LiquidCrystal.h> // Inclui biblioteca do LCD

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int entrada=0;

void setup() {lcd.begin(16, 2);

}

void loop() {

lcd.clear(); // Limpa Displayentrada = analogRead(A0);lcd.setCursor(1,0); lcd.print(" entrada "); lcd.print(entrada);lcd.setCursor(1,1);

while(entrada<400){ lcd.print(“robô explorando”);delay(1000); }lcd.print(“robô parado”);delay(2000);

}

Page 26: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

26

Controle de fluxo de um programa

• Declaração de controle condicional DO ... WHILE

DO { }WHILE (true)

FAÇA{ } ENQUANTO (verdadeiro)• Executa a ação ANTES de verificar a condução.

Enquanto a condição permanecer verdadeira o(s)comando(s) é/são executados.(Menu)

51

DO{Comandos}WHILE (true);

pergunta?

Comandos

N

V

52

Controle de fluxo de um programa

#include <LiquidCrystal.h> // Inclui biblioteca do LCD

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int entrada=0;

void setup() {lcd.begin(16, 2);

}

void loop() {

lcd.clear(); // Limpa Displayentrada = analogRead(A0);lcd.setCursor(1,0); lcd.print(" entrada "); lcd.print(entrada);lcd.setCursor(1,1); do{lcd.print(“robô explorando”);delay(1000); }while(entrada<400){

lcd.print(“robô parado”);delay(2000);

}

Page 27: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

27

Controle de fluxo de um programa

• Declaração de controle condicional FOR

• Ele é utilizado para executar determinados comandospor um certo número de vezes.

53

FOR (INÍCIO;CONDIÇÃO,INCREMENTO) {Comandos;

}

28/04/16

Exemplo Scroll LCD#include <LiquidCrystal.h> // Inclui biblioteca do LCD

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int entrada=0;

void setup() {lcd.begin(16, 2);

}

void loop() {

lcd.clear(); // Limpa Displaylcd.setCursor(1,0);

lcd.print(“IFSC”);lcd.setCursor(3,1);

lcd.print(“Robótica”);

for (int Counter = 0; Counter < 13; Counter++) {lcd.scrollDisplayLeft();delay(150);

}for (int Counter = 0; Counter < 29; Counter++) {lcd.scrollDisplayRight();delay(150);}

Page 28: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

28

PWM

• PWM – Modulação por Largura de Pulso (Pulse-WidthModulation)

• Permite variar a largura do pulso de uma saída simplesmentevariando o número (0 – 255) enviado para ela.

55

Se ligarmos um led na saídapoderemos observar o feito davariação da tensão média sobre ocomponente

PWM

• Exercício: Elabore um programa que varie a intensidade luminosade um led no pino 9 entre 100%, 75%, 50%, 25% e 0%, com meiosegundo de intervalo entre cada estágio.

56

void setup( ) {pinMode(9, OUTPUT);

}

void loop( ) {

analogWrite(9,255); // saída em 100%delay(500);analogWrite(9,191); // saída em 175%delay(500);analogWrite(9,127); // saída em 50%delay(500);analogWrite(9,63); // saída em 25%delay(500);analogWrite(9,0); // saída em 0%delay(500);

}

Page 29: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

29

Entrada Analógica e PWM

• Exercício: Elabore um programa que controle a luminosidade deum led utilizando a saída PWM do pino 9 através de umpotenciômetro na entrada analógica A0.

57

int valor,valorCon;void setup() {

pinMode(9, OUTPUT); }

void loop() {

valor = analogRead(A0);valorCon= map(valor,0,1023,0,255); analogWrite(9,valorCon);

}

A função map converte o valor deuma variável de uma escala para

outra.map(variável,ini,fim,iniNova,fimNova)

map(valor,0,1023,0,255)

Faltou esquema para ligar pot

Servomotor

• São motores especiais que permitem o controle do ângulo deposição do eixo.

58

Page 30: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

30

Servomotor

59

Servomotor

• ATENÇÃO: LIGAR A ALIMENTAÇÃO INVERTIDA PODE LEVAR AQUEIMA DO SERVO

60

Page 31: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

31

Servomotor

• Programa exemplo: Controle um servo no pino 5 pela leitura dopotenciômetro.

61

#include <Servo.h>

Servo servo1; // Cria um objeto servo

void setup() {

servo1.attach(5); // Anexa o servo (físico), no pino 5, ao objeto servo (lógico)}

void loop() {

int angle = analogRead(0); // Lê o valor do potenciômetroangle=map(angle, 0, 1023, 0, 180); // Mapeia os valores de 0 a 180 grausservo1.write(angle); // Escreve o ângulo para o servodelay(15); // Espera de 15ms, para permitir que o servo atinja a posição

}

Leitura da entrada

• Para ler o nível lógico de algum pino da entradautilizamos a instrução:

digitalRead(pino);

• Para ler o nível lógico de algum pino da entrada

utilizamos a instrução:

62

Page 32: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

32

Motor Corrente Contínua

63Fonte: http://en.wikipedia.org/wiki/Brushed_DC_electric_motor

Motor Corrente Contínua

• Sentido de giro de um motor CC - Exemplo

64

+ V -

I

- V +

I

Page 33: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

33

Ponte H

65

SHIELD para motor CC

66

Fonte:http://www.dfrobot.com

Page 34: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

34

SHIELD para motor CC

67

int M1 = 4; //direção motor 2int E1 = 5; //PWM motor 2

int E2 = 6; //PWM motor 1 int M2 = 7; //direção motor 1

void setup(){

pinMode(M1, OUTPUT); pinMode(M2, OUTPUT);

}

void loop(){

digitalWrite(M1,HIGH); //sentidodigitalWrite(M2, HIGH); //sentido analogWrite(E1, 255); //PWM analogWrite(E2, 122); //PWM delay(30);

}

Altere o programa paramudar o sentido evelocidades dosmotores

Motor de Passo• Motor de passo é um motor síncrono sem escovas, com

enrolamento no estator e imã permanente no rotor(tipo PM ouhíbrido). Seu movimento é feito em passos.

68Fonte:http://www.engineersgarage.com/articles/stepper-motors

Os motores de passosão fabricadosgeralmente com 12,24, 72, 144, 180, e200, passos por volta,o que resulta emângulos de 30, 15, 5,2.5, 2, e 1.8 graus porpasso (pode variar)

Page 35: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

35

Motor de Passo

• UNIPOLAR

69

Motor de Passo

70

Page 36: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

36

Motor de Passo

• BIPOLAR

71

• Os motores de passo bipolares são conhecidos por sua excelente relaçãotamanho/torque: eles proporcionam um maior torque, cerca de 40% a mais,comparativamente a um motor unipolar do mesmo tamanho.• Isto se deve ao fato de que quando se energiza uma fase, se magnetizaambos os pólos em que a fase (ou bobina) está instalada

Fonte: http://labdegaragem.com/profiles/blogs/tutorial-sobre-motor-de-passo

Motor de Passo

72

Page 37: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

37

Motor de Passo

• Modo de acionamento – PASSO COMPLETO (Full Step)

73

Motor de Passo

• Modo de acionamento – MEIO PASSO (Half-Step)

74

Page 38: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

38

Motor de Passo

75Fonte: http://www.stepperworld.com/Tutorials/pgBipolarTutorial.htm

Motor de Passo

• MOTOR DE PASSO COM ARDUINO – ULN 2003

76

Fonte: http://filipeflop.wordpress.com/2013/02/18/controlando-um-motor-de-passo-5v-com-arduino/

Page 39: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

39

Motor de Passo

• LIGAÇÕES

77

Alimente o motor de passo com +5V e o GND provenientes do Arduino. Conecte o Pino 2 do Arduino ao IN1, Pino 3 ao IN2, Pino 4 ao IN3 e Pino 5 ao IN4.

Fonte: http://filipeflop.wordpress.com/2013/02/18/controlando-um-motor-de-passo-5v-com-arduino/

Motor de Passo

78

#include <Stepper.h> // Incluir Biblioteca 'Stepper'

Stepper myStepper(300, 2, 4,3, 5);

void setup(){

}

void loop(){myStepper.setSpeed(20); // Ajusta a velocidade.myStepper.step(1500); // Numero de passos, sentido horáriodelay(500); // Delay de 0,5seg antes do próximo

myStepper.setSpeed(30); // // Ajusta a velocidademyStepper.step(-1500); // Numero de passos, agora sentido anti-horáriodelay(500); // Delay de 0,5seg

}

Fonte: http://filipeflop.wordpress.com/2013/02/18/controlando-um-motor-de-passo-5v-com-arduino/

Page 40: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

40

Motor de Passo

• #include <Stepper.h> - inclui a biblioteca do motor de passo;

• Stepper myStepper(passo, pino1, pino2, pino3, pino4); - informaao programa o passo e ligações do motor;

• myStepper.setSpeed(rpm); - seta a velocidade do motor de passoem RPM;

• myStepper.step(passos); - faz com que o motor se desloque umdeterminado número de passos. (esta função faz o programaparar até que atinja o número de passos programado)

79

Comparativo Motores

80

Fonte:http://www.telecom.uff.br/pet/petws/downloads/tutoriais/stepmotor/stepmotor2k81119.pdf

Page 41: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

41

28/04/16

• SENSOR ULTRASSONICO – HC-SR04

http://blog.filipeflop.com/sensores/sensor-ultrassonico-hc-sr04-ao-arduino.html

http://blog.filipeflop.com/sensores/sensor-ultrassonico-hc-sr04-ao-arduino.html

Primeiramente é enviado um pulso de 10µs, indicando o início da transmissão de dados. Depois disso, são enviado 8 pulsos de 40 KHz e o sensor então aguarda o retorno (em nível alto/high), para determinar a distância entre o sensor e o objeto, utilizando a equação Distância = (Tempo echo em nível alto * velocidade do som) /2

http://www.arduinoecia.com.br/2013/12/controle-de-vagas-de-estacionamento-com.html

28/04/16

biblioteca Ultrasonic,

Page 42: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

42

//Programa: Conectando Sensor Ultrassonico HC-SR04 ao Arduino

//Autor: FILIPEFLOP

//Carrega a biblioteca do sensor ultrassonico

#include <Ultrasonic.h>

//Define os pinos para o trigger e echo

#define pino_trigger 4

#define pino_echo 5

//Inicializa o sensor nos pinos definidos acima

Ultrasonic ultrasonic(pino_trigger, pino_echo);

void setup()

{

Serial.begin(9600);

Serial.println("Lendo dados do sensor...");

}

void loop()

{

//Le as informacoes do sensor, em cm e pol

float cmMsec, inMsec;

long microsec = ultrasonic.timing();

cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);

inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);

//Exibe informacoes no serial monitor

Serial.print("Distancia em cm: ");

Serial.print(cmMsec);

Serial.print(" - Distancia em polegadas: ");

Serial.println(inMsec);

delay(1000);

}

28/04/16

• SENSOR DE PRESENÇA INFRAVERMELHO PIR DYP-ME003

http://blog.filipeflop.com/sensores/acendendo-uma-lampada-com-sensor-de-presenca.html

Page 43: StefanominicursoARDUINOvCursoMaiob [Modo de …stefano/download/... · 25/05/2017 2 O que é o Arduino? • Ouseja, – O Arduino é uma placa eletrônica que possui um microcontrolador,

25/05/2017

43

28/04/16

//Programa : Sensor de presenca com modulo PIR//Autor : FILIPEFLOP

int pinopir = 7; //Pino ligado ao sensor PIRint acionamento; //Variavel para guardar valor do sensor

void setup(){pinMode(pinopir, INPUT); //Define pino sensor como entradaSerial.begin(9600);}

void loop(){acionamento = digitalRead(pinopir); //Le o valor do sensor PIR

if (acionamento == LOW) //Sem movimento, mantem rele desligado{Serial.println("Parado");}else //Caso seja detectado um movimento, aciona o rele{Serial.println("Movimento !!!");}}

86

• Michael McRoberts .Arduino Básico .;

• Aprendendo a programar o arduino. PET Autonet

• www.arduino.cc

• Notas de aula. Professor Stefano.

REFERÊNCIAS