Você está na página 1de 39

/*

Autor: Prof. Eric Xavier


Versão 1.0
Data 07/06/2018
e-mail professor@ericxavier.com.br
*/

// incluir biblioteca:
#include <LiquidCrystal.h>

// Inicialização
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
// Definindo número de colunas e linhas:
lcd.begin(16, 2);
//Limpa a tela
lcd.clear();
//Escreve mensagem
lcd.print("Curso de Arduino");
// seta o cursor para: (coluna = 4, linha = 1)
lcd.setCursor(4,1);
//Escreve mensagem
lcd.print("AULA 02");
}

void loop() {

}
Introdução à Lógica de Programação
• Lógica de Programação é a técnica de desenvolver algoritmos
(sequências lógicas) para atingir determinados objetivos dentro de
certas regras baseadas na Lógica matemática e em outras teorias
básicas da Ciência da Computação e que depois são adaptados para a
Linguagem de Programação utilizada pelo programador para construir
seu software.
• Um algoritmo é uma sequência não ambígua de instruções que é
executada até que determinada condição se verifique. Mais
especificamente, em matemática, constitui o conjunto de processos
(e símbolos que os representam) para efetuar um cálculo.

08/06/2018 Prof. Eric Loque M. Xavier 2


SKETCH
• Um projeto do Arduino é chamado de sketch
• A rotina de setup, que inicializa o sketch
• A rotina de loop, normalmente contém o código principal do
programa

08/06/2018 Prof. Eric Loque M. Xavier 3


Estilo de programação - Indentação
• É um termo aplicado ao código fonte de um programa para ressaltar
ou definir a estrutura do algoritmo.

08/06/2018 Prof. Eric Loque M. Xavier 4


Estilo de programação - Comentários
• Comentário de linha: //
• Comentário de bloco: /* */

08/06/2018 Prof. Eric Loque M. Xavier 5


Funções especiais setup() e loop()
• setup(): configurações iniciais do programa.

• loop(): função principal do programa.

Todo programa para o Arduino deve ter estas duas funções.

08/06/2018 Prof. Eric Loque M. Xavier 6


Programa mínimo
/*
Autor: Prof. Eric Xavier
Versão 1.0
Data 07/06/2018
e-mail professor@ericxavier.com.br
*/

// Código de inicialização executado ao ligar ou reiniciar

void setup() {

}
// Código repetido constantemente durante o funcionamento
void loop() {

}
08/06/2018 Prof. Eric Loque M. Xavier 7
Variáveis
/*
Autor: Prof. Eric Xavier
Versão 1.0
Data 07/06/2018
e-mail professor@ericxavier.com.br
Referência: https://www.arduino.cc/reference/pt/language/variables
*/

int distancia;

String texto = "Olá Mundo!";

// Código de inicialização executado ao ligar ou reiniciar

void setup() {
}
// Código repetido constantemente durante o funcionamento
void loop() {
}

08/06/2018 Prof. Eric Loque M. Xavier 8


Constantes
/*
Autor: Prof. Eric Xavier
Versão 1.0
Data 07/06/2018
e-mail professor@ericxavier.com.br
Referência: https://www.arduino.cc/reference/pt/language/variables/variable-scope--qualifiers/const
*/

#define float pi = 3.14

const float pi = 3.14;


// Código de inicialização executado ao ligar ou reiniciar
void setup() {
}

// Código repetido constantemente durante o funcionamento


void loop() {
}

08/06/2018 Prof. Eric Loque M. Xavier 9


Operador de Atribuição

=
• O sinal de igual na linguagem de programação C é chamado
operador de atribuição.
• O operador de atribuição indica ao microcontrolador que compute
qualquer valor ou expressão que estiver à direita do sinal de igual, e o
armazene na variável à esquerda do sinal de igual.

08/06/2018 Prof. Eric Loque M. Xavier 10


Operadores aritméticos

