Escolar Documentos
Profissional Documentos
Cultura Documentos
Campus Vitória
Curso Superior em Engenharia Elétrica
●
Acesso direto a pinos
– A placa arduino UNO utiliza 3 portas para acionar os
terminais da placa:
●
B – aciona os pinos digitais 8 a 13
●
C – aciona as portas analógicas (também podem ser
os pinos digitais 14 a 19)
●
D – aciona os pinos digitais 0 a 7
Programação com Arduino
●
Acesso direto a pinos
– A placa arduino MEGA utiliza 11 portas para acionar os terminais da placa:
●
A – aciona os pinos digitais 22 a 29
●
B – aciona os pinos digitais 10 a 13 e 50 a 53
●
C – aciona os pinos digitais 30 a 37
●
D – aciona os pinos digitais 18 a 21 e 38
●
E – aciona os pinos digitais 0 a 3 e 5
●
F – aciona os pinos analógicos 0 a 7 (também podem ser os pinos digitais 54 a 61)
●
G – aciona os pinos digitais 4 e 39 a 41
●
H – aciona os pinos digitais 16, 17 e 6 a 9
●
J – aciona os pinos digitais 14 e 15
●
K – aciona os pinos analógicos 8 a 15 (também podem ser os pinos digitais 62 a 69)
●
L – aciona os pinos digitais 42 a 51
Programação com Arduino
●
Acesso direto a pinos
– A placa arduino DUE utiliza 11 portas para acionar os terminais da placa:
●
A – aciona os pinos digitais 22 a 29
●
B – aciona os pinos digitais 10 a 13 e 50 a 53
●
C – aciona os pinos digitais 30 a 37
●
D – aciona os pinos digitais 18 a 21 e 38
●
E – aciona os pinos digitais 0 a 3 e 5
●
F – aciona os pinos analógicos 0 a 7 (também podem ser os pinos digitais 54 a 61)
●
G – aciona os pinos digitais 4 e 39 a 41
●
H – aciona os pinos digitais 16, 17 e 6 a 9
●
J – aciona os pinos digitais 14 e 15
●
K – aciona os pinos analógicos 8 a 15 (também podem ser os pinos digitais 62 a 69)
●
L – aciona os pinos digitais 42 a 51
Programação com Arduino
●
Acesso direto a pinos
– A placa arduino DUE utiliza 4 portas para acionar os terminais da
placa:
●
A – aciona os pinos digitais 0, 1, 4, 10, 16 a 19, 23, 24, 31, 42, 43,
54 a 61(entradas analógicas 0 a 7), 68 (CANRX), 69 (CANTX), 70
(SDA1), 71 (SCL1)
●
B – aciona os pinos digitais 2, 13, 20 a 22, 52, 53, 62 a 65
(entradas analógicas 8 a 11) e 66 e 67 (Saídas analógicas 0 e 1)
●
C – aciona os pinos digitais 3 a 5 a 10, 33 a 51
●
D – aciona os pinos digitais 11, 12, 14, 15, 25 a 30, 32
– O pino 4 está ligado ao pino PA29 e ao pino PC26
– O pino 10 está ligado o pino PA28 e ao pino PC29
Programação com Arduino
●
Acesso direto a pinos
– O acesso direto aos pinos é configurado através de 3
registros na família ATMEGA para cada porta, onde X deve
ser substituído pela letra da porta
●
DDRX – Registro de direção da porta X – Define quais
pinos da porta são entrada ou saída (1 → saída, 0 →
entrada)
●
PORTX – Registro de saída da porta X – Configura o
valor que será apresentado no pino
●
PINX – Registro de entrada da porta X – Usado para
leitura dos valores presentes na porta X
Programação com Arduino
●
Acesso direto a pinos
– O acesso direto aos pinos é configurado através de um conjunto
mínimo de 9 registros no processador SAM3X para cada porta, onde X
deve ser substituído pela letra da porta
●
PIOX->PIO_PER – Desabilita outros periféricos e habilita função IO
– PIO Enable register
●
PIOX->PIO_PDR – Desabilita a função IO
– PIO Disable Register
●
PIOX->PIO_OER – Configura pino como saída (1)
– PIO Output Enable Register
●
PIOX->PIO_ODR – Configura pino como entrada (1)
– PIO Output Disable
Programação com Arduino
●
Acesso direto a pinos
– O acesso direto aos pinos é configurado através de um conjunto mínimo de 9
registros no processador SAM3X para cada porta, onde X deve ser substituído pela
letra da porta (continuação)
●
PIOX->PIO_SODR – Escreve nível alto no pino selecionado (1)
– PIO Set Output Data Register
●
PIOX->PIO_CODR – Escreve nível baixo no pino selecionado (1)
– PIO Set Output Data Register
●
PIOX->PIO_PDSR – Lê o estado da porta
– PIO Pin Data Status Register
●
PIOX->PIO_PUDR – Desabilita resistores internos de Pull-Up (1)
– PIO Pull Up Disable Register
●
PIOX->PIO_PUER – Habilita resistores internos de Pull-Up (1)
– PIO Pull Up Enable Register
Programação com Arduino
●
Acesso direto a pinos
– Desvantagens do acesso direto aos pinos:
●
Diminui a portabilidade entre placas com diferentes modelos de
microcontrolador
●
Dificulta a leitura do código desenvolvido
●
Aumenta a possibilidade de erros configuração, no caso da
configuração usando os registradores
– Vantagens do acesso direto aos pinos:
●
Aumento da velocidade de acesso aos pinos
●
Possibilidade de alterar o valor de mais de um pino
simultaneamente
●
Pode reduzir a utilização de memória de programa
Programação com Arduino
●
Entradas Analógicas
– UNO – 6 entradas de 10 bits (inteiro de 0 a 1023)
– MEGA – 16 entradas de 10 bits (inteiro de 0 a 1023)
– DUE – 14 entradas de 10 bits (inteiro de 0 a 1023) ou
12 bits (inteiro de 0 a 4095)
●
Saídas analógicas
– UNO – 0
– MEGA – 0
– DUE – 2 saídas de 12 bits
Programação com Arduino
●
Conversão Analógico/Digital (ADC)
– VAL = analogRead(pin)
● VAL → Valor lido (0 – 1023)
● Pin → número da entrada analógica
– analogReference(MODO)
● Configura o maior valor de entrada do conversor A/D de
acordo com MODO
● DEFAULT → tensão de alimentação (5V no UNO/MEGA)
● INTERNAL → tensão de referência interna de 1,1V (UNO)
● INTERNAL1V1 → tensão de referencia interna de 1,1V (MEGA)
● INTERNAL2V56 → tensão de referencia interna de 2,56V
(MEGA)
● AR_DEFAULT → tensão de referencia padrão de 3,3V (DUE)
Programação com Arduino
●
As saídas “analógicas” do
Arduino utilizam a
modulação PWM para
variar o valor médio da
tensão de saída
●
Os Arduinos UNO e MEGA
não possuem conversor
Digital / Analógico
●
O Arduino DUE possui
duas saídas de conversor
Digital / Analógico
Programação com Arduino
●
Saídas PWM (analógicas) ● analogWrite(Pin, valor)
– Frequências da saída PWM: ● Pin → número da saída PWM
●
UNO:
● Valor → valor entre 0 e 255
– 490 Hz nas saídas 3, 9, 10 e 11
– 980 Hz nas saídas 5 e 6 (4095) que representa o ciclo
●
MEGA: de trabalho da saída
– 490 Hz nas saídas 2, 3, 5, a 12 ●
Exemplo:
e 44 a 46 int val;
– 980 Hz nas saídas 4 e 13 void setup(){
●
DUE: }
void loop(){
– 1000 Hz nas saídas 2 a 13
val = analogRead(0);
– Resolução: val = val>>2;
●
UNO e MEGA: 8 bits analogWrite(5, val);
}
●
DUE: 8 ou 12 bits
Exercício
●
Utilizando o Arduino, criar um programa que acione um
LED com frequência controlada por um potenciômetro. A
frequência de acionamento deve variar entre
aproximadamente 0,25 e 2 Hz
●
Amplie o programa anterior para que possa ser possível
acionar dois LED com frequências independentes e
controladas por dois potenciômetros
●
Altere os programas anteriores de forma que o
acionamento dos LEDs seja gradual e não ON-OFF
Programação com Arduino
●
Porta serial Assíncrona usada para comunicação entre o
Arduino e o PC, ou outro Arduino
●
Os parâmetros dos dispositivos conectados precisam ser
iguais para que a comunicação ocorra
●
A porta serial é um objeto que é instanciado por padrão
como Serial e não necessita de declaração, apenas
configuração
●
No caso das placas MEGA e DUE, existem mais portas
seriais que são instanciadas como Serial1, Serial2 e
Serial3, além de Serial
Programação com Arduino
●
Exemplo: int car;
void setup(){
– Elaborar um programa
que receba um Serial.begin(9600);
caractere pela porta }
serial e devolva o void loop(){
mesmo e o valor if (Serial.available()){
decimal correspondente
car=Serial.read();
ao caractere
Serial.write(car);
Serial.print(' ');
Serial.println(car);
}
}
Exercício
●
Elabore um programa que interaja com o usuário através
da porta serial e altere a frequência de oscilação de um
LED, de acordo com o valor escolhido pelo usuário: os
números de 1 a 9 representam tempos de 100 a 900 ms,
respectivamente. Outros caracteres devem ser
descartados. O programa deve enviar mensagens com
instruções para o usuário.