Escolar Documentos
Profissional Documentos
Cultura Documentos
br - HP13215938283885
ARDUHACK
PARE DE COPIAR
PROJETOS E COMECE
A CONSTRUIR OS
SEUS AGORA MESMO
+ DE 15 PROJETOS BÔNUS
MÉTODO APROVADO
POR ALUNOS
DIRECIONADO A PRÁTICA
MATEUS D. DIAS
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
REVISÃO 1.5
SOBRE O AUTOR:
**********************************************************************************
CANAIS DE CONTATO:
Grupo no Telegram:
https://t.me/lobosdarobotica
Instagram:
https://www.instagram.com/lobodarobotica/
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
https://lobodarobotica.com/
Canal no Youtube:
https://lobodarobotica.com/canal-yt
Página do Facebook:
https://www.facebook.com/lobodarobotica/
Grupo do Facebook:
https://lobodarobotica.com/fb-grupo-arduhack
Grupo do Facebook:
https://lobodarobotica.com/wpp-arduhack
https://lobodarobotica.com/acesso-minicurso
E-mail:
email@lobodarobotica.com
2
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
DEDICATÓRIA
3
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Por mais que você já saiba alguns conceitos que esse livro
vai te passar, eu recomendo fortemente que você não pule
capítulos, e execute todos os exercícios propostos, pois isso vai
te dar suporte para no futuro você construir projetos cada vez
maiores e mais complexos.
Bom Aprendizado!
4
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SUMÁRIO
REVISÃO 1.5 ..................................................................................... 1
SOBRE O AUTOR: ........................................................................ 1
DEDICATÓRIA .................................................................................. 3
POR QUE ESCREVI ESSE LIVRO ...................................................... 4
CAPITULO 0 ...................................................................................... 9
0.1 APRESENTAÇÃO ...................................................................... 10
0.2 ARDUÍNO BLUEPRINT ............................................................ 12
CAPITULO 1 .................................................................................... 13
1.1 COMO FUNCIONA A PROTOBOARD? .................................... 13
1.2 CONVERSANDO COM O ARDUINO ....................................... 15
EXERCÍCIO 1.............................................................................. 21
1.3 VOID LOOP E VOID SETUP ..................................................... 22
1.4 ARMAZENANDO INFORMAÇÕES COM VARIÁVEIS............ 23
CONTEXTO DE VARIÁVEIS ..................................................... 26
#DEFINE E CONSTANTES ....................................................... 28
EXERCÍCIO 2.............................................................................. 31
1.5 OPERADORES ARITMÉTICOS – FAZENDO CÁCULOS
DURANTE A PROGRAMAÇÃO ...................................................... 32
ATRIBUIÇÃO (=) ....................................................................... 32
ADIÇÃO (+) ................................................................................ 33
SUBTRAÇÃO (-) ......................................................................... 35
MULTIPLICAÇÃO (*) ................................................................. 36
DIVISÃO (/) ................................................................................ 38
RESTO (%).................................................................................. 40
SOMA UNITÁRIA (++) .............................................................. 41
5
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
6
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXERCÍCIO 9.............................................................................. 77
EXERCÍCIO 10 ........................................................................... 78
PROJETO#3 – SCROLLING LED: ................................................... 79
2.8 DO-WHILE ................................................................................ 81
2.9 ENTRADAS ANALÓGICAS ...................................................... 82
CONVERSOR ANALÓGICO/DIGITAL ..................................... 82
PROJETO#4 – CONTROLANDO A FREQUÊNCIA DO LED COM
POTENCIÔMETRO: ........................................................................ 84
2.10 SAÍDAS ANALOGICAS........................................................... 86
PROJETO#5 – CONTROLANDO O BRILHO DO LED COM PWM:
.......................................................................................................... 90
CAPITULO 3 .................................................................................... 92
3.1 VETORES ................................................................................... 92
PROJETO#6 – CONTROLANDO LEDS EM SÉRIE COM
POTENCIÔMETRO: ........................................................................ 94
3.2 FUNÇÕES .................................................................................. 96
PROJETO#7 - ARDUINO CONTROLANDO SINALEIRO: ............ 98
PROJETO#8 – CONTROLANDO UM LED PELA LUMINOSIDADE
DO AMBIENTE: ............................................................................. 100
3.3 RETORNOS ............................................................................. 103
PROJETO#9 – LENDO UM SENSOR DE TEMPERATURA: ........ 106
3.4 PARÂMETROS ........................................................................ 109
3.5 CLASSES E BIBLIOTECAS ...................................................... 110
COMO INCLUIR BIBLIOTECAS .............................................. 111
PROJETO#10 – POSICIONAMENTO COM GPS NEO-6M .......... 119
PROJETO#11 – TOCANDO UMA MELODIA COM BUZZER: ..... 121
PROJETO#12 – CONTROLANDO UM SERVO: ........................... 125
7
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
8
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
https://lobodarobotica.com/oferta-kit-alunos
9
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
CAPITULO 0
0.1 APRESENTAÇÃO
10
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
11
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
https://lobodarobotica.com/arduino-blueprint
12
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
CAPITULO 1
13
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Figura 1 – Protoboard.
14
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
15
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXEMPLO:
void setup() {
//configura a comunicação serial com baud rate de 9600
Serial.begin(9600);
//Comando para que o Arduíno envie a mensagem Hello World
Serial.print("Hello World");
void loop() {
16
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Exemplo:
void setup() {
void loop() {
17
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Exemplo:
void setup()
{
Serial.begin(9600);
Serial.println("Hello World");
Serial.println("Hello World");
}
void loop()
{
}
18
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXEMPLO:
void setup() {
//configura a comunicação seria com baud rate de 9600
Serial.begin(9600);
}
void loop() {
19
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Se você executar esse código, vai perceber que ele não exibe
nada na tela, porém se enviarmos um caractere através da Serial,
você irá perceber que o mesmo caractere aparece sendo
imprimido na tela. Então o que está acontecendo nesse código?
20
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXERCÍCIO 1
O Arduino tem um
trabalho
muito importante
no
desenvolvimento e
prototipagem
de
produtos IoT.
Desenvolvimento
rapido e eficiente, o
Arduino eh uma
ferramenta muito
poderosa.
21
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
22
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
23
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
EXEMPLO:
/*
boolean: valor verdadeiro (true) ou falso (false)
char: um caractere
byte: um byte, ou sequência de 8 bits
int: número inteiro de 16 bits com sinal (-32768 a 32767)
unsigned int: número inteiro de 16 bits sem sinal (0 a
65535)
long: número inteiro de 16 bits com sinal (-2147483648 a
2147483647)
unsigned long: número inteiro de 16 bits sem sinal (0 a
4294967295)
float: número real de precisão simples (ponto flutuante)
double: número real de precisão dupla (ponto flutuante)
String: sequência de caracteres
void: tipo vazio (não tem tipo)
*/
void setup()
{
void loop()
{
}
24
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXEMPLO:
//O número 15 está armazenado dentro da variável numero
int num = 15;
void setup()
{
/*A partir desse momento a variável número passa a ter
o valor 625*/
num = 625;
}
void loop()
{
}
EXEMPLO:
int num = 15;
float num_virgula = 15.5;
long num_grande = 15684651841;
char caractere = 'c';
String texto = "Hello World";
bool teste = false;
void setup()
{
Serial.begin(9600);
Serial.print("Caractere: ");
Serial.println(caractere);
25
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Serial.print("Texto: ");
Serial.println(texto);
Serial.print("booleano: ");
Serial.println(teste);
void loop()
{
}
CONTEXTO DE VARIÁVEIS
26
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXEMPLO:
String text = "Hello World";
void setup() {
Serial.begin(9600); // inicia a Serial
Serial.println(text); // referenciando a variável global
text
}
void loop() {
Serial.println(text); // referenciando a variável global
text
delay(5000);
}
EXEMPLO:
void setup() {
String text = "Eu so existo dentro do setup";
void loop() {
String text = "Eu so existo dentro do loop";
Serial.println(text); // referenciando a variável global
text
delay(5000);
}
#DEFINE E CONSTANTES
28
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
porta, e que ela deva trabalhar como uma saída (calma, mais a
frente vamos estudar isso a fundo). Nesse “dizer ao Arduíno que
desejamos usar uma porta” nada mais é do que uma referência
numérica, ao pino em que será feito o acionamento.
29
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
SINTAXE:
Vale deixar uma coisa bem clara, você não pode fazer
alterações nessas variáveis ao longo do programa, isso por que
quando seu código foi enviado ao microcontrolador, ele entende
que esse tipo de variável só pode ser lida em outras partes do
programa, e não pode ser modificada.
30
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXERCÍCIO 2
• dolar = 5.23;
• nome = “Harv”;
• alarme = false;
• “Cotação do Dolar e: “
• “Meu nome e: “
• “O status do alarme e: “
ATRIBUIÇÃO (=)
EXEMPLO:
int i = 25;
int j = 0;
void setup() {}
void loop()
{
32
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
ADIÇÃO (+)
SINTAXE:
EXEMPLO:
int i = 3;
int j = 2;
int k = 0;
void setup()
{
k = j + i;
Serial.begin(9600);
Serial.print("Valor de i: ");
Serial.println(i);
Serial.print("Valor de j: ");
Serial.println(j);
Serial.print("Valor de k: ");
Serial.println(k);
}
void loop()
{
33
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
x = 12
SINTAXE:
SINTAXE:
EXEMPLO:
int s = 600;
void setup() {
Serial.begin(9600); // inicia a Serial
s = s + 10; // soma 10 unidades a s
Serial.println(s); //imprime o valor de s
void loop() {
34
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SUBTRAÇÃO (-)
SINTAXE:
EXEMPLO:
int i = 3;
int j = 2;
int k = 0;
void setup()
{
k = j - i;
Serial.begin(9600);
Serial.print("Valor de i: ");
Serial.println(i);
Serial.print("Valor de j: ");
Serial.println(j);
Serial.print("Valor de k: ");
Serial.println(k);
}
void loop()
{
35
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
SINTAXE:
EXEMPLO:
int s = 600;
void setup() {
Serial.begin(9600); // inicia a Serial
s = s - 10; // subtrai 10 unidades a s
Serial.println(s); //imprime o valor de s
void loop() {
MULTIPLICAÇÃO (*)
36
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
EXEMPLO:
int i = 3;
int j = 2;
int k = 0;
void setup()
{
k = j * i;
Serial.begin(9600);
Serial.print("Valor de i: ");
Serial.println(i);
Serial.print("Valor de j: ");
Serial.println(j);
Serial.print("Valor de k: ");
Serial.println(k);
}
void loop()
{
SINTAXE:
37
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
EXEMPLO:
int s = 250;
void setup() {
Serial.begin(9600); // inicia a Serial
s = s * 10; // multiplica 10 unidades em s
Serial.println(s); //imprime o valor de s
void loop() {
DIVISÃO (/)
SINTAXE:
EXEMPLO:
int i = 2;
int j = 4;
int k = 0;
38
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
void setup()
{
k = j / i;
Serial.begin(9600);
Serial.print("Valor de i: ");
Serial.println(i);
Serial.print("Valor de j: ");
Serial.println(j);
Serial.print("Valor de k: ");
Serial.println(k);
}
void loop()
{
SINTAXE:
De modo abreviado
SINTAXE:
EXEMPLO:
int s = 250;
void setup() {
39
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
void loop() {
RESTO (%)
SINTAXE:
int x = 0;
x = 7 % 5; // x agora contém 2
x = 9 % 5; // x agora contém 4
x = 5 % 5; // x agora contém 0
40
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
é equivalente a:
i = i + 1;
ou
i += 1;
EXEMPLO:
int i = 0;
void setup() {
Serial.begin(9600); // inicia a Serial
}
void loop() {
Serial.println(i);
i++; // adiciona 1 unidade a i cada vez que o loop é
executado
delay(5000);
}
41
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
é o equivalente a:
i = i - 1;
ou
i -= 1;
EXEMPLO:
int i = 500;
void setup() {
Serial.begin(9600); // inicia a Serial
}
void loop() {
Serial.println(i);
i--; // subtrai 1 unidade a i cada vez que o loop é
delay(5000);
}
42
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
CAPITULO 2
(==) IGUAL A:
SINTAXE:
43
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
SINTAXE:
44
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
SINTAXE:
(!=) DIFERENTE
45
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
46
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
if(verificação) {
47
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXEMPLO:
/* Deixamos armazenado qual é o pino do LED, dentro da
variável pinoLED */
int pinoLED = 13;
int x = 130;
void setup()
{
// Definimos o pinoLED como um pino de saída
pinMode(pinoLED, OUTPUT);
if (x > 120) {
// Se x for maior que 120 o pinoLED é acionado.
digitalWrite(pinoLED, HIGH);
}
void loop()
{
}
48
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXEMPLO:
int x = 45;
int y = 92;
void setup()
{
Serial.begin(9600);
if (x <= y) {// testa se x é menor que ou igual a y
void loop()
{
}
EXEMPLO:
int caixadagua = 48;
void setup()
{
Serial.begin(9600);
49
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
void loop()
{
}
50
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXERCÍCIO 3:
51
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
Serial.println(“Luz acesa”);
else {
Serial.println(“Luz apagada”);
EXEMPLO:
int caixadagua = 48;
void setup()
{
52
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Serial.begin(9600);
void loop()
{
}
53
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXERCÍCIO 4
54
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
(!) NOT
SINTAXE:
(&) AND
55
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
if((x < 20) & (y > 500)){} // Nesse caso o if() só será
executado quando x for MENOR QUE 20 e o y também for MAIOR
QUE 500. Em qualquer outra possibilidade ele não será
executado.
(|) OR
56
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
57
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
58
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
EXEMPLO:
void setup()
{
pinMode(4, OUTPUT);
}
void loop()
{
digitalWrite(4, HIGH); // Liga o LED
delay(1000); // Aguarda 1 segundo
digitalWrite(4, LOW); // Desliga o LED
delay(1000); // Aguarda 1 segundo
}
59
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes:
• 1 - Arduino Uno
• 1 - Protoboard
• 1 - LED 5mm
• 1 - 220 Ω Resistor
• Jumpers
Diagrama:
60
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH); // Liga o LED
delay(1000); // Aguarda 1 segundo
digitalWrite(13, LOW); // Desliga o LED
delay(1000); // Aguarda 1 segundo
}
61
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXERCÍCIO 5
Veja o exemplo:
62
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
63
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes:
• 1 - Arduino Uno
• 1 - Protoboard
• 1 - LED 5mm
• 1 - 220 Ω Resistor
• 1 - 10K Ω Resistor
• 1 - Pushbutton
• Jumpers
Diagrama:
64
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
void setup() {
void loop() {
// Lê o status do Pushbutton
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
// Liga o LED:
digitalWrite(ledPin, HIGH);
} else {
// Desliga o LED:
digitalWrite(ledPin, LOW);
}
}
65
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXERCÍCIO 6
66
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
2.5 SWITCH-CASE
SINTAXE:
switch (variável) {
case valor1:
//executa um comando
break;
case valor2:
break;
case valor3:
break
67
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXEMPLO:
int Led1 = 7;
int Led2 = 8;
int Led3 = 9;
int Led4 = 10;
void setup() {
Serial.begin(9600);
pinMode(Led1, OUTPUT);
pinMode(Led2, OUTPUT);
pinMode(Led3, OUTPUT);
pinMode(Led4, OUTPUT);
}
void loop() {
if (Serial.available()) {
char Led = Serial.read();
switch (Led) {
case '1':
digitalWrite(Led1, HIGH);
digitalWrite(Led2, LOW);
digitalWrite(Led3, LOW);
digitalWrite(Led4, LOW);
break;
case '2':
digitalWrite(Led1, LOW);
digitalWrite(Led2, HIGH);
digitalWrite(Led3, LOW);
digitalWrite(Led4, LOW);
break;
case '3':
digitalWrite(Led1, LOW);
digitalWrite(Led2, LOW);
digitalWrite(Led3, HIGH);
digitalWrite(Led4, LOW);
break;
case '4':
digitalWrite(Led1, LOW);
digitalWrite(Led2, LOW);
digitalWrite(Led3, LOW);
digitalWrite(Led4, HIGH);
break;
default:
Serial.print("Valor ");
Serial.print(Led);
Serial.println(" incorreto.");
digitalWrite(Led1, LOW);
digitalWrite(Led2, LOW);
digitalWrite(Led3, LOW);
digitalWrite(Led4, LOW);
}
68
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
}
}
69
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXERCÍCIO 7
70
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
2.6 WHILE
SINTAXE:
EXEMPLO:
void setup() {
Serial.begin(9600);
while (true) {
Serial.println("Hello World");
delay(2000);
}
}
void loop() {
71
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXEMPLO:
int x = 0; //inicia uma variável x valendo 0
void setup() {
Serial.begin(9600); // instancia a Serial
}
void loop() {
while (x < 12) { // analisa se x é menor que 12
//Enquanto x for menor que 12 o laço é executado
//delay de 2s
delay(2000);
//
}
}
72
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
73
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXERCÍCIO 8
74
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
2.7 FOR
SINTAXE:
EXEMPLO:
void setup() {
Serial.begin(9600); // instancia a Serial
}
void loop() {
for (int i = 0; i < 12; i++) {
// inicia uma contagem que vai de 0 a 11
75
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXEMPLO:
void setup() {
Serial.begin(9600); // instancia a Serial
}
void loop() {
for (int i = 11; i > 0; i--) {
// inicia uma contagem que vai de 11 a 0
76
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXERCÍCIO 9
77
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
EXERCÍCIO 10
78
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes:
• 1 - Arduino Uno
• 1 - Protoboard
• 6 - LEDs 5mm
• 6 - 220 Ω Resistor
• Jumpers
Diagrama:
79
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
/*
Scrolling LED usando o laço for
Sobre o circuito:
* LEDs ligados do pino 2 até o 7
*/
void setup() {
// usa o laço for para definir os pinos de saída
for (int thisPin = 2; thisPin < 8; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}
void loop() {
// loop do pino 2 até o 7
for (int thisPin = 2; thisPin < 8; thisPin++) {
// Liga o pino:
digitalWrite(thisPin, HIGH);
delay(timer);
// Desliga o pino
digitalWrite(thisPin, LOW);
}
80
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
2.8 DO-WHILE
SINTAXE:
do {
EXEMPLO:
int x = 2;
void setup() {
Serial.begin(9600); // instancia a Serial
do {
Serial.println("Fui exibido 1 vez");
} while (x > 5); // Só será executado 1 vez pois x
é MENOR QUE 5
}
void loop() {
}
81
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
CONVERSOR ANALÓGICO/DIGITAL
82
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
EXEMPLO:
int analogPin = A3; // Potenciômetro conectado ao pino A3
void setup() {
Serial.begin(9600); // inicia a Serial
}
void loop() {
val = analogRead(analogPin);// Lê o pino
Serial.println(val); // imprime o valor lido na tela
}
83
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes:
• 1 - Arduino Uno
• 1 - Protoboard
• 1 - LED 5mm
• 1 - 220 Ω Resistor
• 1 - Potenciômetro 10k Ω (Modelo Trimpot)
• Jumpers
Diagrama:
84
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
void setup() {
// Declara o pino do LED como saída
pinMode(ledPin, OUTPUT);
}
void loop() {
// Lê o valor do potenciômetro
sensorValue = analogRead(sensorPin);
// Liga o LED
digitalWrite(ledPin, HIGH);
// Para o programa de acordo com o valor lido no
potenciômetro
delay(sensorValue);
// Desliga o LED
digitalWrite(ledPin, LOW);
// Para o programa de acordo com o valor lido no
potenciômetro
delay(sensorValue);
}
85
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
ARDUINO:
86
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
ESP32:
EXEMPLO:
87
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
SINTAXE:
EXEMPLO:
int ledPin = 9;// LED conectado ao pino digital 9
88
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
void setup() {
pinMode(ledPin, OUTPUT); // configura o pino como saída
}
void loop() {
val = analogRead(analogPin);// lê o pino de entrada
analógica
analogWrite(ledPin, val / 4); // analogRead retorna
valores de 0 a 1023, analogWrite recebe de 0 a 255
}
89
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes:
• 1 - Arduino Uno
• 1 - Protoboard
• 1 - LED 5mm //qualquer cor
• 1 - 220 Ω Resistor
• Jumpers
Diagrama:
90
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
/*
Fade
*/
void setup() {
pinMode(LED, OUTPUT); // declare pin 9 como SAÍDA
}
void loop() {
// seta o brilho do LED no pino 9 usando PWM
analogWrite(LED, brightness);
// Inverte o fade
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
// aguarda 30 milissegundos
delay(30);
}
91
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
CAPITULO 3
3.1 VETORES
SINTAXE:
92
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
93
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes:
• 1 - Arduino Uno
• 1 - Protoboard
• 1 - Potenciômetro
• 10 - LED 5mm
• 10 - 220 Ω Resistor
• Jumpers
Diagrama:
94
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
/*
Barra de LEDs
*/
int ledPins[] = {
2, 3, 4, 5, 6, 7, 8, 9, 10, 11
}; // Vetor que contem a pinagem dos LEDs em sequencia
void setup() {
// for para definir todos os pinos como SAÍDA
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
void loop() {
// Lê o potenciômetro
int sensorReading = analogRead(analogPin);
95
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
3.2 FUNÇÕES
Assim como você olha para o void setup e já sabe que ele é
executado só uma vez.
96
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
E assim como você também olha para o void loop e sabe que
essa função se repete enquanto o Arduíno estiver ligado; as
funções que você criar devem ser bem autoexplicativas.
SINTAXE:
void nome_da_funcao () {
EXEMPLO:
void setup() {
pinMode(13, OUTPUT); // Define o pino 13 como saída
}
void loop() {
changeLights(); // Chama a função
// Função
void changeLights() {
// Liga o LED
digitalWrite(13, HIGH);
// Desliga o LED
digitalWrite(13, LOW);
97
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes:
• 1 – Resistor de10k-ohm
• 1 – Pushbutton
• 3 – Resistor 220-ohm
• 1 – Protoboard
• Jumpers de conexão
• 1 – LED Vermelho
• 1 – LED Amarelo
• 1 – LED Verde
Diagrama:
98
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
void setup() {
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
}
void loop() {
changeLights();
delay(15000);
}
void changeLights() {
99
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes:
• 1 - Arduino Uno
• 1 - Protoboard
• 1 - LED 5mm
• 1 - 330 Ω Resistor
• 1 - 10K Ω Resistor
• 1 - Fotoresistor
• Jumpers
Diagrama:
100
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
int calibratedlightLevel;
void setup()
{
pinMode(ledPin, OUTPUT);// Seta o pino do LED como SAÍDA
Serial.begin(9600);
}
void loop()
{
lightLevel = analogRead(sensorPin); // lê a porta
Serial.print(lightLevel);
//autoRange(); // executa a função autoRange
/*
Essa função seta o valor das variáveis minThreshold e
maxThreshold para o nível de luz do ambiente. Mova sua mão
em cima do sensor para calibrar.
O sensor irá perceber o range total de luz e vai
autocalibrar as entradas
*/
void autoRange()
{
if (lightLevel < minThreshold)
minThreshold = lightLevel;
101
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
maxThreshold = lightLevel;
102
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
3.3 RETORNOS
SINTAXE:
//Executa algo
103
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Serial.println(func_com_retorno());
int x = func_com_retorno();
EXEMPLO
//experimente mudar esses valores para testar os resultados
int x = 50;
int y = 12;
void setup() {
Serial.begin(9600); // inicia a Serial
int somatorio = soma(); // atribui o retorno da função na
variável somatorio
Serial.println(somatorio); //imprime o valor que foi
atribuido a variável somatorio
}
void loop() {
}
int soma() {
104
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
105
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes:
• 1 - Arduino Uno
• 1 - Protoboard
• 1 – Sensor de Temperatura – TMP36
• Jumpers
Diagrama:
106
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
/*
void setup()
{
Serial.begin(9600); // inicializa a Serial
}
void loop()
{
float voltage, degreesC, degreesF; //declara 3 variáveis
float, para o armazenamento da tensão, graus célsius e
graus Fahrenheit
Serial.print("voltagem: ");
Serial.print(voltage);
Serial.print(" Graus C: ");
Serial.print(degreesC);
Serial.print(" Graus F: ");
Serial.println(degreesF);
107
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
// Criar um termostato
108
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
3.4 PARÂMETROS
SINTAXE:
return x + y;
//chamada da função:
109
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
110
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
#include <AlgumNome.h>
Com toda certeza, daqui pra frente você vai utilizar muito
essa ferramenta.
111
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
112
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
113
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
“D:\Documentos\Arduino”
Ou também:
“C:\Users\Mateus Dias\Documentos\Arduino”
114
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
115
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
116
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
117
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
118
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes:
• 1 - Arduino UNO
• 1 – Módulo NEO-6M GPS
• Jumpers
Diagrama:
119
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
void setup() {
Serial.begin(9600); //inicia a Serial com o computador
ss.begin(9600); //Inicia a Serial com o GPS
}
void loop() {
while (ss.available() > 0) {
// Le os dados do GPS
byte gpsData = ss.read();
Serial.write(gpsData);
}
}
120
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes:
• 1 - Arduino Uno
• 1 - Protoboard
• 1 - Piezo Buzzer
• Jumpers
Diagrama:
121
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
/*
circuito:
8-ohm buzzer conectado no pino digital 8
*/
#define NOTE_B0 31
#define NOTE_C1 33
#define NOTE_CS1 35
#define NOTE_D1 37
#define NOTE_DS1 39
#define NOTE_E1 41
#define NOTE_F1 44
#define NOTE_FS1 46
#define NOTE_G1 49
#define NOTE_GS1 52
#define NOTE_A1 55
#define NOTE_AS1 58
#define NOTE_B1 62
#define NOTE_C2 65
#define NOTE_CS2 69
#define NOTE_D2 73
#define NOTE_DS2 78
#define NOTE_E2 82
#define NOTE_F2 87
#define NOTE_FS2 93
#define NOTE_G2 98
#define NOTE_GS2 104
#define NOTE_A2 110
#define NOTE_AS2 117
#define NOTE_B2 123
#define NOTE_C3 131
#define NOTE_CS3 139
#define NOTE_D3 147
#define NOTE_DS3 156
#define NOTE_E3 165
#define NOTE_F3 175
#define NOTE_FS3 185
#define NOTE_G3 196
#define NOTE_GS3 208
#define NOTE_A3 220
#define NOTE_AS3 233
#define NOTE_B3 247
#define NOTE_C4 262
#define NOTE_CS4 277
#define NOTE_D4 294
#define NOTE_DS4 311
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_FS4 370
#define NOTE_G4 392
#define NOTE_GS4 415
122
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
123
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
void setup() {
for (int thisNote = 0; thisNote < 8; thisNote++) {
void loop() {
124
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes:
• 1 - Arduino Uno
• 1 - Protoboard
• 1 - Servo
• Jumper
Diagrama:
125
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
void setup()
{
servo1.attach(9, 900, 2100); //conecta o servo no pino 9
//com o valor mínimo de PWM
//900 e o valor máximo de PWM
//2100.
void loop()
{
int position;
// Para controlar o servo você precisa do angulo de
posição
// Ele não pode ser movido 360°
// Você pode move-lo de 0 a 180°
// A posição muda em velocidade máxima
servo1.write(90); // manda o servo ir para 90°
delay(1000); // Pausa
servo1.write(180); // manda o servo ir para 180°
delay(1000); // Pausa
servo1.write(0); // manda o servo ir para 0°
delay(1000); // Pausa
126
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes
• 1 - Arduino Uno
• 1 - Protoboard
• 1 - Motor DC
• 1 - 330 Ω Resistor
• 1 - Diodo 1N4148
• 1 - NPN Transistor
• Jumpers
Diagrama
127
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
/*
Esse exemplo exige o uso de um transistor operando como
chave. O Arduino permite apenas 40mA de corrente em suas
portas, o que não é suficiente para acionar um motor DC,
que necessita no mínimo 150mA
*/
void setup()
{
pinMode(motorPin, OUTPUT); // seta o pino como saída
Serial.begin(9600); // inicializa a Serial
}
void loop()
{/* Esse exemplo basicamente replica o Blink substituindo o
LED por um motor DC.*/
// acelera o motor
for (speed = 0; speed <= 255; speed++)
{
analogWrite(motorPin, speed); // seta a nova velocidade
delay(delayTime); // delay entre os passos
}
// desacelera o motor
for (speed = 255; speed >= 0; speed--)
{
128
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
129
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes
• 1 - Arduino Uno
• 1 - Protoboard
• 1 - Display LCD
• 1 - Potenciômetro
• Jumpers
Diagrama
130
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
/*
LIQUID CRYSTAL DISPLAY (LCD)
*/
#include <LiquidCrystal.h>
void setup()
{
void loop()
{
lcd.setCursor(0, 1); //Seta o cursor na coluna 0,
linha 1.
lcd.print(millis() / 1000); //Imprime o número de
segundos desde que o Arduíno foi ligado.
}
131
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes
• 1 - Arduino UNO
• 1 - DHT11 sensor de temperatura e umidade
• 1 - Protoboard
• 1 - 4.7k Ohm Resistor
• Jumpers
Diagrama:
132
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
// Inicializa o sensor
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHTxx teste!");
dht.begin();
}
void loop() {
// Aguarda 2 segundos para a medição
delay(2000);
// Lê a umidade
float h = dht.readHumidity();
// Lê temperatura como celcius
float t = dht.readTemperature();
// Lê temperatura como Fahrenheit
float f = dht.readTemperature(true);
Serial.print("Umidade: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t");
}
133
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes:
• 1 - Arduino UNO
• 1 - PIR Motion Sensor (HC-SR501)
• 1 - LED
• Jumpers
Diagrama:
134
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
void setup() {
pinMode(led, OUTPUT); // inicializa o LED com SAÍDA
pinMode(sensor, INPUT); // inicializa o sensor como
ENTRADA
Serial.begin(9600); // inicializa a serial
}
void loop() {
val = digitalRead(sensor); // lê o sensor
if (val == HIGH) {// checa se o sensor está em HIGH
if (state == LOW) {
Serial.println("Movimento detectado!");
state = HIGH; // faz o update da variável para HIGH
}
}
else {
// caso não seja detectado movimento
digitalWrite(led, LOW); // desliga o LED
delay(200); // delay de 200 milissegundos
if (state == HIGH) {
Serial.println("Sem movimento detectado!");
state = LOW; // muda a variável para LOW
}
}
}
135
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
Componentes
• 1 - Arduino UNO
• 1 - YL-69 sensor de umidade de solo
• 1 - Protoboard
• 2 - 220 Ohm Resistor
• 1 – LED Vermelho
• 1 – LED Verde
• Jumpers
Diagrama
136
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
void setup() {
pinMode(rainPin, INPUT); // seta o sensor como ENTRADA
pinMode(greenLED, OUTPUT); // LED verde como SAÍDA
pinMode(redLED, OUTPUT); // LED vermelho como SAÍDA
digitalWrite(greenLED, LOW); // LED verde inicia em LOW
digitalWrite(redLED, LOW); // LED vermelho inicia em LOW
Serial.begin(9600); // inicia a Serial
}
void loop() {
// Lê a entrada no pino 0
int sensorValue = analogRead(rainPin);
Serial.print(sensorValue);
if (sensorValue < thresholdValue) {
Serial.println(" – Nao precisa de agua");
digitalWrite(redLED, LOW);
digitalWrite(greenLED, HIGH);
}
else {
Serial.println(" – Hora de regar sua planta");
digitalWrite(redLED, HIGH);
digitalWrite(greenLED, LOW);
}
delay(500);
}
137
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
IGNIÇÃO
138
Licensed to ALCEU DOMINGUES ALVES - aaalllceu@yahoo.com.br - HP13215938283885
139