Вы находитесь на странице: 1из 204

Arduino – Módulo 1

COORDENADOR:
Prof. Carlos Renato Borges dos Santos

Versão 3.0
ETAPAS DO CURSO COMPLETO

 Módulo 1 – Programando o Arduino


 16 horas
 Módulo 2 – Sistemas de Interface
 Mais de 20 horas

2 IFMG-Campus Formiga 26/08/2013


Contatos

carlos.renato@ifmg.edu.br
santoscrb@gmail.com

www.santoscrb.com

3 Arduino – Módulo 1 26/08/2013


Conteúdo programático
Módulo 1 – Programando o Arduino

4 IFMG-Campus Formiga 26/08/2013


Ao final do curso, será capaz de:
 Desenvolver aplicações básicas com o Arduino e pequenos
acionamentos;
 Ler sinais de sensores que funcionam entre 0 e 5 V;
 Gravar dados na memória não-volátil;
 Desenvolver protocolos de comunicação sem verificações
complexas dos dados;
 Controlar servomotores, motores de passo e motores de
corrente contínua (apenas o controle, a parte de potência
será ministrada no módulo 2);
 Entender o processo de interrupções;
 Conhecer alguns componentes eletrônicos.

5 IFMG-Campus Formiga 26/08/2013


Conteúdo programático
 Aula 1
 O que é Arduino
 Tipos de Arduino
 A placa eletrônica
 Vantagens do Arduino
 Apresentação do programa
 Notas:
 Avaliação: 40% da nota
 Projetos: 60% da nota
 Aula 2
 Conceitos de bit, Byte, Word.
 Tipos de variáveis do Arduino.
 Manipulação de dados de diversos tipos em C

6 IFMG-Campus Formiga 26/08/2013


Conteúdo programático

 Aula 3
 Revisão sobre programação em C.
 Declaração de variáveis e ponteiros
 Condicionais:
 If
 While
 For
 Do ...While
 Switch
 Struct
 Union

7 IFMG-Campus Formiga 26/08/2013


Conteúdo programático
 Aula 4
 O IDE do Arduino.
 Verificação
 Compilação
 Pinos de IO
 Exemplo Pisca-Pisca
 Exemplo push button
 Alimentação do Arduino
 Cálculo de potência dos dispositivos
 Dimensionamento de corrente de LEDs
 Princípio de funcionamento de um motor de passo
 PROJETO 1 – ACIONAMENTO DE LEDS ATRAVÉS DE PUSH-BUTTONS
 PROJETO 2 – CONTROLE DE UM MOTOR DE PASSO EM 2 SENTIDOS

8 IFMG-Campus Formiga 26/08/2013


Conteúdo programático
 Aula 5
 VERIFICAÇÃO DOS PROJETOS 1 E 2
 Apresentação de vídeos e links interessantes
 Aula 6
 Conversão Analógico digital
 Exercícios
 Aula 7
 PWM
 Aula 8
 PROJETO 3 – CONTROLE DE VELOCIDADE DE UM MOTOR
CC ATRAVÉS DE UM POTENCIÔMETRO
 PROJETO 4 – SEGUIDOR SOLAR

9 IFMG-Campus Formiga 26/08/2013


Conteúdo programático

 Aula 9
 Comunicação serial
 Aula 10
 Desenvolvimento de protocolos de comunicação serial
 Aula 11
 PROJETO 5 – CONTROLE DE UM MOTOR DE CC E DE
MOTOR DE PASSO POR MEIO DA SERIAL
 Aula 12
 PROJETO 6 – ESTAÇÃO DE MEDIÇÃO COM ENVIO DE
DADOS PELA SERIAL

10 IFMG-Campus Formiga 26/08/2013


Conteúdo programático
 Aula 13
 Memórias
 SRAM
 FLASH
 EEPROM
 Aula 14
 Gravando e recuperando dados na EEPROM
 Aula 15
 Servomotor
 PROJETO 7 – SEGUIDOR SOLAR COM ARMAZENAMENTO E
