Você está na página 1de 19

Instituto Federal do Espírito Santo

Campus Vitória
Pós-graduação em Engenharia Elétrica

Prof. Dr. Leandro Bueno


Disciplina: Sistemas Embarcados Aplicados à
Robótica
Microcontroladores

Dispositivos dotados de uma unidade de processamento,
memórias e dispositivos de interface de entrada/saída

Podem ser programados em diferentes linguagens
(assembly, C, etc)

Em geral não apresentam um sistema operacional

O programa do usuário interage diretamente com o
hardware do dispositivo
Microcontroladores

Ambiente de programação a ser usado no curso:
– Arduino

Disponível gratuitamente no site
http://www.arduino.cc
Arduino UNO

Arduino Uno
(ATmega328, 8 bits, AVR)
– 2048 bytes de RAM
– 32k bytes de flash
– 1024 bytes de EEPROM
– 14 pinos de Entrada/Saída Digital
– 1 Input Capture / 1 CCP / 6 PWM
– 1 UART / 2 SPI / 1 I2C
– Conversor Analógico/Digital de 10 bits com 6 canais de entrada
– Tensão de interface de 5V
– Clock de 16MHz
Arduino UNO
Arduino MEGA

O Arduino Mega
(ATmega2650, 8 bits, AVR)
– 8192 bytes de RAM
– 256k bytes de flash
– 4096 bytes de EEPROM
– 54 pinos de Entrada/Saída digital
– 4 Input Capture / 4 CCP / 16 PWM
– 4 UART / 5 SPI / 1 I2C
– Conversor Analógico/Digital de 10 bits com 16 canais de entrada
– Tensão de interface de 5V
– Clock de 16MHz
Arduino MEGA
Arduino DUE

O Arduino Due
(ATSAM3X8E, 32 bits, M3)
– 96K bytes de RAM
– 512k bytes de flash
– 4 UART / 4 SPI / 2 I2C
– 54 pinos de Entrada/Saída digital
– 4 Input Capture / 4 CCP / 12 PWM
– Conversor Analógico/Digital de 10 bits com 16 canais de entrada
– 2 canais de Conversor Digital analógico de 12 bits
– USB OTG
– Clock de 84MHz
– Tensão de interface de 3,3V
Arduino DUE
Arduino DUE
O ambiente Arduino

O ambiente possui um
compilador e um
programador embutidos
além de um monitor serial
para comunicação com o
arduino
O ambiente Arduino

O ambiente possui um Framework que engloba variáveis
e funções predefinidas para algumas operações do
hardware

Dialeto baseado na Linguagem C++

O acesso a periféricos externos pode ser feito utilizando
bibliotecas elaboradas para realizar esta tarefa, ou pode-
se escrever procedimentos manualmente

Muitas bibliotecas disponíveis na internet para diversos
periféricos externos
O ambiente Arduino

Tipos de dados
– byte – inteiro de 8 bits sem sinal (0 a 255) em todas as
arquiteturas
– char – inteiro de 8 bits com sinal (-128 a 127),
– int – inteiro de 16 bits com sinal (-32768 a 32767) no UNO e
MEGA. Inteiro de 32 bits com sinal (-2147483648 a
2147483647) no DUE
– short – inteiro de 16 bits com sinal (-32768 a 32767), em todas
as arquiteturas
– long – inteiro de 32 bits com sinal (-2147483648 a
2147483647) em todas as arquiteturas
O ambiente Arduino

Tipos de dados
– float – ponto flutuante de 32 bits (+- 1.2E-38 a +-3.4E38, 6
casas decimais) em todas as arquiteturas
– double – ponto flutuante de 32 bits (+- 1.2E-38 a +-3.4E38, 6
casas decimais) no UNO e no MEGA (igual ao float). Ponto
flutuante de 64 bits (+- 2.3E-308 a ± 1.7E308, 15 casas decimais)
– bool – tipo de dados booleano, ocupa um byte, mas só pode ter
dois valores (true ou false) em todas as arquiteturas
– String() - cria variáveis da classe String
● Vetores (array) podem ser criados a partir de qualquer dos tipos
acima
Programação com Arduino

O Framework oferece algumas funções que facilitam a
implementação de sistemas de controle embarcados no
Arduino
– setup(), loop()
– millis(), delay(), delayMicroseconds(),
micros()
– abs(), max(), min(), pow(), sqrt(), ...
– sin(), cos(), tan()
– random(), randomSeed()
– E outras
Programação com Arduino

O ciclo infinito pode ser interrompido por uma função de
atendimento a uma interrupção externa definida pelo
usuário e retomado posteriormente
– As interrupções precisam ser configuradas na função
setup()
– As interrupções podem ser associadas a pinos externos
de acordo com a placa:

UNO: 2 e 3

MEGA: 2, 3, 18, 19, 20 e 21

DUE: todos os pinos digitais
Programação com Arduino

setup()
Exemplo:


– Responsável pela inicialização
de dispositivos, variáveis, void setup(){
bibliotecas, etc. pinMode(13,OUTPUT);
– É executada somente no }
momento da inicialização do
dispositivo void loop(){
● loop() digitalWrite(13,HIGH);
– Função repetida infinitas vezes delay(500);
enquanto o dispositivo estiver digitalWrite(13, LOW);
ligado
delay(500);
– Executa a lógica de controle do
sistema }
Programação com Arduino

delay(NUM)
Exemplo:


– Paralisa a execução do programa unsigned long antes = 0;
por NUM milissegundos unsigned long agora;
● delayMicroseconds(NUM) int saida=lOW;
void setup(){
– Similar a delay(), mas com pinMode(13,OUTPUT);
parâmetro em microssegundos }
void loop(){
● NUM=millis()
agora = millis();
– Retorna o valor do tempo de if (agora-antes>=500){
execução do programa, em antes=agora;
milissegundos if (saida==LOW){
saida = HIGH;
● NUM=micros()
}else{
– Similar a millis(), mas com saida = LOW;

retorno em microssegundos }
digitalWrite(13,saida);
}
}
Programação com Arduino
● NUM = abs(valor) ● Y = sin(x), Y = cos(x), Y
– Determina o valor absoluto do valor = tan(x)
passado como parâmetro – Retorna o seno, cosseno ou
● NUM = max(a,b) tangente de um ângulo em
– Retorna o maior entre dois valores radianos
● NUM = min(a,b) ● Y = random(max), Y =
– Retorna o menor entre dois números random(min,max)
● NUM = pow(base, expoente) – Retorna um número pseudo-
– Retorna o valor de uma base elevada aleatório entre os limites
a uma potência especificados
● NUM = sqrt(valor) ● randomSeed(X)
– Retorna o valor da raiz quadrada de – Inicializa a sequencia de
um valor números pseudo-aleatórios

Você também pode gostar