Академический Документы
Профессиональный Документы
Культура Документы
Arduino MS
Sobre este Minicurso
Viabilizado pela Organizao do ERI MS;
Apoiado pelo grupo ArduinoMS;
Agradecimentos especiais ao do SENAC e UCDB.
Sobre o Ministrante:
Samuel Cavalcante
Engenheiro de Computao (UNIDERP)- CREA-MS: 12873D
Ps Graduado em Eng. De Sistemas (ESAB)
Analista em Educao profissional no SENAC/MS
Professor UNIDERP e UNAES II
Pai, Esposo, Professor, Empresrio, Consultor, participante
de comunidades, conselheiro entre outros.
Arduino MS
O que veremos
Introduo ao Arduino
Cdigo Pisca LED
Configurando a IDE para transferir o Cdigo
Acionamento de LED com Boto
Pisca Led com Sensor LDR
Arduino MS
Microcontrolador X Microprocessadorr
Qual a principal diferena entre eles?
Arduino MS
Introduo ao Arduino
Plataforma baseada em Atmel da AVR (ATMega168;
ATMega 328);
Oferece um IDE e bibliotecas de programao de alto nvel;
Transferncia de firmware
via USB
MCU com bootloader
Arduino MS
Histrico do Arduino
Projeto criado na Itlia pelo Mssimo Banzi no Interaction
Design Institute Ivrea;
Nasceu para complementar o aprendizado de programao,
computao fsica e grfica;
Nasceu do Processing e Wiring;
Processing um ambiente e linguagem de programao para
criar imagens, animao e interao;
Arduino MS
Simplicidade no circuito:
Arduino MS
Muitas aplicaes prticas
Robs
Roupas eletrnicas
Mquinas de corte e modelagem 3D de baixo custo;
Desenvolvimento de celulares customizados
Instrumentos musicais
Paredes interativas
Instrumentao humana
Arduino MS
Vrios tipos, vrios fabricantes...
Mega
Lilypad
Nano
Uno
Pro
Arduino BT
Freeduino
Severino
Program-ME
Arduino MS
Atmega168 / Atmega328: corao
Arduino MS
Caractersticas tcnicas
6 canais PWM
6 conversores analgico/digital de 10 bits
1 serial programvel (USART)
1 interface SPI (Serial Peripheral Interface)
1 interface serial a 2 fios (I2C)
1 watch dog timer programvel
1 comparador analgico no chip
Interrupo ou wake-up na alterao de estado dos pinos
Arduino MS
Resumo das conexes da placa
Arduino MS
FT232RL
Conversor USB-Serial
Conector USB
Regular 7085:
Recebe at 12 volts e
regula para 5 volts
Alimentao externa:
At 12 volts
Arduino MS
Boto de reset
ICSP
Para gravar bootloader
ou programas/firmware
AtMega328 /168/8
Arduino MS
AREF
Referncia analgica
Padro 5 volts
GND
Portas digitais 0 a 13
0 RX 1 TX = usada durante
transferncia de sketch e
comunicao serial com
placa
2,4,7,8,12,13 = portas
digitais convncionais
Arduino MS
Portas analgicas 4 e 5
So as portas utilizadas
para conexes via I2C /
TWI.
Portas analgicas de 0 a 5
GND
Podem funcionar como digitais de 14 a 19
5 volts
VIN
3.3 volts
Alimentao de entrada sem regulagem
Arduino MS
Shields: arquitetura modular inteligente
Arduino estabeleceu um padro de pinagem que
respeitado por diversas placas shield:
Arduino MS
Por dentro do MCU
Arduino MS
Porta Digital Vs. Analgica
Digital: trabalha com lgica binria, 0 e 1.
No Arduino segue padro TTL onde:
0 a 0,8 volts = 0
2 a 5 volts = 1
Arduino MS
Porta Digital Vs. Analgica
Portas analgicas expressam valores de 0 a 1023 mas
no so utilizadas para transferncia de informaes
precisas
Neste caso o dispositivo recebe um valor analgico de 0v 5v,
que ser convertido em um nmero binrio de 10 bits. Cada
bits somado ao circuito equivale a 0,005v.
Arduino MS
Porta PWM
Uma porta hbrida:
digital porm com
modularizao de
zeros e uns de forma
que consegue
expressar uma idia
de potncia;
Arduino MS
Na prtica
Ligamos componentes em portas digitais (comuns, PWM)
ou analgica
Fazemos leitura e escrita nestas portas afim de obter um
dado ou um determinado comportamento
Processamos os dados no microcontrolador
Arduino MS
Ping Sensor de distncia ultrasonico
Arduino MS
LCD Touch
Arduino MS
SIM Reader
Arduino MS
Lojas de componentes
www.parallax.com
www.sparkfun.com
www.makershed.com
www.liquidware.com
www.ladyada.net
www.adafruit.com
www.rlrobotics.ind.br/ - BRASIL
www.empretecnet.com.br/do/Home - BRASIL
Arduino MS
Programando para Arduino
IDE pode ser baixada de www.arduino.cc
A IDE foi desenvolvida com Java, portanto precisaremos de
um mquina virtual instalada.
Funciona em Windows. Mac OS X e Linux (em alguns
windows e mac pode ser necessrio colocar driver)
Utiliza GCC + GCC Avr para compilao
(voc pode tambm programar diretamente com GCC!)
A transferncia para a placa feita via USB pelo IDE;
(mas tambm pode ser feita com gravadores ICSP!)
Arduino MS
Partes bsicas do programa Arduino
Temos que obrigatoriamente programar dois mtodos:
void setup() {
}
void loop() {
}
Arduino MS
Portas digitais e analgicas
Na prtica ligamos componentes em portas digitais e
analgicas e atravs do cdigo Arduino, manipulamos as
portas:
pinMode(<porta>, <modo>): configura uma porta digital
para ser lida ou para enviarmos dados;
digitalWrite(<porta>, 0 ou 1): envia 0 ou 1 para porta digital
digitalRead(<porta>): retorna um 0 ou 1 lido da porta
analogRead(<porta>): retorna de 0 a 1023 com o valor da
porta analgica
analogWrite(<porta>, <valor>): escreve em uma porta PWM
um valor de 0 a 255
Arduino MS
Protoboard ou Matriz de contato
um dispositivo usado
para construir circuitos sem
a necessidade de solda. Na
parte central de todos os
pinos alinhados sob um
nmero estiver conectado,
enquanto os nas bordas
superior e inferior normalmente marcado com
linhas pretas e vermelhas so conectados na
horizontal.
Arduino MS
Primeiro contato com Arduino
Ligar sua placa no cabo USB e no PC
Realizar a instalao do Driver com a ajuda do facilitador
Verificar o jumper de alimentao configurando para USB
se necessrio
Digitar o cdigo, a ser passado, no Arduino IDE
Selecionar no software a verso do Arduino e a porta serial
de comunicao.
Clicar no boto de transferncia de sketch
Arduino MS
Exemplo pisca led com Arduino
Esta conexo bem simples
somente para efeito de teste
para piscar o led.
O correto ligar um resistor
usando uma protoboard.
Arduino MS
Exemplo pisca led
void setup() {
pinMode(13, OUTPUT); //porta 13 em output
}
void loop() {
digitalWrite(13, HIGH); //HIGH = 1 = TRUE
delay(500);
digitalWrite(13, LOW); //LOW = 0 = FALSE
delay(500);
}
Arduino MS
Configurando a IDE para transferir o Cdigo
Arduino MS
Configurando a IDE para transferir o Cdigo
Arduino MS
Procurando erros no cdigo
Arduino MS
Fazendo o Upload do Cdigo para o Arduino
Arduino MS
Entrada Digital: Fazendo leitura de um boto
Os pinos do Arduino so extremamente sensveis,
permitindo a leitura de rudo eltrico do ambiente. O
prximo teste utilizaremos o pino 7 como leitura de dados
externos, como uma porta digital ser lido HIGH ou LOW
(1 ou 0). Essa leitura realizada pelo comando
digitalRead(port).
Arduino MS
Montando o Circuito
Arduino MS
Cdigo Aciona LED com boto
int val = 0; // varivel para ler o status do pino
void setup() {
pinMode(13, OUTPUT); // declare LED como output
pinMode(7, INPUT); // declare pushbutton como input
}
void loop(){
val = digitalRead(7); // ler a entrada de valor
if (val == HIGH) {// verificar se a entrada alta
digitalWrite(13, LOW); // LED OFF
} else {
digitalWrite(13, HIGH); // LED ON
}
}
Arduino MS
Tempo entre acende e apaga LED usando sensor LDR
Use o mesmo circuito como antes, mudando o boto com o
sensor de luz e trocando a ligao do pino digital 7 para o
pino analgico 2.
A funo permite enviar um valor numrico para o
computador. Variando nmeros digitais no intervalo de 01024 (resoluo de 1 Bit).
Nesta funo usamos a comunicao serial, com isso abra o
monitor serial para ler dados do sensor. Aps o cdigo ser
copiado no Arduino.
Arduino MS
Montando o Circuito
Arduino MS
Cdigo
int val = 0; // varivel para armazenar o valor vindo do sensor
void setup() {
pinMode(13, OUTPUT); // declara o ledPin como uma sada
Serial.begin(9600); // usar a porta serial para comunicao
}
void loop() {
val = analogRead(2); // l o valor do sensor
Serial.println(val); // imprime o valor para a porta serial
digitalWrite(13, HIGH); // ligar o LED
delay(val); // parar o programa por algum tempo
digitalWrite(13, LOW); // desligar o LED
delay(val); // tempo antes do proximo ciclo
}
Arduino MS
Vetor de LEDs
Monte na matriz de contato 5 leds, cada perna maior do
LED (VCC) ser ligada a uma perna do resistor, a outra
perna do resistor ser ligada em cada um dos seguinte
pinos Digital, 12, 11, 10, 9 e 8. A perna menor dos LEDs,
no GND (0v).
A atividade fazer esses LEDs acenderem em sequencia,
acendendo um LED de cada vez, com intervalos de 50
milisegundos por led, aps todos acessos aguardar 1000
milisegundos e comear a apagar os leds, com o mesmo
intervalor de tempo.
Arduino MS
Vetor de LEDs Montando o circuito
Arduino MS
Vetor de LEDs Cdigo
int i;
void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
}
void loop() {
for(i=13;i>=8;i--){
digitalWrite(i, HIGH);
delay(50);
}
delay(1000);
for(i=8;i<=13;i++){
digitalWrite(i, LOW);
delay(50);
}
delay(1000);
}
Arduino MS
Vetor de LEDs com potencimetro
Arduino MS
Vetor de LEDs com potencimetro
int i, port, potenc;
float tensao=0;
void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
Serial.begin(9600);
}
void loop() {
potenc=analogRead(2);
port=13;
for(i=1;i<=5;i++){
if(potenc>((i*2-1)*100)){
digitalWrite(port, HIGH);
}else{
digitalWrite(port, LOW);
}
port--;
}
Serial.print("Valor decimal = ");
Serial.print(potenc);
tensao=potenc*0.004883;
Serial.print(" - Tensao = ");
Serial.print(tensao);
Serial.println(" V");
delay(500);
}
Arduino MS
Motor de Passo com controle de velocidade
Arduino MS
P1 - Cdigo - Motor de Passo com controle de velocidade
// Motor de passo Controlado por boto
/* - Declarando cariaveis globais - */
int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int botaoMotorD = 2; //motor direita
int botaoMotorE = 3; //motor esquerda
int botaoVelocA = 4;
int botaoVelocD = 5;
int delayTime = 200;
int movimentoMotorA[] = {1,0,0,0};
int movimentoMotor[] = {0,0,0,0};
/* Configuracao dos pinos*/
void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
pinMode(botaoMotorD, INPUT);
pinMode(botaoMotorE, INPUT);
pinMode(botaoVelocA, INPUT);
pinMode(botaoVelocD, INPUT);
Serial.begin(9600);
botaoEsquerda();
}
void loop() {
int i, motorD, motorE, velocA, velocD;
motorD = digitalRead(botaoMotorD); //le o valor do
pino2
motorE = digitalRead(botaoMotorE); //le o valor do
pino3
velocA = digitalRead(botaoVelocA); //le o valor do pino4
velocD = digitalRead(botaoVelocD); //le o valor do pino5
if (motorD==HIGH){
botaoDireita();
Serial.println(" - rotaciona - Direita");
}
if (motorE==HIGH){
botaoEsquerda();
Serial.println(" - rotaciona - Esquerda");
//Teste para rotaciona por vetor automtico
}
Arduino MS
P2 - Cdigo - Motor de Passo com controle de velocidade
if (velocA==HIGH){
if(delayTime<500)
delayTime=delayTime+50;
Serial.print("O time esta em: ");
Serial.println(delayTime);
}
if (velocD==HIGH){
if(delayTime>50)
delayTime=delayTime-50;
Serial.print("O time esta em: ");
Serial.println(delayTime);
}
delay(delayTime);
}
//-- Rotaciona motor para a Direita
void botaoDireita(){
int k;
for (k=0;k<4;k++){
if(k<3)
movimentoMotor[k+1] = movimentoMotorA[k];
else
movimentoMotor[0] = movimentoMotorA[k];
}
for (k=0;k<4;k++){
movimentoMotorA[k] = movimentoMotor[k];
digitalWrite(k+8, movimentoMotor[k]);
Serial.print(movimentoMotor[k]);
}
}
//-- Rotaciona motor para a esquerda
void botaoEsquerda(){
int k;
for (k=0;k<4;k++){
if(k>0)
movimentoMotor[k-1] = movimentoMotorA[k];
else
movimentoMotor[3] = movimentoMotorA[k];
}
//Transcreve o vetor para o Vertor de Apoio. imprime o
resultado.
for (k=0;k<4;k++){
movimentoMotorA[k] = movimentoMotor[k];
digitalWrite(k+8, movimentoMotor[k]);
Serial.print(movimentoMotor[k]);
}
}
Arduino MS
Resumindo...
Arduino um projeto simples, popular e acessvel
Eletrnica e programao embarcada alto nvel
Na prtica ligamos componentes nas portas analgicas e
digitais e escrevemos programas que usam as portas
Existem diversas bibliotecas que encapsulam a lgica de
comunicao digital ou analgica: servo, motor de passo,
Android, display LCD
Ter portas digitais analgicas e pmw um grande valor do
microcontrolador utilizado
A transfrencia via USB e a ferramenta / IDE para
programao funcionam em mltiplas plataformas
Open-source Hardware e Open-source software
Arduino MS
isso ai pessoal, agora s queimar
alguns componentes.
Contatos:
samuel@ms.senac.br
samuelmbc@gmail.com
Twitter: @samuelmbc
Sites:
www.samuelcavalcante.com (blog Pessoal)
www.ms.senac.br (onde trabalho)
www.e-camisa.com (scio)