ENVIO DE DADOS DE POSIÇÃO PELA PORTA SERIAL
 Aula 16
 Avaliação do curso e avaliação teórica

11 IFMG-Campus Formiga 26/08/2013


Livros sobre Arduino

12 Arduino – Módulo 1 26/08/2013


Bibliografia
 1- Site www.arduino.cc
 2- McRoberts, Michael. Arduino básico. Editora NovaTec.
 3- Ronald J. Tocci e Neal S. Widmer. Sistemas Digitais:
Princípios e Aplicações.
 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- Fábio Pereira. Microcontroladores PIC Programação em
C. Editora Érica.

13 IFMG-Campus Formiga 26/08/2013


Motivações

 http://globotv.globo.com/rede-globo/jornal-
nacional/v/alunos-do-engenharia-do-rio-vencem-maior-
campeonato-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

14 Arduino – Módulo 1 26/08/2013


1-Apresentação

Módulo 1 – Programando no Arduino


O que é Arduino

16 IFMG-Campus Formiga 26/08/2013


O que é Arduino

 É uma plataforma de prototipagem eletrônica de hardware


livre, projetada com um microcontrolador Atmel AVR de
placa única, com suporte de entrada/saída embutido, uma
linguagem de programação padrão, na qual é essencialmente
C/C++.
 O projeto iniciou-se na Itália, em 2005, com o intuito de
interagir em projetos escolares.

17 IFMG-Campus Formiga 26/08/2013


O que é Arduino

18 IFMG-Campus Formiga 26/08/2013


O que é Arduino

 O Arduino IDE é uma aplicação multiplataforma


escrita em Java. Inclui um editor de código,
compilador e carrega programas para a placa com
um único clique.
 Com isso não há a necessidade de editar Makefiles
ou rodar programas em ambientes de linha de
comando.

19 IFMG-Campus Formiga 26/08/2013


O que é Arduino

Linguagem do Arduino Linguagem C


 void setup()  void main()
{
 {
 //Comandos de
 //void setup
//inicialização
}  while(1)
 void loop() {
{  //void loop

 //Instruções repetidas }
//infinitamente  }
}

20 Arduino – Módulo 1 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 eletrônica

25 IFMG-Campus Formiga 26/08/2013


A placa eletrônica

26 IFMG-Campus Formiga 26/08/2013


A placa eletrônica

27 IFMG-Campus Formiga 26/08/2013


Vantagens do Arduino

28 IFMG-Campus Formiga 26/08/2013


Vantagens do Arduino

Vantagens Desvantagens
 Alimentação: Pode ser  Não simula em
alimentado pela USB
computador (ainda não
 Total compatibilidade entre o
IDE e a placa, não sendo encontrei)
necessárias configurações  Nem todas as portas
complexas
possuem um LED
 Não precisa de alimentação
externa integrado à plataforma.
 Preço, se comparado a um kit  Ao sair do estado de
com microcontrolador PIC, protótipo deve-se fazer
8051 ou outro
adequações
29 IFMG-Campus Formiga 26/08/2013
Kit PIC

Kit PIC
 Alimentação externa
(127/220V)
 Não inclui compilador
(MikroC, CCS)
 Não inclui simulador
(Proteus)
 Utiliza MPLAB
 Preço: R$ 600,00

30 IFMG-Campus Formiga 26/08/2013


Comparação

Arduino PIC / 8051


 Abrir software de edição em C
 Abrir software Arduino  Criar uma pasta e nomear o projeto
 Selecionar o Arduino  Configurar fusíveis
 Abrir biblioteca de exemplos, copiar
 Abrir arquivo exemplo
 Configurar registradores dos periféricos
 Cabo USB  Certificar se é o PIC, ex: 18F4550
 Kit + Fonte de alimentação + cabo USB +
 Plugar o Arduino gravador + cabo RJ
 Compilar
 Compilar  Abrir o MPLAB para gravação
 Encontrar o arquivo .HEX
 Clicar em Play

31 IFMG-Campus Formiga 26/08/2013


Apresentação do programa

 Notas:
 50% - avaliação escrita
 50% - projetos

32 IFMG-Campus Formiga 26/08/2013


2-Conceitos básicas

Módulo 1 – Programando no Arduino


PARTE 1 – Noções de software

 Conceitos de bit, Byte, Word.


 Códigos ASCII, Binário, BCD, Hexadecimal.
 Revisão sobre programação em C.
 Tipos de variáveis.
 O IDE do Arduino.

34 IFMG-Campus Formiga 26/08/2013


Conceitos de bit, Byte e Word

35 IFMG-Campus Formiga 26/08/2013


Conceitos de bit, byte e word

 Bit – É um registrador ou variável que armazena o valor 0 ou


1. Uma variável do tipo bit é usada para testes lógicos dos
tipos: verdadeiro ou falso.
 Byte – É um conjunto de 8 bits. Usado para armazenar
valores de 0 a 255 (sem sinal) ou de -128 a +127 (com sinal)
 Word – É um conjunto de 16 bits. Armazena valores de 0 a
65535 ou -32768 a 32767

36 IFMG-Campus Formiga 26/08/2013


Sistemas de codificação

37 IFMG-Campus Formiga 26/08/2013


ASCII – 0 a 127

38 IFMG-Campus Formiga 26/08/2013


ASCII – 128 a 255

39 IFMG-Campus Formiga 26/08/2013


Hexadecimal – binário - decimal

40 IFMG-Campus Formiga 26/08/2013


Codificação BCD

RTC DS1307
Usa codificação BCD

41 IFMG-Campus Formiga 26/08/2013


Sistemas de codificação

Exercício 1
 Represente os valores a seguir em registradores de 8
bits:
 A) 20 (decimal) ->
 B) 0 (ASCII) ->
 C) 45 (hexadecimal) ->
 D) 10110 (binário) ->
 E) 7E (hexadecimal) ->
 F) 64 (bcd) ->

