Escolar Documentos
Profissional Documentos
Cultura Documentos
COORDENADOR:
Prof. Carlos Renato Borges dos Santos
Verso 3.0
IFMG-Campus Formiga
26/08/2013
Contatos
carlos.renato@ifmg.edu.br
santoscrb@gmail.com
www.santoscrb.com
Arduino Mdulo 1
26/08/2013
Contedo programtico
Mdulo 1 Programando o Arduino
IFMG-Campus Formiga
26/08/2013
acionamentos;
Ler sinais de sensores que funcionam entre 0 e 5 V;
Gravar dados na memria no-voltil;
Desenvolver protocolos de comunicao sem verificaes
complexas dos dados;
Controlar servomotores, motores de passo e motores de
corrente contnua (apenas o controle, a parte de potncia
ser ministrada no mdulo 2);
Entender o processo de interrupes;
Conhecer alguns componentes eletrnicos.
IFMG-Campus Formiga
26/08/2013
Contedo programtico
Aula 1
O que Arduino
Tipos de Arduino
A placa eletrnica
Vantagens do Arduino
Apresentao do programa
Notas:
Avaliao: 40% da nota
Projetos: 60% da nota
Aula 2
Conceitos de bit, Byte, Word.
Tipos de variveis do Arduino.
Manipulao de dados de diversos tipos em C
IFMG-Campus Formiga
26/08/2013
Contedo programtico
Aula 3
Reviso sobre programao em C.
Declarao de variveis e ponteiros
Condicionais:
If
While
For
Do ...While
Switch
Struct
Union
IFMG-Campus Formiga
26/08/2013
Contedo programtico
Aula 4
O IDE do Arduino.
Verificao
Compilao
Pinos de IO
Exemplo Pisca-Pisca
Exemplo push button
Alimentao do Arduino
Clculo de potncia dos dispositivos
Dimensionamento de corrente de LEDs
Princpio de funcionamento de um motor de passo
PROJETO 1 ACIONAMENTO DE LEDS ATRAVS DE PUSH-BUTTONS
PROJETO 2 CONTROLE DE UM MOTOR DE PASSO EM 2 SENTIDOS
8
IFMG-Campus Formiga
26/08/2013
Contedo programtico
Aula 5
VERIFICAO DOS PROJETOS 1 E 2
Apresentao de vdeos e links interessantes
Aula 6
Converso Analgico digital
Exerccios
Aula 7
PWM
Aula 8
PROJETO 3 CONTROLE DE VELOCIDADE DE UM MOTOR
CC ATRAVS DE UM POTENCIMETRO
PROJETO 4 SEGUIDOR SOLAR
9
IFMG-Campus Formiga
26/08/2013
Contedo programtico
Aula 9
Comunicao serial
Aula 10
Desenvolvimento de protocolos de comunicao serial
Aula 11
PROJETO 5 CONTROLE DE UM MOTOR DE CC E DE
IFMG-Campus Formiga
26/08/2013
Contedo programtico
Aula 13
Memrias
SRAM
FLASH
EEPROM
Aula 14
Gravando e recuperando dados na EEPROM
Aula 15
Servomotor
PROJETO 7 SEGUIDOR SOLAR COM ARMAZENAMENTO E
Aula 16
Avaliao do curso e avaliao terica
11
IFMG-Campus Formiga
26/08/2013
12
Arduino Mdulo 1
26/08/2013
Bibliografia
1- Site www.arduino.cc
13
Princpios e Aplicaes.
4- Banz, Massimo. Primeiros passos com o Arduino.
5- 30 Arduino Projects for the evil genius
6- Arduino CookBook, 2nd edition
7-http://renatoaloi.blogspot.com
8- Fbio Pereira. Microcontroladores PIC Programao em
C. Editora rica.
IFMG-Campus Formiga
26/08/2013
Motivaes
http://globotv.globo.com/rede-globo/jornal-
14
nacional/v/alunos-do-engenharia-do-rio-vencem-maiorcampeonato-de-robotica-do-mundo/2547531/
http://www.youtube.com/watch?v=UUbdSjEvsdw
http://www.youtube.com/watch?v=fvsTzFnfgiI
http://www.youtube.com/watch?v=5XDXyJTNFu4
http://www.youtube.com/watch?v=JWqFH0roIUI
Arduino Mdulo 1
26/08/2013
1-Apresentao
Mdulo 1 Programando no Arduino
O que Arduino
16
IFMG-Campus Formiga
26/08/2013
O que Arduino
uma plataforma de prototipagem eletrnica de hardware
17
IFMG-Campus Formiga
26/08/2013
O que Arduino
18
IFMG-Campus Formiga
26/08/2013
O que Arduino
O Arduino IDE uma aplicao multiplataforma
19
IFMG-Campus Formiga
26/08/2013
O que Arduino
Linguagem do Arduino
void setup()
{
//Comandos de
//inicializao
}
void loop()
{
//Instrues repetidas
//infinitamente
}
20
Arduino Mdulo 1
Linguagem C
void main()
{
//void setup
while(1)
{
//void loop
}
26/08/2013
Tipos de Arduino
21
IFMG-Campus Formiga
26/08/2013
Tipos de Arduino
22
IFMG-Campus Formiga
26/08/2013
Tipos de Arduino
23
IFMG-Campus Formiga
26/08/2013
Tipos de Arduino
24
IFMG-Campus Formiga
26/08/2013
A placa eletrnica
25
IFMG-Campus Formiga
26/08/2013
A placa eletrnica
26
IFMG-Campus Formiga
26/08/2013
A placa eletrnica
27
IFMG-Campus Formiga
26/08/2013
Vantagens do Arduino
28
IFMG-Campus Formiga
26/08/2013
Vantagens do Arduino
Vantagens
Alimentao: Pode ser
alimentado pela USB
Total compatibilidade entre o
IDE e a placa, no sendo
necessrias configuraes
complexas
No precisa de alimentao
externa
Preo, se comparado a um kit
com microcontrolador PIC,
8051 ou outro
29
IFMG-Campus Formiga
Desvantagens
No simula em
computador (ainda no
encontrei)
Nem todas as portas
possuem um LED
integrado plataforma.
Ao sair do estado de
prottipo deve-se fazer
adequaes
26/08/2013
Kit PIC
Kit PIC
Alimentao externa
30
IFMG-Campus Formiga
(127/220V)
No inclui compilador
(MikroC, CCS)
No inclui simulador
(Proteus)
Utiliza MPLAB
Preo: R$ 600,00
26/08/2013
Comparao
Arduino
PIC / 8051
Selecionar o Arduino
Abrir arquivo
Cabo USB
Plugar o Arduino
Compilar
31
IFMG-Campus Formiga
26/08/2013
Apresentao do programa
Notas:
50% - avaliao escrita
50% - projetos
32
IFMG-Campus Formiga
26/08/2013
2-Conceitos bsicas
Mdulo 1 Programando no Arduino
34
IFMG-Campus Formiga
26/08/2013
35
IFMG-Campus Formiga
26/08/2013
36
IFMG-Campus Formiga
26/08/2013
Sistemas de codificao
37
IFMG-Campus Formiga
26/08/2013
ASCII 0 a 127
38
IFMG-Campus Formiga
26/08/2013
39
IFMG-Campus Formiga
26/08/2013
40
IFMG-Campus Formiga
26/08/2013
Codificao BCD
RTC DS1307
Usa codificao BCD
41
IFMG-Campus Formiga
26/08/2013
Sistemas de codificao
Exerccio 1
Represente os valores a seguir em registradores de 8
bits:
A) 20 (decimal) ->
B) 0 (ASCII) ->
C) 45 (hexadecimal) ->
IFMG-Campus Formiga
26/08/2013
Sistemas de codificao
Exerccio 2
Dados os bits, o que eles representariam se estivessem
D) 10110111 ->
E) 00111010 ->
F) 1101010110101001 ->
43
IFMG-Campus Formiga
26/08/2013
Sistemas de codificao
Exerccio 3
O RTC 1307 armazena a seguinte data: 26/12/13. Como
sero preenchidos os seguintes registradores: dia, ms, ano?
44
Arduino Mdulo 1
26/08/2013
45
IFMG-Campus Formiga
26/08/2013
46
IFMG-Campus Formiga
Float (-3.4028235E+38 a
3.4028235E+38 stored as 32
bits)
Double (On the Arduino
Due, doubles have 8-byte (64
bit) precision)
string - char array
string - object
array
http://arduino.cc/en/Refer
ence/HomePage
26/08/2013
47
IFMG-Campus Formiga
26/08/2013
48
IFMG-Campus Formiga
26/08/2013
unsigned char
49
IFMG-Campus Formiga
26/08/2013
50
IFMG-Campus Formiga
26/08/2013
98
+
78
----
Carry
(operao anterior)
Carry (1 bit)
ULA
Resultado
(8 bits)
Registrador B ( 8 bits)
51
IFMG-Campus Formiga
26/08/2013
quando:
Bit = byte ......Arduino?
Bit = word ......Arduino?
Byte = bit ......Arduino: recebe 0 ou 1
Byte = word ......Arduino: recebe-se o byte
menos significativo
word = bit ...... Arduino: recebe 0 ou 1
word = byte ....... Arduino: recebe o valor
52
IFMG-Campus Formiga
26/08/2013
53
Arduino Mdulo 1
26/08/2013
operaes:
unsigned char x, y, z;
x = calc; //x=208
y = 400; //y=144
z = x + y; //z = 96
Ver Exemplo1
54
Arduino Mdulo 1
26/08/2013
Ponteiros
unsigned int x[5];
}
ponteiro = &x[0];
ponteiro ++;
(*ponteiro)++;
Ver Exemplo2
55
Arduino Mdulo 1
26/08/2013
3-Programao em C
Mdulo 1 Programando no Arduino
57
IFMG-Campus Formiga
26/08/2013
{
//Caso passe no teste_condicional
}
else
{
//Caso no passe no teste_condicional
58
IFMG-Campus Formiga
26/08/2013
{
//expresso
59
IFMG-Campus Formiga
26/08/2013
{
//expresso
60
IFMG-Campus Formiga
26/08/2013
{
//expresso
} while ( teste_condicional )
61
IFMG-Campus Formiga
26/08/2013
{
case valor1:
break;
case valor2:
break;
case valor3:
break;
default:
//Caso no tenha encontrado um case
}
62
IFMG-Campus Formiga
26/08/2013
Typedef struct
{
//Declarao de variveis
//var1;
//Var2;
} Tipo;
...
Tipo variavel;
...
variavel.var1 = valor1;
Variavel.var2 = valor2;
int chave;
char matricula[6];
char nome[16];
char senha[4];
}Taluno;
...
Taluno turma1[40];
For(char i=0;i<40;i++){
Turma1[i].matricula[0] = 1;
...
}
63
IFMG-Campus Formiga
26/08/2013
typedef union
//Declara_varivel_maior
int x;
;
//Declara_variveis_meno
res;
char y[2];
} Tipo;
}Tint16;
...
Tint16 valor;
valor.x = 0xABCD;
valor.y[0] = ?
64
IFMG-Campus Formiga
26/08/2013
4-O Arduino
Mdulo 1 Programando no Arduino
O IDE do Arduino
66
IFMG-Campus Formiga
26/08/2013
O IDE do Arduino
67
IFMG-Campus Formiga
26/08/2013
O IDE do Arduino
68
IFMG-Campus Formiga
26/08/2013
O IDE do Arduino
ltima verso: 1.0.5 (at o incio do curso)
Escolher o Arduino
Exemplos de programas
Conexo automtica
Verificao de sintaxe
Compilao
Gravao
69
IFMG-Campus Formiga
26/08/2013
O IDE do Arduino
70
IFMG-Campus Formiga
26/08/2013
Pinos de IO
Arduino UNO
71
IFMG-Campus Formiga
26/08/2013
Pinos de IO
Arduino UNO
6 Portas de entradas
analgicas (Conversor AD
de 10 bits cada)
14 portas de IO, sendo 6
com sadas PWM
1 sada de alimentao 5 V
1 sada de alimentao de
3,3 V
72
IFMG-Campus Formiga
26/08/2013
Arduino UNO
73
IFMG-Campus Formiga
26/08/2013
Arduino UNO
74
IFMG-Campus Formiga
26/08/2013
Arduino UNO
75
IFMG-Campus Formiga
26/08/2013
Pinos de IO
Arduino Mega 2560
76
IFMG-Campus Formiga
26/08/2013
Pinos de IO
Arduino MEGA 2560
54 pinos de IO digitais
14 sadas PWM que podem
(Conversor AD de 10 bits)
77
IFMG-Campus Formiga
26/08/2013
78
IFMG-Campus Formiga
26/08/2013
79
IFMG-Campus Formiga
26/08/2013
80
IFMG-Campus Formiga
26/08/2013
Exemplos de programao
81
IFMG-Campus Formiga
26/08/2013
82
IFMG-Campus Formiga
26/08/2013
Exemplos
Pasta Laboratorios
Exemplo 1 operaes entre diversos tipos
Exemplo 2 Ponteiros
Exemplo 3 Variveis char, int e float
83
IFMG-Campus Formiga
26/08/2013
Pinos de I/O
Entrada de dados
Definir como entrada
pinMode(pino,INPUT);
Leitura
boolean x;
x = digitalRead(pino);
Sada de dados
Definir como sada
pinMode(pino,OUTPUT);
Escrever o dado
digitalWrite(pino,HIGH);
digitalWrite(pino,LOW);
84
Arduino Mdulo 1
26/08/2013
Exemplo de leitura/escrita
85
Arduino Mdulo 1
26/08/2013
Push-Button:
Normalmente: 1
Apertando: 0
86
IFMG-Campus Formiga
Normalmente: 0
Apertando: 1
26/08/2013
Push-Button
Sada Normalmente 1
Apertando: 0
87
Arduino Mdulo 1
Sada Normalemente 0
Apertando: 1
26/08/2013
Latch
88
Arduino Mdulo 1
26/08/2013
comando;
Veja exemplo a seguir.
89
IFMG-Campus Formiga
26/08/2013
90
IFMG-Campus Formiga
26/08/2013
Alimentao do Arduino
91
IFMG-Campus Formiga
26/08/2013
Alimentao do Arduino
Pode-se aliment-lo atravs da porta USB
92
IFMG-Campus Formiga
26/08/2013
Alimentao do Arduino
Clculo de Potncia
P=UxI
Tenso de alimentao do Arduino (USB) = 5V
Corrente mxima da USB (at 500mA por porta)
93
IFMG-Campus Formiga
26/08/2013
94
Arduino Mdulo 1
26/08/2013
LED
95
Arduino Mdulo 1
26/08/2013
Alimentao de um LED
96
Arduino Mdulo 1
26/08/2013
Alimentao de um LED
Dimensionamento de LEDs
IFMG-Campus Formiga
26/08/2013
98
IFMG-Campus Formiga
26/08/2013
Alimentao Externa
(-)
(+)
Ideal: 7 a 12V
99
Arduino Mdulo 1
26/08/2013
PROJETO 1
100
IFMG-Campus Formiga
26/08/2013
IFMG-Campus Formiga
26/08/2013
PROJETO 2
102
IFMG-Campus Formiga
26/08/2013
103
IFMG-Campus Formiga
26/08/2013
funcionamento;
Lgica de programao;
104
IFMG-Campus Formiga
26/08/2013
106
IFMG-Campus Formiga
26/08/2013
Vdeo 2
Vdeo 3
Vdeo 4
Vdeo 5
Vdeo 6
Vdeo 7
http://uriedubot.wordpress.com/author/uriedubot/
www.arduino.cc
http://renatoaloi.blogspot.com
107
IFMG-Campus Formiga
26/08/2013
109
IFMG-Campus Formiga
26/08/2013
Conversor AD 1 bit
110
IFMG-Campus Formiga
26/08/2013
Conversor AD 2 bits
111
IFMG-Campus Formiga
26/08/2013
Conversor AD 3 bits
112
IFMG-Campus Formiga
26/08/2013
Aliasing
113
IFMG-Campus Formiga
26/08/2013
114
IFMG-Campus Formiga
26/08/2013
115
IFMG-Campus Formiga
26/08/2013
Conversor DA
116
Arduino Mdulo 1
26/08/2013
117
IFMG-Campus Formiga
26/08/2013
Canal:
118
A0
A1
A2
A3
A4
A5
IFMG-Campus Formiga
26/08/2013
Exemplo de leitura AD
119
IFMG-Campus Formiga
26/08/2013
120
IFMG-Campus Formiga
26/08/2013
Links interessantes
http://www.sucatapontotec.netai.net/projeto-003-robo-
arduino-seguidor-de-linha/
http://www.pessoal.utfpr.edu.br/msergio/Monog-09-2Seguidor-de-linha.pdf
http://www.tur.eletrica.ufu.br/doc/regulamentoIITUR.pd
f
121
Arduino Mdulo 1
26/08/2013
Cuidado!
Nunca ligue diretamente algum dispositivo no canal AD que
122
Arduino Mdulo 1
26/08/2013
124
IFMG-Campus Formiga
26/08/2013
PWM
Usado para controle de tenso por chaveamento em alta
frequncia.
Dentre sua utilizao, encontram-se:
Controle de velocidade de motor DC;
Servomotores;
Controle de iluminao.
125
IFMG-Campus Formiga
26/08/2013
PWM
126
IFMG-Campus Formiga
26/08/2013
PWM
analogWrite(Porta, varivel);
Porta: configurada como sada.
Varivel: Valor 8 bits sem sinal (0 a 255).
127
IFMG-Campus Formiga
26/08/2013
PWM
128
IFMG-Campus Formiga
26/08/2013
Serial Parte 1
Comandos bsicos:
Void setup()
Serial.begin(9600);
Void loop()
Serial.print(Texto);
Serial.print(x);
Serial.println(x);
Serial.write(a);
Serial.write(x);//x tipo char
129
Arduino Mdulo 1
26/08/2013
8-Projetos
Mdulo 1 Programando no Arduino
PROJETO 3
131
IFMG-Campus Formiga
26/08/2013
Potencimetro
132
Arduino Mdulo 1
26/08/2013
133
IFMG-Campus Formiga
26/08/2013
PROJETO 4
134
IFMG-Campus Formiga
26/08/2013
LDR
135
Arduino Mdulo 1
26/08/2013
LDR.
O circuito dever varrer um raio de 180 graus, armazenar o
ngulo de maior intensidade luminosa e, quando terminar, ir
em direo ao ponto de maior intensidade.
136
Arduino Mdulo 1
26/08/2013
Comunicao serial
138
IFMG-Campus Formiga
26/08/2013
Comunicao serial
O envio de dados
Taxas de transmisso
Padro TTL e RS-232
Enviando dados
Recebendo dados
Criando um protocolo de transmisso (byte a byte)
139
IFMG-Campus Formiga
26/08/2013
Comunicao serial
140
IFMG-Campus Formiga
26/08/2013
141
Arduino Mdulo 1
26/08/2013
142
Arduino Mdulo 1
26/08/2013
143
Arduino Mdulo 1
26/08/2013
Comunicao serial
144
IFMG-Campus Formiga
26/08/2013
145
Arduino Mdulo 1
26/08/2013
146
Arduino Mdulo 1
26/08/2013
147
Arduino Mdulo 1
26/08/2013
148
Arduino Mdulo 1
26/08/2013
149
Arduino Mdulo 1
26/08/2013
150
Arduino Mdulo 1
26/08/2013
151
Arduino Mdulo 1
26/08/2013
152
Arduino Mdulo 1
26/08/2013
153
Arduino Mdulo 1
26/08/2013
154
Arduino Mdulo 1
26/08/2013
Padro TTL
1 ( 5V )
0 ( 0V )
porta USB.
155
Arduino Mdulo 1
26/08/2013
Padro TTL
156
Arduino Mdulo 1
26/08/2013
RS 232
1 ( -15V )
0 ( +15V )
IFMG-Campus Formiga
26/08/2013
RS 232
158
Arduino Mdulo 1
26/08/2013
RS 232
RS 232 - RS 232
159
Arduino Mdulo 1
26/08/2013
160
IFMG-Campus Formiga
26/08/2013
baud rate
161
Arduino Mdulo 1
26/08/2013
Comunicao serial
Comandos bsicos:
Serial.begin(taxa_de_transimissao);
Serial.available();
Serial.read();
Serial.write(byte);
162
IFMG-Campus Formiga
26/08/2013
Comunicao serial
Ver exemplo 6
163
IFMG-Campus Formiga
26/08/2013
10-Protocolos de comunicao
Mdulo 1 Programando no Arduino
Desenvolvimento de protocolos de
comunicao
165
IFMG-Campus Formiga
26/08/2013
Ver exemplo 7
166
IFMG-Campus Formiga
26/08/2013
11-Projeto
Mdulo 1 Programando no Arduino
PROJETO 4
168
IFMG-Campus Formiga
26/08/2013
CONTROLE DE UM MOTOR DE CC E DE
MOTOR DE PASSO POR MEIO DA SERIAL
169
IFMG-Campus Formiga
26/08/2013
12-Projeto
Mdulo 1 Programando no Arduino
PROJETO 4
171
IFMG-Campus Formiga
26/08/2013
Memrias
173
IFMG-Campus Formiga
26/08/2013
Memrias
O arduino UNO:
SRAM: 2kB
EEPROM: 1 kB
FLASH: 32 kB
SRAM
Mega2560
SRAM: 8kB
EEPROM: 4kB
FLASH
Processador
FLASH: 256 kB
EEPROM
174
IFMG-Campus Formiga
26/08/2013
Memrias
Fazer um algoritmo que grave um vetor de dados de
175
IFMG-Campus Formiga
26/08/2013
177
IFMG-Campus Formiga
26/08/2013
16 bits na EEPROM.
Ver exemplo 9
178
IFMG-Campus Formiga
26/08/2013
15-Servomotor
Mdulo 1 Programando no Arduino
Servomotor
180
IFMG-Campus Formiga
26/08/2013
Servomotor
Alimentao: de 4,5 a 6V
Comando:
#include <Servo.h>
Servo servo1; // Cria um objeto servo
void setup() {
servo1.attach(5); // Anexa o servo (fsico), no pino 5, ao objeto servo
(lgico)
}
void loop() {
int angle = analogRead(0); // L o valor do potencimetro
angle=map(angle, 0, 1023, 0, 180); // Mapeia os valores de 0 a 180 graus
servo1.write(angle); // Escreve o ngulo para o servo
delay(15); // Espera de 15ms, para permitir que o servo atinja a posio
}
181
Arduino Mdulo 1
26/08/2013
Ver exemplo 10
182
Arduino Mdulo 1
26/08/2013
PROJETO 7
SEGUIDOR SOLAR COM ENVIO DE DADOS DE POSIO
PELA PORTA SERIAL
183
IFMG-Campus Formiga
26/08/2013
16-LCD
184
IFMG-Campus Formiga
26/08/2013
185
Arduino Mdulo 1
26/08/2013
Pinos do LCD
186
Arduino Mdulo 1
26/08/2013
Conectando ao Arduino
187
Arduino Mdulo 1
26/08/2013
Ver exemplo 11
188
Arduino Mdulo 1
26/08/2013
17-Interrupes
189
IFMG-Campus Formiga
26/08/2013
Interrupes
190
IFMG-Campus Formiga
26/08/2013
Interrupo
Usada quando necessita monitorar constantemente eventos
de curta durao
A interrupo tem prioridade na execuo do programa
principal, parando-o para atender interrupo
Aps a execuo da interrupo, retoma-se o programa
191
Arduino Mdulo 1
26/08/2013
Pinos de interrupo
192
IFMG-Campus Formiga
26/08/2013
Esquema da Interrupo
Evento externo
loop()
Interrupo
Programa principal
193
Arduino Mdulo 1
26/08/2013
Ligao no Arduino
194
Arduino Mdulo 1
26/08/2013
Comando e parmetros
195
Arduino Mdulo 1
26/08/2013
196
Arduino Mdulo 1
26/08/2013
Modos de operao
197
Arduino Mdulo 1
26/08/2013
Exemplo
Ver Exemplo 12
198
Arduino Mdulo 1
26/08/2013
Nota:
199
Arduino Mdulo 1
26/08/2013
PROJETO 8
VERIFICAO DE NVEL DE TENSO DA BATERIA COM
ENVIO DE DADOS PELA SERIAL
200
IFMG-Campus Formiga
26/08/2013
Projeto 8
100% - 12,72V
90% - 12,48V
80% 12,42V
70% - 12,30V
60% - 12,18V
50% - 12,06V
40% - 11,88V
30% - 11,76V
20% - 11,58V
10% - 11,34V
0% - 10,50V
201
IFMG-Campus Formiga
26/08/2013
17-Avaliao
Mdulo 1 Programando no Arduino
AVALIAO
203
IFMG-Campus Formiga
26/08/2013
204
IFMG-Campus Formiga
26/08/2013