arduino ms - samuel cavalcanteblog.samuelcavalcante.com/.../introducao-ao-arduino... · arduino ms...

53
Arduino MS

Upload: ngodat

Post on 26-Feb-2018

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Page 2: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Sobre este Minicurso

• Viabilizado pela Organização do ERI MS;

• Apoiado pelo grupo ArduinoMS;

• Agradecimentos especiais ao do SENAC e UCDB.

Sobre o Ministrante:

• Samuel Cavalcante

• Engenheiro de Computação (UNIDERP)- CREA-MS: 12873D

• Pós Graduado em Eng. De Sistemas (ESAB)

• Analista em Educação profissional no SENAC/MS

• Professor UNIDERP e UNAES II

• Pai, Esposo, Professor, Empresário, Consultor, participante de comunidades, conselheiro entre outros.

Page 3: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

O que veremos

• Introdução ao Arduino

• Código Pisca LED

• Configurando a IDE para transferir o Código

• Acionamento de LED com Botão

• Pisca Led com Sensor LDR

Obs.: Ao decorrer da oficina serão tratados assuntos sobre eletrônica e eletricidade básica.

Page 4: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Microcontrolador X Microprocessadorr

• Qual a principal diferença entre eles?

Page 5: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Introdução ao Arduino

• Plataforma baseada em Atmel da AVR (ATMega168; ATMega 328);

• Oferece um IDE e bibliotecas de programação de alto nível;

• Open-source hardware e software

• Ampla comunidade

• Programado em C/C++

• Transferência de firmware

via USB

• MCU com bootloader

Page 6: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Histórico do Arduino

• Projeto criado na Itália pelo Mássimo Banzi no Interaction Design Institute Ivrea;

• Nasceu para complementar o aprendizado de programação, computação física e gráfica;

• Nasceu do Processing e Wiring;

– Processing é um ambiente e linguagem de programação para criar imagens, animação e interação;

Page 7: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Simplicidade no circuito:

Page 8: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Muitas aplicações práticas

• Robôs

• Roupas eletrônicas

• Máquinas de corte e modelagem 3D de baixo custo;

• Desenvolvimento de celulares customizados

• Instrumentos musicais

• Paredes interativas

• Instrumentação humana

Page 9: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Vários tipos, vários fabricantes...

• Mega

• Lilypad

• Nano

• Uno

• Pro

• Arduino BT

• Freeduino

• Severino

• Program-ME

Page 10: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Atmega168 / Atmega328: coração

• Características do ATmega 168:

• RISC –Reduced Instruction Set Computer

• 20 MIPS (20 Milhões de instruções por segundo)

• 16Kb Flash / 512 b EEPROM / 1Kb RAM Estática

• 10.000 ciclos na Flash e 100.000 na EEPROM

• 2 contadores / temporizadores de 8bits

• 1 contador / temporizador de 16bits

• 1 temporizador de tempo real com clock a parte

• 14 portas digitais

• 6 portas analógicas

Page 11: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Características técnicas

• 6 canais PWM

• 6 conversores analógico/digital de 10 bits

• 1 serial programável (USART)

• 1 interface SPI (Serial Peripheral Interface)

• 1 interface serial a 2 fios (I2C)

• 1 watch dog timer programável

• 1 comparador analógico no chip

• Interrupção ou wake-up na alteração de estado dos pinos

Page 12: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Resumo das conexões da placa

Page 13: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Conector USB

Alimentação externa: Até 12 volts

Regular 7085: Recebe até 12 volts e regula para 5 volts

FT232RL Conversor USB-Serial

Page 14: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

ICSP Para gravar bootloader ou programas/firmware

AtMega328 /168/8

Botão de reset

Page 15: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS Portas digitais 0 a 13 0 RX 1 TX = usada durante transferência de sketch e comunicação serial com placa 2,4,7,8,12,13 = portas digitais convêncionais 3,5,6,9,10,11 = portas PWM

GND AREF Referência analógica Padrão 5 volts

Page 16: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Portas analógicas de 0 a 5 Podem funcionar como digitais de 14 a 19

VIN Alimentação de entrada sem regulagem

GND 5 volts

3.3 volts

Portas analógicas 4 e 5 São as portas utilizadas para conexões via I2C / TWI.

Page 17: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Shields: arquitetura modular inteligente

• Arduino estabeleceu um padrão de pinagem que é respeitado por diversas placas shield:

Page 18: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Por dentro do MCU

Page 19: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Porta Digital Vs. Analógica

• Digital: trabalha com lógica binária, 0 e 1.

– No Arduino segue padrão TTL onde:

• 0 a 0,8 volts = 0

• 2 a 5 volts = 1

• Analógica: valor lido é análogo a tensão.

– Referência de analogia é 5 volts

• 0 volts = 0

• 2.5 volts= 512

• 5 volts = 1023

– Conversor A/D de 10 bits: 0 a 1023

• 00000000012 = 110 = 0,005v

• 00000000102 = 210 = 0,010v

• 00000000112 = 210 = 0,015v

• 10000000002 = 51210 = 2,50v

• ....

Page 20: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Porta Digital Vs. Analógica

• Portas analógicas expressam valores de 0 a 1023 mas não são utilizadas para transferência de informações precisas

– Neste caso o dispositivo recebe um valor analógico de 0v à 5v, que será convertido em um número binário de 10 bits. Cada bits somado ao circuito equivale a 0,005v.

• Portas digitais permitem que dados sejam transferidos em sequencia através de uma lógica ou protocolo binário

– Portas digitais não conseguem comandar potência

Page 21: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Porta PWM