42 IFMG-Campus Formiga 26/08/2013


Sistemas de codificação

Exercício 2
 Dados os bits, o que eles representariam se estivessem
em: ASCII, hexadecimal, BCD e decimal: (
 A) 10010100 ->
 B) 01010101 ->
 C) 11110000 ->
 D) 10110111 ->
 E) 00111010 ->
 F) 1101010110101001 ->

43 IFMG-Campus Formiga 26/08/2013


Sistemas de codificação

Exercício 3
 O RTC 1307 armazena a seguinte data: 26/12/13. Como
serão preenchidos os seguintes registradores: dia, mês, ano?

44 Arduino – Módulo 1 26/08/2013


Tipos de variáveis do Arduino

45 IFMG-Campus Formiga 26/08/2013


Tipos de variáveis do Arduino
 boolean  Float (-3.4028235E+38 a
 char (-128 a 127) 3.4028235E+38 stored as 32
bits)
 unsigned char (0 a 255)
 Double (On the Arduino
 byte (0 a 255) Due, doubles have 8-byte (64
 int (-32.768 a 32.767) bit) precision)
 unsigned int (0 a 65535)  string - char array
 word (0 a 65535)  string - object
 long [32 bits (4 bytes), de -  array
2.147.483.648 a
2.147.483.647]
 http://arduino.cc/en/Refer
 unsigned long (0 a
ence/HomePage
4.294.967.295)

46 IFMG-Campus Formiga 26/08/2013


Manipulação de dados de diversos
tipos em C

47 IFMG-Campus Formiga 26/08/2013


Manipulação de dados de diversos
tipos em C
Dicas sobre o uso de variáveis

 Como o processador é de 8 bits, evite usar variáveis longas,


isso poupará memória e aumentará a velocidade de cálculo.
 Prefira usar variáveis inteiras de 8 e 16 bits, evitando
variáveis com ponto flutuante.

48 IFMG-Campus Formiga 26/08/2013


Manipulação de dados de diversos
tipos em C

char

Sinal
(+) 0
(-) 1

unsigned char

