Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduo ao Arduino
Bruno Silvrio Costa
09/06/2013
Preparando o
computador
Primeiramente, necessrio obter a verso mais
recente do software, disponvel em
www.arduino.cc;
Instalar o software, seguindo as instrues
apresentadas em tela;
Plugar a placa Arduino no computador;
Caso o driver da placa no seja localizado
automaticamente pelo sistema, indicar ao plug
and play o caminho C:\Program Files
(x86)\Arduino\drivers (Para windows);
Prof. Bruno Silvrio Costa
09/06/2013
Testando a
comunicao
Abra o software Arduino (atalho disponvel no
desktop);
V ao Menu File->Examples->1.Basics e escolha o
projeto Blink;
V at o menu File->Upload para iniciar o
processo de compilao e transferncia para a
placa;
Obs.: Pode ocorrer um erro caso a placa no
esteja instalada corretamente ou a porta serial
virtual escolhida seja invlida.
Prof. Bruno Silvrio Costa
Pinos de I/O
0-1: Porta Serial
2-7: Digital/PWM
Boto RESET
Conector USB
Programao ICP
(Chips externos
em circuito)
uC atmega328p
Conector de
alimentao
externa (0-30V)
Pinos de Alimentao
Reset / IOREF
Pinos de I/O
10-15: Digital/Analgico
09/06/2013
Microcontroladores
AVR (1)
Chamados de Computadores de nico Chip, os
microcontroladores (C) so pequenos
computadores com seus respectivos
componentes necessrios embutidos no mesmo
chip;
Por exemplo, esto includos no chip
microcontrolador:
Microcontroladores
AVR (2)
Os C AVR seguem a
arquitetura de Harvard de
processadores, ou seja,
possuem memria de
dados distinta da
memria de programa;
Suas portas de I/O podem
ser programadas como
entrada ou sada
indistintamente;
09/06/2013
Microcontroladores
AVR (3)
Para utilizao de uma porta qualquer,
necessrio indicar qual a porta ser
trabalhada, qual a direo dos dados (entrada
ou sada), realizar um input ou output;
Exemplo:
Porta utilizada: Port B
Direo dos dados: DDRB = sada
Output: output(PortB, valor)
Prof. Bruno Silvrio Costa
Conhecendo o
Framework (1)
A programao do Arduino realizada em
linguagem C;
Existem trs sesses bsicas disponibilizadas pelo
framework no cdigo para a programao:
rea de incluses / declaraes: espao no cdigo
destinado a declaraes de variveis e include de
bibliotecas;
Funo de setup: ajuste das configuraes bsicas
antes da execuo propriamente dita:
Funo de loop: conjunto de cdigos que so
executados ininterruptamente.
Prof. Bruno Silvrio Costa
09/06/2013
Conhecendo o
Framework (2)
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
rea de incluso/declarao
Funo de Setup
Funo de Loop
Conhecendo o
Framework (3)
Compreendendo o cdigo
09/06/2013
Comandos de repetio
For
While
Do while
Prof. Bruno Silvrio Costa
09/06/2013
09/06/2013
09/06/2013
A = B + C;
A = B C;
A = B * C;
A = B / C;
A = B % C;
10
09/06/2013
A = B + C;
A = B C;
A = B * C;
A = B / C;
A = B % C;
Exerccio 1
Modifique o cdigo do Projeto Blink para que
o led pisque de rpido a lento continuamente;
Obs.: adote o delay inicial de 10 ms;
11
09/06/2013
Resposta Exerccio 1
int led = 13;
int count =0;
int delay2 = 10;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
for(int j=1;j<=15;j++)
for(int i=0;i<5;i++)
{
digitalWrite(led, HIGH);
delay(delay2*j);
digitalWrite(led, LOW);
delay(delay2*j);
}
Prof. Bruno Silvrio Costa
}
PWM (1)
PWM (Pulse With Modulation) uma tcnica
que permite a gerao de resultados
analgicos partindo de sinais digitais. A mdia
da potncia do sinal digital determina o sinal
analgico mdio;
Muito utilizado na alterao de brilho de
lmpadas e leds, bem como no controle de
motores CC;
Prof. Bruno Silvrio Costa
12
09/06/2013
PWM (2)
Utilizar uma sada digital para valores
analgicos, possibilita a converso do sinal
analgico em PWM;
Por exemplo, pode-se construir um cdigo
para o led L de maneira que ele fique com um
brilho pulsante. Para isso, basta gerar uma
onda senoidal lenta;
Esse cdigo visto a seguir:
Prof. Bruno Silvrio Costa
PWM (3)
int ledPin = 11;//led a pulsar
float sinVal;//valor do seno
int ledVal;//valor a ser escrito no pino 11
void setup(){
pinMode(ledPin, OUTPUT);///pino 11 como saida
}
void loop(){
for(int x=0; x<180; x++){//varia de 0 a 180
sinVal=(sin(x*(3.14159/180)));//calcula valor do seno
ledVal=int(sinVal*255);//valor entre 0 e 255
analogWrite(ledPin, ledVal);//escreve na porta pwm
delay(20);//aguarda 20 ms
}
}
Prof. Bruno Silvrio Costa
13
09/06/2013
14
09/06/2013
15
09/06/2013
Comunicao Serial
Determinao da taxa de
transmisso/recepo
Serial.begin(9600);//valor em bps
Envio de dados
Seria.print(String);//envia uma string sem o
caracter de return
Serial.println(String); //envia uma string com o
caracter de return
Prof. Bruno Silvrio Costa
16
09/06/2013
Teclado Matricial(1)
Todo teclado funciona como uma grande
matriz, onde as teclas correspondem a
interseces entre linhas e colunas;
Teclado Matricial(2)
De forma anloga ao display, tambm existe
um driver a ser utilizado com o teclado
disponvel no Arduino;
Como o driver genrico, tambm precisa ser
configurado para trabalhar corretamente;
So utilizados 7 pinos, dos quais, trs
correspondem s colunas e 4 s linhas;
17
09/06/2013
Teclado Matricial(3)
#include <Keypad.h>
const byte ROWS = 4; //quatro linhas
const byte COLS = 3; //trs colunas
char keys[ROWS][COLS] = { //Define a aparncia do teclado
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'#','0','*'}
};
byte rowPins[ROWS] = {A0, A1, A2, A3}; //conectar aos pinos das linhas do
teclado
byte colPins[COLS] = {8, 7, 6}; //conectar aos pinos das colunas do teclado
Teclado Matricial(4)
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS
);//criando instncia do teclado
void setup(){
Serial.begin(9600);//Ajustando taxa de comunicao serial
}
void loop(){
char key = keypad.getKey();//lendo uma tecla
if (key != NO_KEY){//caso alguma tecla tenha sido apertada
Serial.println(key);//envie qual foi a tecla para o computador
}
}
18
09/06/2013
SHIELDs
Placas de expanso/interface disponibilizadas
para Arduino;
Sensores (1)
Os sensores, de maneira geral, so componentes
eletrnicos sensveis a eventos da natureza;
Existem sensores para uma grande gama de aplicaes.
Destacam-se:
Sensores de luminosidade (LDRs, Fototransistores);
Sensores de som (capsulas de eletreto);
Sensores de obstculos e presena (IR, reflexivos, ultrasnicos,
reed NA);
Sensores de temperatura (RDT);
Sensores de umidade;
Sensores de posio (bssola eletrnica, GPS);
Sensores de movimento (IR, acelermetro, rel de mercrio);
19
09/06/2013
Sensores (2)
Todos os sensores apontados podem ser
utilizados com o Arduino;
Alguns depende de um conhecimento mais
aprofundado de eletrnica;
Existe uma grande quantidade de sensores
disponvel em SHIELDs Arduino;
Sensores (3)
Sensor IR reflexivo
Identifica obstculos que reflitam a radiao IR;
Muito utilizado para dar ao Arduino uma capacidade
limitada de viso, j que possvel perceber o objeto,
sem toc-lo (pode-se utilizar ultrasom tambm);
20
09/06/2013
Sensores (4)
O sensor oferece uma sada digital, possibilitando
seu tratamento facilitado no Arduino, conforme
cdigo a seguir:
int sensor=2;
digitalWrite(sensor, HIGH); //pull-up
para sensor
pinMode(sensor, INPUT);//pino 2 como
entrada
valor_sensor =
digitalRead(sensor);//leitura do
valor do pino
Prof. Bruno Silvrio Costa
21
09/06/2013
22
09/06/2013
Comum
(-)
Alimentao (+)
Led IR
Sada FT
23
09/06/2013
24
09/06/2013
25
09/06/2013
26
09/06/2013
27
09/06/2013
28
09/06/2013
29