40
TIR - Tecnologias Inovadoras de Rede Programação Arduino http://www.boscojr.com/iot/arduino.html Por: João Bosco Teixeira Junior

TIR - Tecnologias Inovadoras de Rede Programação Arduino ... · Ementa A placa Arduino Sketch Entrada e Saída – Sensores x Atuadores Temporização Utilizando a porta serial

  • Upload
    hangoc

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

TIR - Tecnologias Inovadoras de Rede Programação Arduino

http://www.boscojr.com/iot/arduino.html

Por: João Bosco Teixeira Junior

Estrutura de controle – Switch Case: Ex2.1

Ementa

● A placa Arduino● Sketch● Entrada e Saída

– Sensores x Atuadores● Temporização● Utilizando a porta serial● Tipos de E/S (Digital, Analógica, PWM)

– Controlar o brilho do led● Estruturas de Controle● Bibliotecas externas

A placa Arduino

Sketch

E/S – Sensor x Atuador

Sensores

Atuador (Mecânico, Visual, Térmico, etc)

Driver

Fenômeno Físico:Temperatura, pHUmidade, Luz, Gravidade, etc.

V,A,Ω

Bitsou

Pulsos

Ambiente

Analógicos

Digitais

Circuito de ControleEm relação ao arduino:● Sensores são

entradas● Atuadores são

saída

Configurando E/S

● A configuração de um Pino do arduino como entrada ou saída é feita usando a função pinMode

● Sintaxe:● Na biblioteca padrão do arduino estão definidas duas

constantes que podem ser usadas como parâmetro mode: INPUT e OUTPUT

● Exemplo: Configurar o pino 6 como entrada: ●

● É uma boa prática colocar o pino em uma variável, caso haja mudanças na função do pino :int pin = 6;pinMode( pin , INPUT);

pinMode( int pino, int Modo)

pinMode( 6 , INPUT );

Temporização

● É comum os sistemas de controle necessitar executar algum tipo de espera.

● Essa espera poderá ser feita usando-se as funções: delay e delayMicroseconds.

● Sintaxes:●

● msec é o tempo em milissegundos e● usec é o tempo em microssegundos;

Delay( int msec)DelayMicroseconds (int usec)

Ex1: Blink ( pisca led 13 )

● A ide conta com inúmeros exemplos:● Exemplo Blink

– Menu: File -> ● examples ->

– 01. Basics ->● Blink

Ex1: Blink ( pisca led 13 )

● Agora escolha a placa e porta● Placa:

– Menu: Tools ->● Board

● Porta– Menu: Tools ->

● Serial port

A Interface de Programação – IDE

Menu

Barra de Botões

Editor deTextos

Área deMensagens

Novo

SalvarCarregar

Gravar noArduíno

Compilar

Ex1.2: Blink Leds

Ajuste o sketch blink para fazer todos os leds piscarem ao mesmo tempo: 5 min

Ex1.2: Resposta

Variáveis

Ajustar os pinoscomo saída

Liga os leds

Desliga os ledsEspera

1s

Exercício de Fixação

Faça os leds piscarem em sequênciahttp://www.youtube.com/watch?v=O7aO-XzmBVg

Porta Serial

● A Biblioteca padrão do arduino trás consigo uma série de funções permitem ler e escrever da porta serial do arduino.– Serial.begin(int velocidade): Inicia a porta serial– int Serial.read(): Ler um byte da porta serial

● Essa função não retorna até que haja um byte– Serial.print( char *s ): Imprime uma cadeia de

caracteres na porta serial.– Serial.println( char *s ): O mesmo do anterior só

que imprime um “new line” no final da string– int Serial.available(): Aguarda um byte na porta.

Ex2: Imprimindo pela porta serial● Ajustando o

exemplo 1.2 para imprimir pela porta serial:

Console Serial

● Para abrir o console serial vá ao menu tools -> Serial monitor

Ex 2.1 Lendo da porta serial● Vamos agora fazer um programa que ler o

led que deve piscar conforme indicado pelo usuário via porta serial. Para isso vamos usar como base o exemplo 2;