49 IFMG-Campus Formiga 26/08/2013


Manipulação de dados de diversos
tipos em C

50 IFMG-Campus Formiga 26/08/2013


Manipulação de dados de diversos
tipos em C
Registrador A
(8 bits)

98 Carry
Carry (1 bit)
(operação anterior)
+
78 ULA
---- Resultado
(8 bits)

Registrador B ( 8 bits)
51 IFMG-Campus Formiga 26/08/2013
Manipulação de dados de diversos
tipos em C
 O que acontece com os valores armazenados
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


Valores em decimal, hexa e binário

 X = 0x10; // x recebe o valor 10h (16 decimal)


 Y = 10; // y recebe 10 decimal
 Z = 0b10; // z recebe 10b (2 decimal)

53 Arduino – Módulo 1 26/08/2013


Operações com variáveis

 Calcule o resultado das variáveis após as seguintes


operações:
 unsigned int calc = 2000;
 unsigned char x, y, z;
 x = calc; //x=208
 y = 400; //y=144
 z = x + y; //z = 96
 Ver Exemplo1
54 Arduino – Módulo 1 26/08/2013
Ponteiros
 unsigned int x[5];
 unsigned int *ponteiro;
 for(char i = 0;i<5;i++)
 {
 x[i] = 2*i+1;
 }
 ponteiro = &x[0];
 ponteiro ++;
 (*ponteiro)++;
 Ver Exemplo2

55 Arduino – Módulo 1 26/08/2013


3-Programação em C

Módulo 1 – Programando no Arduino


Revisão sobre programação em C

57 IFMG-Campus Formiga 26/08/2013


Revisão sobre programação em C

 if( teste_condicional )
 {
 //Caso passe no teste_condicional
 }
 else
 {
 //Caso não passe no teste_condicional
 }

58 IFMG-Campus Formiga 26/08/2013


Revisão sobre programação em C

 while( teste_condicional )
 {
 //expressão
 }

59 IFMG-Campus Formiga 26/08/2013


Revisão sobre programação em C

 for( inicialização ; teste_condicional ; incremento )


 {
 //expressão
 }

60 IFMG-Campus Formiga 26/08/2013


Revisão sobre programação em C

 do
 {
 //expressão
 } while ( teste_condicional )

61 IFMG-Campus Formiga 26/08/2013


Revisão sobre programação em C

 switch(variavel)
 {
 case valor1:
 break;
 case valor2:
 break;
 case valor3:
 break;
 default:
 //Caso não tenha encontrado um case

 }

62 IFMG-Campus Formiga 26/08/2013


Revisão sobre programação em C
 typedef struct  Typedef struct
 {  {
 //Declaração de variáveis  int chave;
 //var1;  char matricula[6];
 //Var2;  char nome[16];
 } Tipo;  char senha[4];
 ...  }Taluno;
 Tipo variavel;  ...
 ...  Taluno turma1[40];
 variavel.var1 = valor1;  For(char i=0;i<40;i++){
 Variavel.var2 = valor2;  Turma1[i].matricula[0] = ‘1’;
 ...
 }

63 IFMG-Campus Formiga 26/08/2013