OPERADOR AÇÃO
+ Adição
– Subtração
* Multiplicação
/ Divisão
% Resto de divisão inteira
++ Incremento
— Decremento

08/06/2018 Prof. Eric Loque M. Xavier 11


Operadores Relacionais

OPERADOR AÇÃO
> Maior que
>= Maior ou igual que
< Menor que
<= Menor ou igual que
== Igual a
!= Diferente de

08/06/2018 Prof. Eric Loque M. Xavier 12


Operadores Lógicos

OPERADOR AÇÃO
&& AND(E)
|| OR(OU)
! NOT(NÃO)

08/06/2018 Prof. Eric Loque M. Xavier 13


PROTÓTIPO - Blink

08/06/2018 Prof. Eric Loque M. Xavier 14


Sketch 01a - Blink
/*
Autor: Prof. Eric Xavier
Versão 1.0.1
Data 07/06/2018
e-mail professor@ericxavier.com.br
*/

// Função setup executada ao ligar ou reiniciar o Arduino.


void setup() {
pinMode(13, OUTPUT); // Inicializa o pino 13 como saída.
}

// Função loop executada constantemente


void loop() {
digitalWrite(13, 1);
delay(1000); // Aguarda 1000ms (1 segundo)

digitalWrite(13, 0);
delay(1000); // Aguarda 1000ms (1 segundo)
}

08/06/2018 Prof. Eric Loque M. Xavier 15


Sketch 01b - Blink
/*
Autor: Prof. Eric Xavier
Versão 1.0.2
Data 07/06/2018
e-mail professor@ericxavier.com.br
*/

// Função setup executada ao ligar ou reiniciar o Arduino.


void setup() {
pinMode(13, OUTPUT); // Inicializa o pino 13 como saída.
}
// Função loop executada constantemente
void loop() {
digitalWrite(13, HIGH);
delay(1000); // Aguarda 1000ms (1 segundo)

digitalWrite(13, LOW);
delay(1000); // Aguarda 1000ms (1 segundo)
}

08/06/2018 Prof. Eric Loque M. Xavier 16


Sketch 01c - Blink
/*
Autor: Prof. Eric Xavier
Versão 1.0.3
Data 07/06/2018
e-mail professor@ericxavier.com.br
*/

// Função setup executada ao ligar ou reiniciar o Arduino.


void setup() {
pinMode(LED_BUILTIN, OUTPUT); // Inicializa o pino 13 como saída.
}
// Função loop executada constantemente
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000); // Aguarda 1000ms (1 segundo)

digitalWrite(LED_BUILTIN, LOW);
delay(1000); // Aguarda 1000ms (1 segundo)
}

08/06/2018 Prof. Eric Loque M. Xavier 17


Sketch 01d - Blink
/*
Autor: Prof. Eric Xavier
Versão 1.0.4
Data 07/06/2018
e-mail professor@ericxavier.com.br
*/
const int acender = HIGH;
const int apagar = LOW;
const int led = 13;
// Função setup executada ao ligar ou reiniciar o Arduino.
void setup() {
pinMode(led, OUTPUT); // Inicializa o pino 13 como saída.
}
// Função loop executada constantemente
void loop() {
digitalWrite(led, acender);
delay(1000); // Aguarda 1000ms (1 segundo)

digitalWrite(led, apagar);
delay(1000); // Aguarda 1000ms (1 segundo)
}

08/06/2018 Prof. Eric Loque M. Xavier 18


Estrutura Condicional /*
/* Autor: Prof. Eric Xavier
Autor: Prof. Eric Xavier Versão 1.0
Versão 1.0 Data 07/06/2018
Data 07/06/2018 e-mail professor@ericxavier.com.br
e-mail professor@ericxavier.com.br Referência: https://www.arduino.cc/reference/pt/language/structure/control-
Referência: https://www.arduino.cc/reference/pt/language/structure/control-structure/if structure/else
*/ */