Ex 2.1: Código

Ajusta o led

Ler daPorta

Variável que vaiGuardar o byteLido da porta

Arduino: Tipos de E/S

● O arduino dispõe de três modos de enviar ou receber estímulos do mundo externo. São eles:– Digital: Pinos 0 a 13

● Envio ou Leitura: 0 ou 1 (0v ou 5v)– Analógico Pinos A0 a A5

● Leitura: 0 a 1023 (entre 0v e 5v)– PWM: Pinos 3, 5, 6, 9, 10 e 11

● Envio de Pulsos com largura (pesquisar)

E/S digital

● Para fazer E/S digital a biblioteca padrão do arduino dispõe de duas funções:

● int estado = digitalRead( int pino );– O pino está entre 0 e 13 e deve ser configurado

como entrada (INPUT) via função pinMode(); ● digitalWrite( int pino, int estado );

– O pino deve ser entre 0 e 13 e deve está configurado como saída (OUTPUT) também via função pinMode();

– A biblioteca padrão do arduino dispõe de dois valores LOW e HIGH, que pode ser usados para estabelecer o estado do pino.

Ex 3: Trabalhando com botões ● Acender e apagar o led 13 conforme de

pressiona o botão. O primeiro passo é estabelecer o circuito. Vamos usar como entrada o pino 2.

Arduino 2

-

+13

10K

1KLED

Ex3: Código

Ex 3.1: Sensor de iluminação● Acender e apagar o led 13 conforme a

luminosidade do ambiente. O primeiro passo é estabelecer o circuito. Vamos usar como entrada o pino 2 (mesmo código).

Arduino 2

-

+13

10K

1K

LDR

LED

E/S Analógica

● A entrada analógica pode ser implementada usando a função analogRead existente na biblioteca padrão do arduino.

● int nivel = analogRead( int pino );– A variável nível armazenará o valor da leitura

analógica. A biblioteca padrão do arduino define as constantes A0 a A6 para os pinos analógicos.

Ex 4: Sensor de Nível de iluminação● Vamos usar como entrada o pino A0. E o

nível de iluminação será enviado a saída serial.

Arduino A0

-

+

10K

LDR

Ex4: Código

E/S: PWM

● PWM: Pulse-Width Modulation– Modulação por largura de pulso

● Pode ser usada para controlar a potencia entregue a um atuador essa função está Somente disponível nos pinos digitais 3, 5, 6, 9, 10 e 11;

● Na biblioteca padrão está disponível a função analogWrite();

E/S: PWM

● Sintaxe: analogWrite( int pino, int valor);– Pino: 3, 5, 6, 9, 10 e 11;– Valor: 0 a 255;

Ex5 : Ajustando o brilho do Led 10

Documentação

Mais detalhes em: http://arduino.cc/en/Tutorial/HomePage

Estruturas de controle

● If● For● While● Switch case

Estruturas de Controle – Loops: For e While

Comando de inicialização

Condição deParada

ComandoExecutadoA cada passo

for(int indice = 0; indice<valor ; indice++){ bloco_de_comandos;}

while (condição) { bloco_de_comandos;}

Enquanto a condição for verdadeira será Executado bloco_de_comandos1.

Chaves delimitam os blocos de comandos é necessário seu uso quando o bloco tem mais de um comando

Estrutura de Controle – For: Ajustando ex1.2

Estrutura de Controle – Switch – Caseswitch (var){ case valor1: bloco_de_comandos; break; ... case valorN: bloco_de_comandos; break; Default: bloco_de_comandos;}

Se var igual a valor1 esse blocoserá executado

Chaves delimitam o escopo do Switch

Se var igual a valorN esse blocoserá executado

O bloco default será executado se var não for igual a nenhum dos valores especificados no case

Estrutura de controle – Switch Case: Ex2.1

Uso de Bibliotecas

Instalação de novas bibliotecas

Biblioteca Newping

https://arduino-new-ping.googlecode.com/files/NewPing_v1.5.zip

Tópicos Avançados

● Interrupções;● Espera sem delays;● Registradores para pegar status das portas;

FIM