Revisão sobre programação em C

 typedef union  typedef union


 {  {
 //Declara_variável_maior  int x;
;  char y[2];
 //Declara_variáveis_meno  }Tint16;
res;
 ...
 } Tipo;
 Tint16 valor;
 valor.x = 0xABCD;
 valor.y[0] = ?

64 IFMG-Campus Formiga 26/08/2013


4-O Arduino

Módulo 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 versão: 1.0.5 (até o início do curso)


 Escolher o Arduino
 Exemplos de programas
 Conexão automática
 Verificação de sintaxe
 Compilação
 Gravação

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
analógicas (Conversor AD
de 10 bits cada)
 14 portas de IO, sendo 6
com saídas PWM
 1 saída de alimentação 5 V
 1 saída de alimentação 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 saídas PWM que podem
ser configuradas como
entradas digitais
 4 terminais de
comunicação serial USART
+ 1 I2C
 Pinos 22 a 53 de IO digital
 16 entradas analógicas
(Conversor AD de 10 bits)

77 IFMG-Campus Formiga 26/08/2013


Arduino Mega 2560

78 IFMG-Campus Formiga 26/08/2013


Arduino Mega 2560

79 IFMG-Campus Formiga 26/08/2013


Arduino Mega 2560

80 IFMG-Campus Formiga 26/08/2013


Exemplos de programação

81 IFMG-Campus Formiga 26/08/2013


Exemplos de programação: Pisca-pisca

IFMG-Campus Formiga
82 26/08/2013
Exemplos

 Pasta Laboratorios
 Exemplo 1 – operações entre diversos tipos
 Exemplo 2 – Ponteiros
 Exemplo 3 – Variáveis 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);
 Saída de dados
 Definir como saída
 pinMode(pino,OUTPUT);
 Escrever o dado
 digitalWrite(pino,HIGH);
 digitalWrite(pino,LOW);

84 Arduino – Módulo 1 26/08/2013


Exemplo de leitura/escrita

85 Arduino – Módulo 1 26/08/2013


Push-Button:
Normalmente: 1 Normalmente: 0
Apertando: 0 Apertando: 1

86 IFMG-Campus Formiga 26/08/2013


Push-Button
Saída Normalmente 1 Saída Normalemente 0
Apertando: 0 Apertando: 1

87 Arduino – Módulo 1 26/08/2013


Latch

88 Arduino – Módulo 1 26/08/2013


Exemplos de programação: push
button
 Cada pino deverá ser configurado como entrada;
 Para ler o sinal do pino, deverá ser através de um
comando;
 Veja exemplo a seguir.

89 IFMG-Campus Formiga 26/08/2013


Exemplo de leitura digital

90 IFMG-Campus Formiga 26/08/2013


Alimentação do Arduino

91 IFMG-Campus Formiga 26/08/2013


Alimentação do Arduino

 Pode-se alimentá-lo através da porta USB


 Possui alimentação externa.

92 IFMG-Campus Formiga 26/08/2013


Alimentação do Arduino

Cálculo de Potência

 P=UxI
 Tensão de alimentação do Arduino (USB) = 5V
 Corrente máxima da USB (até 500mA por porta)

 Um simples resistor de 1k: I = 5/1000 = 5 mA


 Um simples resistor de 100R: I = 5/100 = 50 mA

93 IFMG-Campus Formiga 26/08/2013


Código de cores de resistores

94 Arduino – Módulo 1 26/08/2013


LED

95 Arduino – Módulo 1 26/08/2013


Alimentação de um LED

96 Arduino – Módulo 1 26/08/2013


Alimentação de um LED

 Dimensionamento de LEDs
 Um LED consome cerca de 5 a 30 mA, dependendo do
tamanho e tipo de LED. Quando ligado, sua tensão é da
ordem de 1,2V. Logo, o resistor que deve ser ligado em série:

 Caso de alimentação USB: R = (5 – 1,2)/5m = 760 Ohms


 No caso, é mais prudente arredondar a resistência para cima,
logo usa-se 1kohm
 Tente agora para ligar um LED em 12V

97 IFMG-Campus Formiga 26/08/2013


USB conector tipo B

98 IFMG-Campus Formiga 26/08/2013


Alimentação Externa

(-)

(+)
Ideal: 7 a 12V
99 Arduino – Módulo 1 26/08/2013
PROJETO 1

100 IFMG-Campus Formiga 26/08/2013


ACIONAMENTO DE LEDS ATRAVÉS DE
PUSH-BUTTONS
 DESCRIÇÃO: O projeto deverá acionar um LED que represente
um motor de CC. O acionamento se dará por push-button. Ao
acionar a chave, o programa deverá verificar o estado do LED e
mudá-lo. Não se esqueça de inserir um delay após ler o estado
do push-button.
 Outros dois botões poderão ser usados para regular o tempo de