• Uma porta híbrida: digital porém com modularização de zeros e uns de forma que consegue expressar uma idéia de potência;

Page 22: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Na prática

• Ligamos componentes em portas digitais (comuns, PWM) ou analógica

• Fazemos leitura e escrita nestas portas afim de obter um dado ou um determinado comportamento

• Processamos os dados no microcontrolador

Alguns exemplos de componentes...

Page 23: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Ping – Sensor de distância ultrasonico

Page 24: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS LCD Touch

Shield LCD Touch screen

Page 25: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

SIM Reader

Page 26: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

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

Page 27: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Programando para Arduino

• IDE pode ser baixada de www.arduino.cc

• A IDE foi desenvolvida com Java, portanto precisaremos de um máquina virtual instalada.

• Funciona em Windows. Mac OS X e Linux (em alguns windows e mac pode ser necessário colocar driver)

• Utiliza GCC + GCC Avr para compilação

(você pode também programar diretamente com GCC!)

• A transferência para a placa é feita via USB pelo IDE;

(mas também pode ser feita com gravadores ICSP!)

Page 28: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Partes básicas do programa Arduino

• Temos que obrigatoriamente programar dois métodos:

void setup() {

}

void loop() {

}

• O setup é executado uma só vez assim que a placa for ligada e o loop terá o código de execução infinita

Page 29: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Portas digitais e analógicas

• Na prática ligamos componentes em portas digitais e analógicas e através do código 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 analógica

– analogWrite(<porta>, <valor>): escreve em uma porta PWM um valor de 0 a 255

Page 30: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

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 número estiver conectado, enquanto os nas bordas superior e inferior - normalmente marcado com linhas pretas e vermelhas - são conectados na horizontal.

Page 31: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Primeiro contato com Arduino

• Ligar sua placa no cabo USB e no PC

• Realizar a instalação do Driver com a ajuda do facilitador

• Verificar o jumper de alimentação configurando para USB se necessário

• Digitar o código, a ser passado, no Arduino IDE

• Selecionar no software a versão do Arduino e a porta serial de comunicação.

• Clicar no botão de transferência de sketch

Page 32: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Exemplo “pisca led” com Arduino

Esta conexão é bem simples somente para efeito de teste para piscar o led. O correto é ligar um resistor usando uma protoboard.

Page 33: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

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);

}

Page 34: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Configurando a IDE para transferir o Código

Page 35: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Configurando a IDE para transferir o Código

Page 36: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Procurando erros no código

Page 37: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Fazendo o Upload do Código para o Arduino

Page 38: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Entrada Digital: Fazendo leitura de um botão

• Os pinos do Arduino são extremamente sensíveis, permitindo a leitura de ruído elétrico do ambiente. O próximo 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).

• Conecte três fios à placa Arduino. O primeiro de uma perna do botão através de um resistor de pull-up (aqui 10K Ω) para o fornecimento de 5 volts. A segunda vai da perna correspondente do botão ao GND. O terceiro se conecta a um pino digital I/O (pino 7) que lê o estado do botão.

Page 39: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS Montando o Circuito

Page 40: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Código Aciona LED com botão

int val = 0; // variável 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 } }

Page 41: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Tempo entre acende e apaga LED usando sensor LDR

• Use o mesmo circuito como antes, mudando o botão com o sensor de luz e trocando a ligação do pino digital 7 para o pino analógico 2.

• A função permite enviar um valor numérico para o computador. Variando números digitais no intervalo de 0-1024 (resolução de 1 Bit).

• Nesta função usamos a comunicação serial, com isso abra o monitor serial para ler dados do sensor. – Após o código ser copiado no Arduino.

Page 42: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Montando o Circuito

Page 43: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS Código

int val = 0; // variável para armazenar o valor vindo do sensor void setup() { pinMode(13, OUTPUT); // declara o ledPin como uma saída Serial.begin(9600); // usar a porta serial para comunicação } 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 }

Page 44: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

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, após todos acessos aguardar 1000 milisegundos e começar a apagar os leds, com o mesmo intervalor de tempo.

Page 45: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Vetor de LEDs – Montando o circuito

Page 46: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Vetor de LEDs Código

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);

}

Page 47: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Vetor de LEDs com potenciômetro

Page 48: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Vetor de LEDs com potenciômetro

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);

}

Page 49: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Motor de Passo com controle de velocidade

Page 50: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS P1 - Código - Motor de Passo com controle de velocidade

// Motor de passo Controlado por botão

/* - 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 automático

}

Page 51: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS P2 - Código - 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]);

}

}

Page 52: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

Resumindo...

• Arduino é um projeto simples, popular e acessível

• Eletrônica e programação embarcada alto nível

• Na prática ligamos componentes nas portas analógicas e digitais e escrevemos programas que usam as portas

• Existem diversas bibliotecas que encapsulam a lógica de comunicação digital ou analógica: servo, motor de passo, Android, display LCD

• Ter portas digitais analógicas e pmw é um grande valor do microcontrolador utilizado

• A transfêrencia via USB e a ferramenta / IDE para programação funcionam em múltiplas plataformas

• Open-source Hardware e Open-source software

Page 53: Arduino MS - Samuel Cavalcanteblog.samuelcavalcante.com/.../Introducao-ao-Arduino... · Arduino MS Sobre este Minicurso • Viabilizado pela Organização do ERI MS; • Apoiado pelo

Arduino MS

É isso ai pessoal, agora é só queimar alguns componentes.

Contatos:

[email protected]

[email protected]

• Twitter: @samuelmbc

• Sites:

– www.samuelcavalcante.com (blog Pessoal)

– www.ms.senac.br (onde trabalho)

– www.e-camisa.com (sócio)