Escolar Documentos
Profissional Documentos
Cultura Documentos
MECATRÔNICA
Fevereiro 2024.
Sumário
1 Apresentação 1
1.1 Introdução aos Sistemas Computacionais . . . . . . . . . . . 4
1.1.1 O Computador . . . . . . . . . . . . . . . . . . . . . 5
1.1.2 O microcontrolador . . . . . . . . . . . . . . . . . . . 5
2 Plataforma Arduino 7
2.1 Programação alto e baixo nível . . . . . . . . . . . . . . . . . 9
2.2 Interface de Desenvolvimento . . . . . . . . . . . . . . . . . 11
2.3 Como Carregar um Exemplo . . . . . . . . . . . . . . . . . . 12
2.4 Como configurar o Arduino . . . . . . . . . . . . . . . . . . . 14
4 Saídas Digitais 27
4.1 Indicadores luminosos - LEDs . . . . . . . . . . . . . . . . . 27
4.1.1 Atividades . . . . . . . . . . . . . . . . . . . . . . . 32
4.1.2 Desafio . . . . . . . . . . . . . . . . . . . . . . . . . 34
5 Saída sonora 37
5.1 Exemplo alarme . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.2 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
i
6 Saída pela porta de comunicação serial 41
6.1 Exemplo Serial OI . . . . . . . . . . . . . . . . . . . . . . . 42
6.2 Exemplo Serial Oi Mais . . . . . . . . . . . . . . . . . . . . . 43
6.3 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
8 Operadores 55
8.1 Operadores matemáticos . . . . . . . . . . . . . . . . . . . . 56
8.2 Operadores relacionais . . . . . . . . . . . . . . . . . . . . . 56
8.3 Operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . 57
9 Estrutura Condicional 59
9.1 Estrutura condicional simples . . . . . . . . . . . . . . . . . . 59
9.2 Estrutura condicional composta . . . . . . . . . . . . . . . . . 62
9.3 Estrutura condicional encadeada . . . . . . . . . . . . . . . . 64
9.4 Estrutura condicional encadeada com senão . . . . . . . . . . 67
9.5 Estrutura condicional de seleção . . . . . . . . . . . . . . . . 69
13 Estruturas de Repetição 97
13.1 Repetição com teste no início . . . . . . . . . . . . . . . . . . 97
13.2 Repetição com teste no final . . . . . . . . . . . . . . . . . . 99
13.3 Repetição com variável de controle . . . . . . . . . . . . . . . 100
13.3.1 Exemplo barulho crescente . . . . . . . . . . . . . . . 102
APÊNDICE 147
Apresentação
1
CAPÍTULO 1. APRESENTAÇÃO 2
Figura 1.1: Esquerda: placa Genius.ino com Arduino Nano. Direita: Dia-
grama com os elementos da placa Genius
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
3
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 1. APRESENTAÇÃO 4
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
5 1.1. INTRODUÇÃO AOS SISTEMAS COMPUTACIONAIS
1.1.1 O Computador
Os PCs - Computadores Pessoais (do inglês Personal Compu-
ter) são amplamente utilizados na atualidade em sua versão de
mesa (desktop) e portátil (notebook), para uma variedade imensa
e diversificada de aplicações.
1.1.2 O microcontrolador
Processador, memória e o bloco de entradas e saídas são três
blocos básicos de um sistema computacional. Basicamente, o
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 1. APRESENTAÇÃO 6
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 2
Plataforma Arduino
7
CAPÍTULO 2. PLATAFORMA ARDUINO 8
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
9 2.1. PROGRAMAÇÃO ALTO E BAIXO NÍVEL
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 2. PLATAFORMA ARDUINO 10
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
11 2.2. INTERFACE DE DESENVOLVIMENTO
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 2. PLATAFORMA ARDUINO 12
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
13 2.3. COMO CARREGAR UM EXEMPLO
Figura 2.7: Tela com o caminho para carregar o programa Blink.ino - Ar-
quivo>Exemplos>01.Basics>Blink
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 2. PLATAFORMA ARDUINO 14
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
15 2.4. COMO CONFIGURAR O ARDUINO
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 2. PLATAFORMA ARDUINO 16
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 3
17
CAPÍTULO 3. ENTENDENDO UM PROGRAMA BÁSICO 18
void setup() {
// put your setup code here, to run once:
void loop() {
// put your main code here, to run repeatedly:
void setup() {
// comandos de inicialização
}
void loop() {
// comandos do bloco principal
}
Figura 3.3: Código de um programa com os blocos básicos setup e loop.
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
19 3.1. ANALISANDO O PROGRAMA BLINK
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 3. ENTENDENDO UM PROGRAMA BÁSICO 20
3.1.1 pinMode
No bloco setup o comando pinMode configura o pino de
saída ligado ao indicador luminoso na placa do Arduino, LED_
BUILTIN como sendo do tipo saída (OUTPUT). Isso é necessá-
rio porque os pinos podem ser utilizados tanto para saída quanto
para entrada.
Através das saídas podemos fazer a escrita que irá ativar ou
desetivar o dispositivo ligado ao pino de saída, no caso o mais
simples dos dispositivos de saída é o LED. A sintaxe do comando
pinMode está exibida a seguir.
pinMode(LED_BUILTIN, OUTPUT);
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
21 3.1. ANALISANDO O PROGRAMA BLINK
3.1.2 digitalWrite
Finalmente o corpo do programa, no bloco loop(), apenas
dois comandos específicos são utilizados: digitalWrite e
delay. O comando digitalWrite, como a tradução sugere, faz a
escrita do valor no pino de saída (nesse caso, onde há um LED
interligado). A sintaxe do comando utiliza dois parâmetros que
devem ser dispostos entre parênteses e separados por vírgulas.
O primeiro parâmetro é o pino no qual a escrita será feita, o
segundo parâmetro, o valor a ser escrito (HIGH ou LOW).
Seria possível passar como parâmetro o próprio número do
pino, no caso 13, mas o uso da constante com identificador LED_
BULTIN torna mais claro o entendimento e a modificação pos-
terior do pino utilizado.
Sintaxe do comando de escrita em um pino de saída:
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 3. ENTENDENDO UM PROGRAMA BÁSICO 22
3.1.3 delay
O segundo comando utilizado, o delay, é bastante simples.
Sua função é fazer com que o sistema aguarde o tempo em mi-
lissegundos passado como parâmetro entre parênteses.
Sintaxe do comando delay:
delay( <tempo>);
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
23 3.1. ANALISANDO O PROGRAMA BLINK
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 3. ENTENDENDO UM PROGRAMA BÁSICO 24
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
25 3.2. ERROS COMUNS AO COMPILAR
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 3. ENTENDENDO UM PROGRAMA BÁSICO 26
3.3 Atividades
Exercício 1. A partir do programa Blink.ino, altere os tem-
pos de modo a piscar rápido.
Exercício 2. Uma piscada consiste em um tempo aceso e um
tempo apagado. Usando o sketch do exercício anterior, imple-
mente um programa que repita uma piscada longa e uma piscada
curta.
Exercício 3. Sabendo que o bloco setup é executado uma única
vez quando o programa inicia, modifique o sketch do exercício
anterior para que o LED
3.3.1 Desafio
Exercício 4. Implemente uma versão do programa blink.ino que
ao ligar o sistema dê duas piscadas longas e então fique dando
piscadas curtas com intervalos longos.
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 4
Saídas Digitais
27
CAPÍTULO 4. SAÍDAS DIGITAIS 28
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
29 4.1. INDICADORES LUMINOSOS - LEDS
pinMode(<pino> , <modo>);
pinMode( 4 , OUTPUT );
pinMode( A1 , OUTPUT );
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 4. SAÍDAS DIGITAIS 30
digitalWrite( A1 , HIGH );
digitalWrite( A1 , LOW );
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
31 4.1. INDICADORES LUMINOSOS - LEDS
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 4. SAÍDAS DIGITAIS 32
void setup() {
pinMode(A1, OUTPUT);
}
void loop() {
digitalWrite(A1, HIGH)
delay(1000);
digitalWrite(A1, LOW);
delay(1000);
}
4.1.1 Atividades
Conhecimentos à prova:
Exercício 5. Mude o programa de forma que o LED fique mais
tempo aceso e menos apagado.
Exercício 6. Do mesmo modo, deixe o LED menos tempo aceso
e mais tempo apagado.
Exercício 7. Agora faça-o ficar um segundo aceso, um segundo
apagado, meio segundo aceso e outro meio segundo apagado, e
assim continuamente.
Exercício 8. Implemente versões de programas que executem as
sequências de fases para os quadros de histórico das figuras a
seguir:
(a) piscaAntiHorario.ino
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
33 4.1. INDICADORES LUMINOSOS - LEDS
(b) piscaEnche.ino
(c) piscaDuploHorario.ino
(d) piscaAcendeTudoApagaTudo.ino
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 4. SAÍDAS DIGITAIS 34
4.1.2 Desafio
Exercício 9. Conhece o Código Morse? Utilizado principal-
mente como meio de comunicação na Europa durante o final do
século XIX, se tratava de sinais longos e curtos, formando um
código de caracteres e uma mensagem.
A ·– M –– Y –·––
B –··· N –· Z ––··
C –·–· O ––– 1 ·––––
D –·· P ·––· 2 ··–––
E · Q ––·– 3 ···––
F ··–· R ·–· 4 ····–
G ––· S ··· 5 ·····
H ···· T – 6 –····
I ·· U ··– 7 ––···
J ·––– V ···– 8 –––··
K –·– W ·–– 9 ––––·
L ·–·· X –··– 0 –––––
Os pontos e traços são o LED aceso, mais ou menos tempo.
Para facilitar, podemos dizer que: o ponto fica 400 milissegun-
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
35 4.1. INDICADORES LUMINOSOS - LEDS
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 4. SAÍDAS DIGITAIS 36
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 5
Saída sonora
37
CAPÍTULO 5. SAÍDA SONORA 38
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
39 5.2. ATIVIDADES
void setup() {
pinMode( 10 , OUTPUT );
}
void loop() {
tone( 10 , 1000);
delay(200);
noTone( 10 );
delay(800);
}
5.2 Atividades
Vamos praticar!
Exercício 10. A partir do exemplo ALARME.INO, implemente
um programa para fazer o barulho de uma ambulância. Utilize
dois tons, um grave e outro agudo em cada um dos dois tempos.
Exercício 11. Modifique o programa ALARME.INO para que os
leds pisquem dois a dois alternadamente conforme o quado de
histórico (history board) mostrado na figura.
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 5. SAÍDA SONORA 40
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 6
Serial.begin( <taxa> );
Serial.begin( 9600 );
41
CAPÍTULO 6. SAÍDA PELA PORTA DE COMUNICAÇÃO SERIAL 42
Serial.print( <mensagem> );
Serial.print("Ola!");
void setup() {
Serial.begin(9600);
Serial.print("Oi!!");
}
void loop() {
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
43 6.2. EXEMPLO SERIAL OI MAIS
void setup() {
Serial.begin(9600);
Serial.print("Oi!!");
}
void loop() {
Serial.print("Mais");
delay(200);
}
6.3 Atividades
Mãos à obra!
Exercício 14. Junte os exemplos BLINK.INO e SERIAL_OI.INO
de forma que ao acender e apagar o LED seja enviado pela porta
serial as palavras "ACESO"e "APAGADO".
Exercício 15. Implemente um programa que faça piscar separa-
damente cada um dos 4 LEDS da placa GENIUS de maneira que
para cada um deles seja enviado pela porta serial a cor corres-
pondente ao LED aceso.
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 6. SAÍDA PELA PORTA DE COMUNICAÇÃO SERIAL 44
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 7
Identificadores - palavras
reservadas, constantes, variáveis,
comandos e demais estruturas
45
CAPÍTULO 7. IDENTIFICADORES - PALAVRAS RESERVADAS,
CONSTANTES, VARIÁVEIS, COMANDOS E DEMAIS ESTRUTURAS 46
programa.
• Comandos: subrotinas, que podem ser mais especificamente
um procedimento (se não retornar nenhum valor) ou função (caso
retorne algum valor).
• Bibliotecas: arquivos de comandos ou classes.
• Classes, objetos, propriedades e métodos: a programação
para Arduino pode ser além de estruturada, também orientada a
objetos, nesses casos os Identificadore dão nome à classe e aos
objetos instanciados dessa classe, bem como às suas respectivas
propriedades e métodos associados.
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
47 7.1. IDENTIFICADORES VÁLIDOS E INVÁLIDOS
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 7. IDENTIFICADORES - PALAVRAS RESERVADAS,
CONSTANTES, VARIÁVEIS, COMANDOS E DEMAIS ESTRUTURAS 48
7.2 Constantes
Na implementação de programas é comum a necessidade de
definir valores fixos, como pinos de entrada e saída, frequencias
para tons, tempos de duração, etc. Uma vez que os valores não
mudam durante a execução do programa, o uso de contantes re-
laciona identificadores a seus respectivos valores.
Na prática, no processo de compilação do código fonte, o
compilador usa os valores associados contidos nos identificado-
res, ficando esses valores no código objeto do programa, que ao
fazer upload no Arduino, fica na memória de programa (do tipo
não volátil - EEPROM ou Flash).
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
49 7.2. CONSTANTES
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 7. IDENTIFICADORES - PALAVRAS RESERVADAS,
CONSTANTES, VARIÁVEIS, COMANDOS E DEMAIS ESTRUTURAS 50
7.3 Variáveis
As variáveis são estruturas de programção que permitem a
manipulação de dados, associando o seu espaço físico na memó-
ria a um identificador, através do qual se executam operações de
entrada e saída.
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
51 7.3. VARIÁVEIS
byte numero=0;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println( numero);
numero=numero+1;
delay(1000);
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 7. IDENTIFICADORES - PALAVRAS RESERVADAS,
CONSTANTES, VARIÁVEIS, COMANDOS E DEMAIS ESTRUTURAS 52
contagem recomeça?
Exercício 20. A partir do programa CONTADOR.INO, crie o
programa CONTATOR_REGR.INO cujo valor seja iniciado em
30 e faça a contagem regressiva, ou seja, decrescente.
void pisca1() {
pinMode( A1, OUTPUT );
digitalWrite( A1, HIGH );
delay(1000);
digitalWrite( A1, LOW );
delay(1000);
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
53 7.4. COMANDOS, PROCEDIMENTOS E FUNÇÕES
void pisca1() {
pinMode( A1, OUTPUT );
digitalWrite( A1, HIGH );
delay(1000);
digitalWrite( A1, LOW );
delay(1000);
}
void setup() {
pisca1();
pisca1();
}
void loop() {
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 7. IDENTIFICADORES - PALAVRAS RESERVADAS,
CONSTANTES, VARIÁVEIS, COMANDOS E DEMAIS ESTRUTURAS 54
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 8
Operadores
55
CAPÍTULO 8. OPERADORES 56
void setup() {
int a=9;
int b=3;
int soma=a+b;
Serial.begin(9600);
Serial.println( soma );
}
void loop() {
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
57 8.3. OPERADORES LÓGICOS
A B A && B
0 0 0
0 1 0
1 0 0
1 1 1
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 8. OPERADORES 58
A B A || B
0 0 0
0 1 1
1 0 1
1 1 1
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 9
Estrutura Condicional
59
CAPÍTULO 9. ESTRUTURA CONDICIONAL 60
if ( <condicao> ) {
// bloco comandos
}
A seguir um exemplo básico no qual uma variável idade
pode ser modificada de forma a definir a mensagem que é envi-
ada para o terminal serial.
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
61 9.1. ESTRUTURA CONDICIONAL SIMPLES
// experimentar trocar
byte idade=25;
void setup() {
Serial.begin(9600);
if (idade < 18) {
Serial.println( "Menor de idade");
}
if (idade >= 18) {
Serial.println( "Maioridade");
}
}
void loop() {
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 9. ESTRUTURA CONDICIONAL 62
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
63 9.2. ESTRUTURA CONDICIONAL COMPOSTA
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 9. ESTRUTURA CONDICIONAL 64
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
65 9.3. ESTRUTURA CONDICIONAL ENCADEADA
if ( <condicao1 verdadeira> ) {
// bloco 1
} else if ( <condicao2 verdadeira> ) {
// bloco 2
}
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 9. ESTRUTURA CONDICIONAL 66
// experimentar trocar
byte idade=25;
void setup() {
Serial.begin(9600);
if (idade >= 18) {
Serial.println( "Eleitor");
} else if (idade >= 16)
{
Serial.println( "Possivel eleitor");
}
}
void loop() {
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
67 9.4. ESTRUTURA CONDICIONAL ENCADEADA COM SENÃO
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 9. ESTRUTURA CONDICIONAL 68
if ( <condicao 1> ) {
// bloco comandos 1
} else if ( <condicao 2> ) {
// bloco comandos 2
} else {
// bloco comandos SENAO
}
A adição do else na estrutura condicional faz com que, no es-
trito caso de a condição imediatamente anterior ser falsa, a se-
gunda condição é avaliada. E assim acontece por quantos testes
forem necessários.
A seguir um exemplo básico no qual uma variável textttidade
pode ser modificada de forma a definir a mensagem que é en-
viada para o terminal serial, funciona da mesma forma que o
exemplo com estrutura condicional simples, se a condição não
for atendida, então um novo teste vinculado ao elseif é execu-
tado.
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
69 9.5. ESTRUTURA CONDICIONAL DE SELEÇÃO
// experimentar trocar
byte idade=25;
void setup() {
Serial.begin(9600);
if (idade > 60) {
Serial.println( "Voto opcional");
} else if (idade >= 18) {
Serial.println( "Voto obrigatorio");
} else if (idade >= 16) {
Serial.println( "Possivel eleitor");
} else {
Serial.println( "Não vota!");
}
}
void loop() {
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 9. ESTRUTURA CONDICIONAL 70
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
71 9.5. ESTRUTURA CONDICIONAL DE SELEÇÃO
switch (range) {
case 0: // your hand is on the sensor
Serial.println("dark");
break;
case 1: // your hand is close to the sensor
Serial.println("dim");
break;
case 2: // your hand is a few inches from
the sensor
Serial.println("medium");
break;
case 3: // your hand is nowhere near the
sensor
Serial.println("bright");
break;
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 9. ESTRUTURA CONDICIONAL 72
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 10
73
CAPÍTULO 10. ENTRADA DIGITAL BÁSICA 74
Figura 10.2: Conexão arduino UNO com botões, ligações PULL-UP (es-
querda) e PULL-DOWN (direita)
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
75
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 10. ENTRADA DIGITAL BÁSICA 76
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
77 10.1. EXERCÍCIOS COM BOTÕES
void setup() {
pinMode( ledCima, OUTPUT );
pinMode( botCima, INPUT_PULLUP );
}
void loop() {
// Leitura do botão (entrada)
// HIGH-solto LOW-apertado
bool estadoBotao = digitalRead( botCima);
// Escrita no LED (saida)
digitalWrite( ledCima, estadoBotao );
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 10. ENTRADA DIGITAL BÁSICA 78
LED fica apagado, quando aperta ele acende, quando solta ele
apaga.
Exercício 25. Implemente um código que teste o valor lido do
botão e a seguir incremente e mostre no terminal serial o valor
do contador.
A seguir o exemplo de carregar o comando piscaAzul()
quando o botão é apertado. Observe que independente do tempo
que o botão fica pressionado, a piscada é executada. Após o
tempo da piscada, o loop recomeça e o estado do botão é então
conferido.
// Aperta -> pisca
const int ledCima = A1; // Azul
const int botCima = 4;
void pisca() {
digitalWrite( ledCima , HIGH );
delay(500);
digitalWrite( ledCima , LOW );
//delay(500);
}
void setup() {
pinMode( ledCima, OUTPUT );
pinMode( botCima, INPUT_PULLUP );
}
void loop() {
bool estadoBotao = digitalRead( botCima );
if ( estadoBotao == LOW ) {
pisca();
}
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 11
79
CAPÍTULO 11. ENTRADA PELA PORTA DE COMUNICAÇÃO SERIAL 80
Para que um valor possa ser lido na porta serial ele precisa ter
sido enviado pelo Terminal Serial (ou programa do tipo) e dessa
forma ser recebido e armazenado na fila de entrada. Logo se faz
necessário verificar se existem caracteres na fila de recepção para
então poder fazer a leitura.
if (Serial.available()) {
int recebido = Serial.read();
}
if (Serial.available()) {
int recebido = Serial.read();
estadoLed = !estadoLed;
digitalWrite( pinLed , estadoLed )
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
81
if ( Serial.available() ) {
int recebido = Serial.read();
if (recebido==’1’) { pisca1(); }
if (recebido==’2’) { pisca2(); }
}
Figura 11.5: Código para piscar o led de acordo com a escolha feita ao enviar
os números 1 e 2 pelo terminal serial
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 11. ENTRADA PELA PORTA DE COMUNICAÇÃO SERIAL 82
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 12
#include <biblioteca>
83
CAPÍTULO 12. BIBLIOTECAS, CLASSES E OBJETOS 84
ela vai ser reconhecida. Caso seja uma biblioteca externa, a pasta
da biblioteca deve ser copiada dentro da pasta arduino\libraries\.
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
85 12.2. BIBLIOTECA SOFTWARESERIAL
void setup() {
pinMode( pinBotB , INPUT_PULLUP );
pinMode( pinBotC , INPUT_PULLUP );
pinMode( pinBotD , INPUT_PULLUP );
pinMode( pinBotE , INPUT_PULLUP );
pinMode( pinLedB , OUTPUT );
pinMode( pinLedC , OUTPUT );
pinMode( pinLedD , OUTPUT );
pinMode( pinLedE , OUTPUT );
Serial.begin( 9600 );
Serial.println( "Oi");
mySerial.begin(9600);
mySerial.println("OMy!");
}
long relogioAtual = 0;
long ultimoBot = 0;
long guardaRelogioAcende = 0;
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 12. BIBLIOTECAS, CLASSES E OBJETOS 86
void setup() {
pinMode( pinBotB , INPUT_PULLUP );
pinMode( pinBotC , INPUT_PULLUP );
pinMode( pinBotD , INPUT_PULLUP );
pinMode( pinBotE , INPUT_PULLUP );
pinMode( pinLedB , OUTPUT );
pinMode( pinLedC , OUTPUT );
pinMode( pinLedD , OUTPUT );
pinMode( pinLedE , OUTPUT );
Serial.begin( 9600 );
Serial.println( "Oi");
mySerial.begin(9600);
mySerial.println("Oi My!");
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
87 12.2. BIBLIOTECA SOFTWARESERIAL
void loop() {
bool botB = digitalRead( pinBotB );
if (botB == LOW ) { enviar( ’B’ ); }
bool botC = digitalRead( pinBotC ); }
if (botC == LOW ) { enviar( ’C’ ); }
bool botD = digitalRead( pinBotD ); }
if (botD == LOW ) { enviar( ’D’ ); }
bool botE = digitalRead( pinBotE );
if (botE == LOW ) { enviar( ’E’ ); }
if (mySerial.available() ) {
int c = mySerial.read();
rodaComando( c );
}
if (Serial.available() ) {
int c = Serial.read();
rodaComando( c );
delay(500);
rodaComando( ’O’ );
}
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 12. BIBLIOTECAS, CLASSES E OBJETOS 88
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
89 12.2. BIBLIOTECA SOFTWARESERIAL
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 12. BIBLIOTECAS, CLASSES E OBJETOS 90
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
91 12.3. BIBLIOTECA KEYBOARDPS2
Tabela 12.1: Tabela da pinagem Din 6 pinos femea para o Arduino Nano e
Uno - &&
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 12. BIBLIOTECAS, CLASSES E OBJETOS 92
#include <PS2Keyboard.h>
PS2Keyboard keyboard;
void setup() {
delay(1000);
keyboard.begin(DataPin, IRQpin);
Serial.begin(9600);
Serial.println("Keyboard Test:");
}
void loop() {
if (keyboard.available()) {
// leitura da tecla
char c = keyboard.read();
Serial.print(c);
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
93 12.3. BIBLIOTECA KEYBOARDPS2
void loop() {
if (keyboard.available()) {
// le a proxima tecla
char c = keyboard.read();
if ( c == ’a’) { tom( NOTE_C4 ); }
if ( c == ’s’) { tom( NOTE_D4 ); }
if ( c == ’d’) { tom( NOTE_E4 ); }
if ( c == ’f’) { tom( NOTE_F4 ); }
if ( c == ’g’) { tom( NOTE_G4 ); }
if ( c == ’h’) { tom( NOTE_A4 ); }
if ( c == ’j’) { tom( NOTE_B4 ); }
if ( c == ’k’) { tom( NOTE_C5 ); }
if ( c == ’l’) { tom( NOTE_D5 ); }
if ( c == ’;’) { tom( NOTE_E5 ); }
if ( c == ’\”) { tom( NOTE_F5 ); }
if ( c == ’\\’) { tom( NOTE_G5 ); }
}
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 12. BIBLIOTECAS, CLASSES E OBJETOS 94
#include <PS2Keyboard.h>
#include "pitches.h"
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
95 12.4. SENSOR DE DISTÂNCIA HC-SR04 - BIBLIOTECA ULTRASONIC
#include <Ultrasonic.h>
#define TRIGGER_PIN 3
#define ECHO_PIN 2
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 12. BIBLIOTECAS, CLASSES E OBJETOS 96
void loop() {
long microsec = ultrasonic.timing();
float cmMsec = ultrasonic.convert(
microsec, Ultrasonic::CM);
Serial.print("CM: ");
Serial.println(cmMsec);
delay(300);
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 13
Estruturas de Repetição
97
CAPÍTULO 13. ESTRUTURAS DE REPETIÇÃO 98
void setup() {
Serial.begin(9600);
int tabuadado = 9;
Serial.print("Tabuada do ");
Serial.println(tabuadado);
int n=0;
while (n<=10) {
Serial.print(tabuadado);
Serial.print("x ");
Serial.print(n);
Serial.print("= ");
Serial.println(tabuadado*n);
n++;
}
}
void loop() {
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
99 13.2. REPETIÇÃO COM TESTE NO FINAL
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 13. ESTRUTURAS DE REPETIÇÃO 100
void setup() {
Serial.begin(9600);
int tabuadado = 9;
Serial.print("Tabuada do ");
Serial.println(tabuadado);
int n=0;
do {
Serial.print(tabuadado);
Serial.print("x ");
Serial.print(n);
Serial.print("= ");
Serial.println(tabuadado*n);
n++;
} while (n<=10);
}
void loop() { }
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
101 13.3. REPETIÇÃO COM VARIÁVEL DE CONTROLE
void setup() {
Serial.begin(9600);
int tabuadado = 9;
Serial.print("Tabuada do ");
Serial.println(tabuadado);
for (int n=0;n<=10;n++) {
Serial.print(tabuadado);
Serial.print("x ");
Serial.print(n);
Serial.print("= ");
Serial.println(tabuadado*n);
}
}
void loop() { }
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 13. ESTRUTURAS DE REPETIÇÃO 102
#define pinoAudio 10
void barulho() {
int cresce=20;
for (int oTom = 4000; oTom > 3000;
oTom-=cresce) {
// get a sensor reading:
tone(pinoAudio, oTom );
cresce = cresce+10;
delay(cresce);
noTone( pinoAudio );
}
}
void setup() {
pinMode(pinoAudio, OUTPUT);
barulho();
}
void loop() { }
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 14
103
CAPÍTULO 14. CONJUNTOS - VARIÁVEIS INDEXADAS 104
#include "pitches.h"
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
105 14.1. IMPLEMENTAÇÃO DE VETORES
void setup() {
// iterate over the notes of the melody:
for (int thisNote = 0; thisNote < 8;
thisNote++) {
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 14. CONJUNTOS - VARIÁVEIS INDEXADAS 106
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 15
107
CAPÍTULO 15. GERAÇÃO DE NÚMEROS ALEATÓRIOS 108
15.2 Bingo
O jogo do bingo é bastante conhecido, os números de 1 a 75
são sorteados. Cada um tem uma cartela com cinco colunas e
cinco linhas. Na primeira coluna (da letra B) somente números
de 1 a 15, na segunda coluna (da letra I) somente números de
16 a 30, na coluna do meio (letra N) números de 31 a 45, na
quarta coluna (da letra G) números de 46 a 60) e na última coluna
(da letra O) números de 61 a 75. Na linha do meio da coluna
do meio não tem número nenhum, geralmente nas cartelas vem
desenhado um coringa. O jeito mais comum de se jogar é ir
sorteando os números até que o vencedor tenha todos os números
de sua cartela sorteados. Pode acontecer da última pedra sorteada
completar duas cartelas difentes. Quando o objetivo é atingido o
jogador de gritar Bingo! antes que a próxima pedra seja sorteada,
então os números da cartela são conferidos com as pedras que
foram sorteadas e confirma o vencedor ou vencedores (o prêmio
é dividido ou uma nova pedra para cada um é sorteado vencendo
que obtiver a maior pedra).
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
109 15.2. BINGO
void setup() {
for(int i = 4; i<8; i++) pinMode(i,
INPUT_PULLUP);
Serial.begin(9600);
reinicio();
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 15. GERAÇÃO DE NÚMEROS ALEATÓRIOS 110
void loop() {
if (digitalRead(5)==LOW){
randomSeed(millis());
if (quant<75) sorteio();
else Serial.println("Todos os números
sorteados");
delay(300);
}
if (digitalRead(6)==LOW){
conferir();
delay(300);
}
if (digitalRead(7)==LOW){ reinicio();}
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 16
111
CAPÍTULO 16. JOGO GENIUS - MEMÓRIA DE GÊNIO 112
void setup() {
for (int i = 0; i <= 3; i++) {
pinMode(pinosLeds[i], OUTPUT);
pinMode(pinosBotoes[i], INPUT_PULLUP);
}
pinMode(pinoAudio, OUTPUT);
randomSeed(analogRead(0));
Serial.begin(9600);
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
113
void loop() {
if (perdeu_o_jogo) {
perdeu_o_jogo = false;
reiniciaJogo();
}
if (rodada_atual == 0) {
rodaInicio();
delay(500);
}
proximaRodada();
reproduzirSequencia();
aguardarJogador();
}
void reiniciaJogo() {
rodada_atual = 0;
passo_atual_na_sequencia = 0;
}
void proximaRodada() {
int numero_sorteado = random(0, 4);
sequencia[rodada_atual++] = numero_sorteado;
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 16. JOGO GENIUS - MEMÓRIA DE GÊNIO 114
void reproduzirSequencia() {
for (int i = 0; i < rodada_atual; i++) {
tone(pinoAudio, tons[sequencia[i]]);
digitalWrite(pinosLeds[sequencia[i]], HIGH);
delay(500);
noTone(pinoAudio);
digitalWrite(pinosLeds[sequencia[i]], LOW);
delay(100);
}
noTone(pinoAudio);
}
void aguardarJogador() {
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
115
void aguardarJogada() {
boolean jogada_efetuada = false;
while (!jogada_efetuada) {
for (int i = 0; i <= 3; i++) {
if (digitalRead(pinosBotoes[i]) == LOW) {
botao_pressionado = i;
tone(pinoAudio, tons[i]);
digitalWrite(pinosLeds[i], HIGH);
delay(300);
digitalWrite(pinosLeds[i], LOW);
noTone(pinoAudio);
jogada_efetuada = true;
}
}
delay(10);
}
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 16. JOGO GENIUS - MEMÓRIA DE GÊNIO 116
void verificarJogada() {
if (sequencia[passo_atual_na_sequencia] !=
botao_pressionado) {
for (int i = 0; i <= 3; i++) {
tone(pinoAudio, tons[i]);
digitalWrite(pinosLeds[i], HIGH);
delay(200);
digitalWrite(pinosLeds[i], LOW);
noTone(pinoAudio);
}
tone(pinoAudio, tons[3]);
for (int i = 0; i <= 3; i++) {
digitalWrite(pinosLeds[0], HIGH);
digitalWrite(pinosLeds[1], HIGH);
digitalWrite(pinosLeds[2], HIGH);
digitalWrite(pinosLeds[3], HIGH);
delay(100);
digitalWrite(pinosLeds[0], LOW);
digitalWrite(pinosLeds[1], LOW);
digitalWrite(pinosLeds[2], LOW);
digitalWrite(pinosLeds[3], LOW);
delay(100);
}
noTone(pinoAudio);
perdeu_o_jogo = true;
}
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
117
void rodaInicio() {
tone(pinoAudio, tons[0]);
for (int i=0;i<=3;i++) {
digitalWrite(pinosLeds[i], HIGH); }
delay(500);
for (int i=0;i<=3;i++) {
digitalWrite(pinosLeds[i], LOW); }
delay(500);
noTone(pinoAudio);
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 16. JOGO GENIUS - MEMÓRIA DE GÊNIO 118
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 17
#include <EEPROM.h>
119
CAPÍTULO 17. MEMÓRIA NÃO VOLÁTIL 120
EEPROM.write( <endereço>,<valor>);
byte valor=10;
int endereco=0;
EEPROM.write(endereco,valor);
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
121 17.3. EXEMPLO ESCRITA E LEITURA DA MEMÓRIA EEPROM
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 17. MEMÓRIA NÃO VOLÁTIL 122
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 18
123
CAPÍTULO 18. CONTAGEM DE TEMPO SEM ATRASO 124
void setup() {
// set the digital pin as output:
pinMode(pinoLed, OUTPUT);
}
void loop() {
unsigned long tempoAtual = millis();
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
125 18.2. LATÊNCIA E SERIAL SIMULTÂNEO
// Pinos usados
const int buttonPin = 2;
const int ledPin = 13;
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 18. CONTAGEM DE TEMPO SEM ATRASO 126
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
127 18.3. TÉCNICA ANTIRUÍDO DEBBOUCING
void loop() {
// read the state of the switch into a local
variable:
int reading = digitalRead(buttonPin);
// check to see if you just pressed the button
// If the switch changed, due to noise or
pressing:
if (reading != lastButtonState) {
// reset the debouncing timer
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) >
debounceDelay) {
// if the button state has changed:
if (reading != buttonState) {
buttonState = reading;
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 18. CONTAGEM DE TEMPO SEM ATRASO 128
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 19
129
CAPÍTULO 19. SAÍDA ANALÓGICA POR PWM 130
int led = 3;
// pinos PWM 3,5,6, 9, 10, 11
void loop() {
// fade in from min to max in increments of 5
for (int fadeValue = 0 ; fadeValue <= 255;
fadeValue += 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see
delay(30);
}
// fade out from max to min in increments of 5
for (int fadeValue = 255 ; fadeValue >= 0;
fadeValue -= 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see
delay(30);
}
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
131 19.1. PROGRAMA CHAMA DA VELA
void setup() {
// nothing happens in setup
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 19. SAÍDA ANALÓGICA POR PWM 132
void loop() {
tempo = random( tempomax );
amplitudemax= 150 + random(100);
// fade in from min to max in increments of 5
for (int fadeValue = amplitudemin ; fadeValue
<= amplitudemax; fadeValue += 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see
delay(tempo);
}
tempo = random(tempomax);
amplitudemin= random(100);
// terminou
// fade out from max to min in increments of 5
for (int fadeValue = amplitudemax ; fadeValue
>= amplitudemin; fadeValue -= 5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
// wait for 30 milliseconds to see
delay(tempo);
}
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
133 19.2. SERVO MOTOR ROBÓTICO
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 19. SAÍDA ANALÓGICA POR PWM 134
#include <Servo.h>
Servo myservo;
// create servo object to control a servo
void setup() {
myservo.attach(2); // attaches the servo on
pin 2 to the servo object
}
int pos = 0;
// variable to store the servo position
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
135 19.2. SERVO MOTOR ROBÓTICO
void loop() {
// goes from 0 degrees to 180 degrees
for (pos = 0; pos <= 180; pos += 1) {
// in steps of 1 degree
myservo.write(pos);
delay(15);
}
for (pos = 180; pos >= 0; pos -= 1)
myservo.write(pos);
delay(15);
}
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 19. SAÍDA ANALÓGICA POR PWM 136
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Capítulo 20
Entrada Analógica
137
CAPÍTULO 20. ENTRADA ANALÓGICA 138
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
139
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 20. ENTRADA ANALÓGICA 140
Para não gerar perda de corrente, não use valores menores que
1KΩ (um quilo ohms ou mil ohms). São valores ideais a partir
de 10k. São exemplos também, de valores que podem ser usados
50kΩ, 100kΩ, 470kΩ, 1M Ω.
void setup() {
// incicializando a comunicacao
//taxa 9600 bps
Serial.begin(9600);
}
void loop() {
// faz a leitura da entrada analogica
int valorAD = analogRead(pinoAD);
Serial.print("Leitura: ");
Serial.println(valorAD);
delay(200); // aguarda p proxima
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
20.2. CONTROLANDO A INTENSIDADE DE UM LED COM O
141 POTENCIOMETRO
void setup() {
// initialize serial communications at 9600
bps:
Serial.begin(9600);
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 20. ENTRADA ANALÓGICA 142
void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1023, 0,
255);
// change the analog out value:
analogWrite(analogOutPin, outputValue);
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
143 20.3. CONTROLANDO O SERVO MOTOR COM O POTENCIOMETRO
#include <Servo.h>
void setup() {
// define o pino do servo
meuServo.attach(9);
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 20. ENTRADA ANALÓGICA 144
void loop() {
// leitura do valor do potenciometro
// (valores entre 0 e 1023)
val = analogRead(pinoPot);
// Conversao para o servo (value between 0 and
180)
val = map(val, 0, 1023, 0, 180);
// controlando a posicao do servo
myservo.write(val);
// espera proximo ciclo
delay(15);
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
145 20.5. SENSOR DE TEMPERATURA
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 20. ENTRADA ANALÓGICA 146
// valor lido
int val = 0;
void setup() {
// Liga porta S erial
Serial.begin(9600);
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
147 20.5. SENSOR DE TEMPERATURA
void loop() {
// leitura da entrada analogica
val = analogRead(pinoSensor);
// converte cada 2 x 5mv = 1 grau
temperatura = map(sensorValue,0,1023,0,511);
// espera
delay(500);
}
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
CAPÍTULO 20. ENTRADA ANALÓGICA 148
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Apêndice A
149
APÊNDICE A. COMO BAIXAR E INSTALAR A INTERFACE ARDUINO150
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
Lista de Figuras
151
LISTA DE FIGURAS 152
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
153 LISTA DE FIGURAS
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
LISTA DE FIGURAS 154
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
155 LISTA DE FIGURAS
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
LISTA DE FIGURAS 156
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
157 LISTA DE FIGURAS
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta
LISTA DE FIGURAS 158
Lógica e Programação para gds & pqns { Alan, Cauan, Luan } Marotta