acionamento do LED.
 Aproveite os outros pinos de I/O e use a criatividade para
acionar mais de um LED.

101 IFMG-Campus Formiga 26/08/2013


PROJETO 2

102 IFMG-Campus Formiga 26/08/2013


CONTROLE DE UM MOTOR DE PASSO
EM 2 SENTIDOS
 DESCRIÇÃO: Elaborar subrotinas que leiam 2 push-buttons,
um que ao ser acionado chame uma subrotina que gire LEDs
à direita e outro que ao ser acionado chame uma subrotina
que gire LEDs à esquerda.
 Tente usar void, funções, variáveis, struct para deixar o
código mais elegante e organizado
 Insira comentários sempre que possível para explicar as
etapas do código.

103 IFMG-Campus Formiga 26/08/2013


Aplicação: Motor de passo

 Princípio de
funcionamento;
 Lógica de programação;

104 IFMG-Campus Formiga 26/08/2013


5-Consulta sobre os projetos

Módulo 1 – Programando no Arduino


Verificação dos projetos 1 e 2

106 IFMG-Campus Formiga 26/08/2013


Vídeos e links interessantes
 Vídeo 1
 Vídeo 2
 Vídeo 3
 Vídeo 4
 Vídeo 5
 Vídeo 6
 Vídeo 7
 http://uriedubot.wordpress.com/author/uriedubot/
 www.arduino.cc
 http://renatoaloi.blogspot.com

107 IFMG-Campus Formiga 26/08/2013


6-Hardware interno [1]

Módulo 1 – Programando no Arduino


Conversão analógico-digital (ADC)

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


Conversão analógico-digital (ADC)

114 IFMG-Campus Formiga 26/08/2013


Conversão analógico-digital (ADC)

115 IFMG-Campus Formiga 26/08/2013


Conversor DA

116 Arduino – Módulo 1 26/08/2013


Conversão analógico-digital (ADC)

 É uma função que retorna um valor de 10 bits.


 Precisa de um comando específico.
 Lembre-se que a execução desse comando necessita de um
pequeno intervalo de tempo (de micro a milissegundos).
 Os valores lidos pelo ADC podem variar de 0 a 1023.

117 IFMG-Campus Formiga 26/08/2013


Conversão analógico-digital (ADC)
 Sensor de precisão:
 Variavel (16 bits) = analogRead(Canal)
 Sensor de baixa precisão ou de sinal ruidoso:
 Variavel (8 bits) = analogRead(Canal)>>2

 Canal:
 A0
 A1
 A2
 A3
 A4
 A5

118 IFMG-Campus Formiga 26/08/2013


Exemplo de leitura AD

119 IFMG-Campus Formiga 26/08/2013


Exemplo: seguidor de linha

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-2-
Seguidor-de-linha.pdf
 http://www.tur.eletrica.ufu.br/doc/regulamentoIITUR.pd
f

121 Arduino – Módulo 1 26/08/2013


Cuidado!

 Nunca ligue diretamente algum dispositivo no canal AD que


tenha alguma possibilidade de atingir valores acima de 5V

122 Arduino – Módulo 1 26/08/2013


7-Hardware interno [2]

Módulo 1 – Programando no Arduino


PWM (conversão digital-analógico)

124 IFMG-Campus Formiga 26/08/2013


PWM

 Usado para controle de tensão por chaveamento em alta


frequência.
 Dentre sua utilização, encontram-se:
 Controle de velocidade de motor DC;
 Servomotores;
 Controle de iluminação.

125 IFMG-Campus Formiga 26/08/2013


PWM

126 IFMG-Campus Formiga 26/08/2013


PWM

 analogWrite(Porta, variável);

 Porta: configurada como saída.


 Variável: 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 básicos:
 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 – Módulo 1 26/08/2013


8-Projetos

Módulo 1 – Programando no Arduino


PROJETO 3

131 IFMG-Campus Formiga 26/08/2013


Potenciômetro

132 Arduino – Módulo 1 26/08/2013