// Código de inicialização executado ao ligar ou reiniciar // Código de inicialização executado ao ligar ou reiniciar
void setup() { void setup() {
}
}
// Código repetido constantemente durante o funcionamento
// Código repetido constantemente durante o funcionamento void loop() {
void loop() {
if (condição) if (condição)
{
{ //comando(s)
//comando(s)
} } else
{
} // faz coisa comando
}
}

08/06/2018 Prof. Eric Loque M. Xavier 19


Estrutura Condicional
/*
Autor: Prof. Eric Xavier
Versão 1.0
Data 07/06/2018
e-mail professor@ericxavier.com.br
*/

// Função setup executada ao ligar ou reiniciar o Arduino.


void setup() {
// Inicializa o pino 13 como saída.
pinMode(13, OUTPUT);
}
// Função loop executada constantemente
void loop() {
//Testa o estado do pino 13
if ( digitalRead(LED_BUILTIN) == HIGH)
{
digitalWrite(LED_BUILTIN,LOW);
}else
{
digitalWrite(LED_BUILTIN,HIGH);
}
delay(1000); // Aguarda 1000ms (1 segundo)
}

08/06/2018 Prof. Eric Loque M. Xavier 20


Estrutura Condicional
/*
Autor: Prof. Eric Xavier
Versão 1.0
Data 07/06/2018
e-mail professor@ericxavier.com.br
*/

// Função setup executada ao ligar ou reiniciar o Arduino.


void setup() {
// Inicializa o pino 13 como saída.
pinMode(13, OUTPUT);
}
// Função loop executada constantemente
void loop() {
//Testa o estado do pino 13
if ( digitalRead(LED_BUILTIN) )
{
digitalWrite(LED_BUILTIN,LOW);
}else
{
digitalWrite(LED_BUILTIN,HIGH);
}
delay(1000); // Aguarda 1000ms (1 segundo)
}

08/06/2018 Prof. Eric Loque M. Xavier 21


Programa melhor elaborado
/*
Autor: Prof. Eric Xavier
Versão 1.0
Data 07/06/2018
e-mail professor@ericxavier.com.br
*/

boolean led = false; //Armazena estado do LED


// Função setup executada ao ligar ou reiniciar o Arduino.
void setup() {
// Inicializa o pino 13 como saída.
pinMode(13, OUTPUT);
}
// Função loop executada constantemente
void loop() {
//Testa o estado do pino 13
led = !digitalRead(LED_BUILTIN);
digitalWrite(LED_BUILTIN, led); // Altera o estado do LED
delay(1000); // Aguarda 1000ms (1 segundo)
}

08/06/2018 Prof. Eric Loque M. Xavier 22


Programa melhor elaborado
/*
Autor: Prof. Eric Xavier
Versão 1.0
Data 07/06/2018
e-mail professor@ericxavier.com.br
*/

// Função setup executada ao ligar ou reiniciar o Arduino.


void setup() {
// Inicializa o pino 13 como saída.
pinMode(13, OUTPUT);
}
// Função loop executada constantemente
void loop() {
//Testa o estado do pino 13
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); // Altera o estado do LED

delay(1000); // Aguarda 1000ms (1 segundo)


}

08/06/2018 Prof. Eric Loque M. Xavier 23


Acionamento por botão

08/06/2018 Prof. Eric Loque M. Xavier 24


Sketch 07 - Botão

08/06/2018 Prof. Eric Loque M. Xavier 25


Sketch 08 - Botão

08/06/2018 Prof. Eric Loque M. Xavier 26


tone ()
• Gera uma onda quadrada na frequência especificada em um pino. A duração pode ser
especificada, do contrário a onda continua até uma chamada de noTone(). O pino pode ser
conectado a um buzzer piezo ou outro speaker para tocar tons.
• Apenas um tom pode ser gerado de cada vez.
• Não é possível gerar tons de frequência mais baixa que 31Hz.
Sintaxe
• tone(pino, frequência)
• tone(pino, frequência, duração)