CONTROLE DE UM MOTOR CC ATRAVÉS
DE UM POTENCIÔMETRO
 A) DESCRIÇÃO: Elaborar um algoritmo que leia um canal
AD e envie o sinal lido para o PWM.
 B) DESCRIÇÃO: Elaborar um algoritmo que leia um canal
AD e varie lentamente o sinal PWM até atingir o valor
configurado. Para isso, é necessário comparar o sinal lido no
AD com o sinal do PWM.

133 IFMG-Campus Formiga 26/08/2013


PROJETO 4

134 IFMG-Campus Formiga 26/08/2013


LDR

135 Arduino – Módulo 1 26/08/2013


PROJETO DE UM SEGUIDOR SOLAR

 Construir um seguidor solar guiado por motor de passo e


LDR.
 O circuito deverá “varrer” um raio de 180 graus, armazenar o
ângulo de maior intensidade luminosa e, quando terminar, ir
em direção ao ponto de maior intensidade.

136 Arduino – Módulo 1 26/08/2013


9-Noções sobre a Serial

Módulo 1 – Programando no Arduino


Comunicação serial

138 IFMG-Campus Formiga 26/08/2013


Comunicação serial

 O envio de dados
 Taxas de transmissão
 Padrão TTL e RS-232
 Enviando dados
 Recebendo dados
 Criando um protocolo de transmissão (byte a byte)

139 IFMG-Campus Formiga 26/08/2013


Comunicação serial

140 IFMG-Campus Formiga 26/08/2013


141 Arduino – Módulo 1 26/08/2013
142 Arduino – Módulo 1 26/08/2013
143 Arduino – Módulo 1 26/08/2013
Comunicação serial

144 IFMG-Campus Formiga 26/08/2013


145 Arduino – Módulo 1 26/08/2013
146 Arduino – Módulo 1 26/08/2013
147 Arduino – Módulo 1 26/08/2013
148 Arduino – Módulo 1 26/08/2013
149 Arduino – Módulo 1 26/08/2013
150 Arduino – Módulo 1 26/08/2013
151 Arduino – Módulo 1 26/08/2013
152 Arduino – Módulo 1 26/08/2013
153 Arduino – Módulo 1 26/08/2013
154 Arduino – Módulo 1 26/08/2013
Padrão TTL

 1 – – – – – – ( 5V )
 0 – – – – – – ( 0V )

 A IDE do Arduino cria uma COM virtual a partir de uma


porta USB.

155 Arduino – Módulo 1 26/08/2013


Padrão TTL

156 Arduino – Módulo 1 26/08/2013


RS 232

 1 – – – – – – ( -15V )
 0 – – – – – – ( +15V )

 Nunca ligue um microcontrolador ou Arduino diretamente à


porta serial! É preciso um conversor MAX 232

157 IFMG-Campus Formiga 26/08/2013


RS 232

158 Arduino – Módulo 1 26/08/2013


RS 232

RS 232 - RS 232 Conversor TTL - RS 232

159 Arduino – Módulo 1 26/08/2013


Interface serial RS232

160 IFMG-Campus Formiga 26/08/2013


baud rate

161 Arduino – Módulo 1 26/08/2013


Comunicação serial

Comandos básicos:

 Serial.begin(taxa_de_transimissao);

 Serial.available();
 Serial.read();
 Serial.write(byte);

162 IFMG-Campus Formiga 26/08/2013


Comunicação serial

Ver exemplo 6

163 IFMG-Campus Formiga 26/08/2013


10-Protocolos de comunicação

Módulo 1 – Programando no Arduino


Desenvolvimento de protocolos de
comunicação

165 IFMG-Campus Formiga 26/08/2013


 Ver exemplo 7

166 IFMG-Campus Formiga 26/08/2013


11-Projeto

Módulo 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

 DESCRIÇÃO: Desenvolver um algoritmo que receba um


comando que controle a velocidade de um motor de CC e
comande também um motor de passo.

169 IFMG-Campus Formiga 26/08/2013


12-Projeto

Módulo 1 – Programando no Arduino


PROJETO 4

171 IFMG-Campus Formiga 26/08/2013


13-Hardware interno [3]

Módulo 1 – Programando no Arduino


Memórias

173 IFMG-Campus Formiga 26/08/2013


Memórias

 O arduino UNO:
 SRAM: 2kB
 EEPROM: 1 kB
 FLASH: 32 kB
SRAM
 Mega2560
 SRAM: 8kB
FLASH Processador
 EEPROM: 4kB
 FLASH: 256 kB
EEPROM

174 IFMG-Campus Formiga 26/08/2013


Memórias

 Fazer um algoritmo que grave um vetor de dados de


quantidade indeterminada (algo está sendo lido)

175 IFMG-Campus Formiga 26/08/2013


14-Mais sobre EEPROM

Módulo 1 – Programando no Arduino


Gravando e recuperando dados na
EEPROM

177 IFMG-Campus Formiga 26/08/2013


Gravando e recuperando dados de 8 e
de 16 bits na EEPROM
 DESCRIÇÃO: Fazer um algoritmo que grave dados de 8 e de
16 bits na EEPROM.
 Ver exemplo 9

178 IFMG-Campus Formiga 26/08/2013


15-Servomotor

Módulo 1 – Programando no Arduino


Servomotor

180 IFMG-Campus Formiga 26/08/2013


Servomotor
 Alimentação: de 4,5 a 6V
 Comando:
 #include <Servo.h>
 Servo servo1; // Cria um objeto servo
 void setup() {
 servo1.attach(5); // Anexa o servo (físico), no pino 5, ao objeto servo
(lógico)
 }
 void loop() {
 int angle = analogRead(0); // Lê o valor do potenciômetro
 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 posição
 }

181 Arduino – Módulo 1 26/08/2013


 Ver exemplo 10

182 Arduino – Módulo 1 26/08/2013


PROJETO 7
SEGUIDOR SOLAR COM ENVIO DE DADOS DE POSIÇÃO
PELA PORTA SERIAL

183 IFMG-Campus Formiga 26/08/2013


16-LCD

184 IFMG-Campus Formiga 26/08/2013


Liquid Crystal Display

185 Arduino – Módulo 1 26/08/2013


Pinos do LCD

186 Arduino – Módulo 1 26/08/2013


Conectando ao Arduino

187 Arduino – Módulo 1 26/08/2013


 Ver exemplo 11

188 Arduino – Módulo 1 26/08/2013


17-Interrupções

189 IFMG-Campus Formiga 26/08/2013


Interrupções

190 IFMG-Campus Formiga 26/08/2013


Interrupção

 Usada quando necessita monitorar constantemente eventos


de curta duração
 A interrupção tem prioridade na execução do programa
principal, parando-o para atender à interrupção
 Após a execução da interrupção, retoma-se o programa

191 Arduino – Módulo 1 26/08/2013


Pinos de interrupção

192 IFMG-Campus Formiga 26/08/2013


Esquema da Interrupção

Evento externo

Interrupção
loop()
Programa principal

193 Arduino – Módulo 1 26/08/2013


Ligação no Arduino

194 Arduino – Módulo 1 26/08/2013


Comando e parâmetros

195 Arduino – Módulo 1 26/08/2013


Linha de tempo da interrupção

196 Arduino – Módulo 1 26/08/2013


Modos de operação

197 Arduino – Módulo 1 26/08/2013


Exemplo

 Ver Exemplo 12

198 Arduino – Módulo 1 26/08/2013


Nota:

199 Arduino – Módulo 1 26/08/2013


PROJETO 8
VERIFICAÇÃO DE NÍVEL DE TENSÃO 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-Avaliação

Módulo 1 – Programando no Arduino


AVALIAÇÃO

203 IFMG-Campus Formiga 26/08/2013


Fim do curso – Módulo 1
Coordenador: Carlos Renato Borges dos Santos
Voluntário: Silas Martins Sousa

204 IFMG-Campus Formiga 26/08/2013

Вам также может понравиться