Parâmetros
• pino: o pin no qual gerar o tom
• frequência: a frequência do tom em Hertz
• duração: a duração do tom em milissegundos (opcional)

Referência: https://www.arduino.cc/reference/pt/language/functions/advanced-io/tone

08/06/2018 Prof. Eric Loque M. Xavier 27


Buzzer

08/06/2018 Prof. Eric Loque M. Xavier 28


Sketch 09 - Botão

08/06/2018 Prof. Eric Loque M. Xavier 29


Teste o programa.

Programa disponível na pasta do professor.

08/06/2018 Prof. Eric Loque M. Xavier 30


pulseIn( )
Descrição
• Captura a duração de um pulso em um pino (que pode ser HIGH ou LOW). Por exemplo, se o valor HIGH é passado para a
função, a função pulseIn() espera o pino ir para o estado HIGH, começa a temporizar, então espera o pino ir para o
estado LOW e para de temporizar. Retorna o tamanho do pulso em microssegundos. Desiste e retorna 0 se não receber
nenhum pulso, caso um timeout seja especificado.
• A temporização dessa função foi determinada empiricamente e irá provavelmente mostrar erros em pulsos mais longos.
funciona em pulsos de 10 microssegundos a 3 minutos de duração.
Sintaxe
• pulseIn(pino, valor)
• pulseIn(pino, valor, timeout)
Parâmetros
• pino: o número do pino no qual se quer capturar a duração de um pulso. (int)
• valor: tipo de pulso a ser lido: pode ser HIGH ou LOW. (int)
• timeout (opcional): o numero de microssegundos a se esperar pelo começo do pulso; o padrão é um segundo (unsigned
long)
Referência: https://www.arduino.cc/reference/pt/language/functions/advanced-io/pulsein

08/06/2018 Prof. Eric Loque M. Xavier 31


Sensor de Distância por ultrassom

08/06/2018 Prof. Eric Loque M. Xavier 32


Características do sensor utilizado
• Distância mínima: 2cm
• Distância máxima: 3m
• Input mínimo: 2µs (típico 5µs)
• Echo: 115µs a 18,5ms
• Tensão de alimentação: 5Vcc
• Corrente: 30mA
• Temp. Operação: 0 ° a 70°C

08/06/2018 Prof. Eric Loque M. Xavier 33


Funcionamento
• Velocidade do som:
340m/seg = 34000cm/seg = 34cm/ms

• Tempo para o som percorrer 1cm.


𝟏𝒙𝟏
34cm 1ms 𝒙= = 𝟎, 𝟎𝟐𝟗𝟒ms = 29,4µ𝒔
𝟑𝟒
1cm X

• Tempo para ir até o objeto e retornar 58,8µs

08/06/2018 Prof. Eric Loque M. Xavier 34


08/06/2018 Prof. Eric Loque M. Xavier 35
Sensor ultra sônico

08/06/2018 Prof. Eric Loque M. Xavier 36


Exercício

08/06/2018 Prof. Eric Loque M. Xavier 37


Exercício

08/06/2018 Prof. Eric Loque M. Xavier 38


• Arduino. Documentação de Referência da Linguagem Arduino. Disponível em
https://www.arduino.cc/reference/pt/#functions. Acessado em 01/06/2018
• Arduino. Getting Started with Arduino and Genuino products. Disponível em
https://www.arduino.cc/en/ Guide/HomePage. Acessado em 01/06/2018.
• Laboratório de garagem. Curso gratuito sobre Arduino. Disponível em
http://arduino.labdegaragem.com/. Acessado em 01/06/2018.
• SENAI/DF. Cursos de Educação a Distância – Lógica de Programação. Disponível
em http://ead.senaidf.org. br/cursos/cursos-gratuitos.html. Acessado em
01/06/2018.
• SENAI/DN. Série aprendizagem industrial – raciocínio lógico e análise de dados.
SENAI/SC. Brasília: SENAI/DN, 2015.

08/06/2018 Prof. Eric Loque M. Xavier 39

Você também pode gostar