Programação em-arduino-módulo-básico

Download Programação em-arduino-módulo-básico

Post on 08-Jul-2015

240 views

Category:

Education

0 download

Embed Size (px)

DESCRIPTION

Oficina de Robtica. Mdulo bsico de programao em Arduino.

TRANSCRIPT

<ul><li><p>Financiamento: Execuo: </p><p>Laboratrio de Automao e Robtica Mvel </p><p>Programao em Arduino Mdulo Bsico </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Material produzido para o projeto Oficina de Robtica por: Anderson Luiz Fernandes Perez Renan Rocha Dars </p><p> Contatos: Universidade Federal de Santa Catarina -</p><p>Laboratrio de Automao e Robtica Mvel anderson.perez (at) ufsc.br </p><p> renanrdaros (at) hotmail.com </p><p> http://oficinaderobotica.ufsc.br </p><p> UFSC - Oficina de Robtica - @2013 2 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Introduo Microcontroladores Arduino UNO Ambiente de desenvolvimento Funes setup() e loop() Monitor Serial Portas digitais e analgicas Programando em Arduino Expandindo as funcionalidades do </p><p>Arduino </p><p>UFSC - Oficina de Robtica - @2013 3 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> O Arduino uma plataforma utilizada para prototipao de circuitos eletrnicos. </p><p> O projeto do Arduino teve incio em 2005 na cidade de Ivrea, Itlia. </p><p> O Arduino composto por uma placa com microcontrolador Atmel AVR e um ambiente de programao baseado em Wiring e C++. </p><p> Tanto o hardware como o ambiente de programao do Arduino so livres, ou seja, qualquer pessoa pode modific-los e reproduzi-los. </p><p> O Arduino tambm conhecido de plataforma de computao fsica. </p><p>UFSC - Oficina de Robtica - @2013 4 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Tipos de Arduino Existem vrios tipos de Arduino com especificidades de </p><p>hardware. O site oficial do Arduino lista os seguintes tipos: Arduino UNO Arduino Leonardo Arduino Due Arduino Esplora Arduino Mega Arduino Mega ADK Arduino Ethernet Arduino Mini Arduino LilyPad Arduino Micro Arduino Nano Arduino ProMini Arduino Pro Arduino Fio </p><p>UFSC - Oficina de Robtica - @2013 5 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Referncias na WEB: O site oficial do Arduino http://arduino.cc </p><p> Um documentrio sobre o Arduino pode ser assistido em: http://arduinothedocumentary.org/ </p><p>UFSC - Oficina de Robtica - @2013 6 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Um microcontrolador um CI que incorpora vrias funcionalidades. </p><p> Alguns vezes os microcontroladores so chamados de computador de um nico chip. </p><p> So utilizados em diversas aplicaes de sistemas embarcados, tais como: carros, eletrodomsticos, avies, automao residencial, etc. </p><p>UFSC - Oficina de Robtica - @2013 7 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Processamento de dados </p><p>UFSC - Oficina de Robtica - @2013 8 </p><p>Entrada Processamento Sada </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Vista da placa do Arduino UNO Rev 3 (frente e verso) </p><p>UFSC - Oficina de Robtica - @2013 9 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Caractersticas Microcontrolador: ATmega328 Tenso de operao: 5V Tenso recomendada (entrada): 7-12V Limite da tenso de entrada: 6-20V Pinos digitais: 14 (seis pinos com sada PWM) Entrada analgica: 6 pinos Corrente contnua por pino de entrada e sada: 40 </p><p>mA Corrente para o pino de 3.3 V: 50 mA Quantidade de memria FLASH: 32 KB (ATmega328) </p><p>onde 0.5 KB usado para o bootloader Quantidade de memria SRAM: 2 KB (ATmega328) Quantidade de memria EEPROM: 1 KB </p><p>(ATmega328) Velocidade de clock: 16 MHz </p><p>UFSC - Oficina de Robtica - @2013 10 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Alimentao O Arduino UNO pode ser alimentado pela </p><p>porta USB ou por uma fonte externa DC. </p><p> A recomendao que a fonte externa seja de 7 V a 12 V e pode ser ligada diretamente no conector de fonte ou nos pinos Vin e Gnd. </p><p>UFSC - Oficina de Robtica - @2013 11 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> O ambiente de desenvolvimento do Arduino (IDE) gratuito e pode ser baixado no seguinte endereo: arduino.cc. </p><p> As principais funcionalidades do IDE do Arduino so: Escrever o cdigo do programa </p><p> Salvar o cdigo do programa </p><p> Compilar um programa </p><p> Transportar o cdigo compilado para a placa do Arduino </p><p>UFSC - Oficina de Robtica - @2013 12 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Interface principal do ambiente de desenvolvimento </p><p>UFSC - Oficina de Robtica - @2013 13 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> As duas principais partes (funes) de um programa desenvolvido para o Arduino so: setup(): onde devem ser definidas algumas </p><p>configuraes iniciais do programa. Executa uma nica vez. </p><p> loop(): funo principal do programa. Fica executando indefinidamente. </p><p> Todo programa para o Arduino deve ter estas duas funes. </p><p>UFSC - Oficina de Robtica - @2013 14 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Exemplo 1: formato das funes setup() e loop() </p><p>UFSC - Oficina de Robtica - @2013 15 </p><p>void setup() { } void loop() { } </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Exemplo 2: exemplo funes setup() e loop() </p><p>UFSC - Oficina de Robtica - @2013 16 </p><p>void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); } </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> O monitor serial utilizado para comunicao entre o Arduino e o computador (PC). </p><p> O monitor serial pode ser aberto no menu tools opo serial monitor, ou pressionando as teclas CTRL + SHIFT + M. </p><p> As principais funes do monitor serial so: begin(), read(), write(), print(), println() e available(). </p><p>UFSC - Oficina de Robtica - @2013 17 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Exemplo: imprimindo uma mensagem de boas vindas no monitor serial </p><p>UFSC - Oficina de Robtica - @2013 18 </p><p>void setup() { Serial.begin(9600); // Definio da velocide de transmisso } void loop() { Serial.println("Ola, seu nome, seja bem vindo ao maravilhoso mundo do Arduino"); } </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> O Arduino possui tanto portas digitais como portas analgicas. </p><p> As portas servem para comunicao entre o Arduino e dispositivos externos, por exemplo: ler um boto, acender um led ou uma lmpada. </p><p> Conforme j mencionado, o Arduino UNO, possui 14 portas digitais e 6 portas analgicas (que tambm podem ser utilizadas como portas digitais). </p><p>UFSC - Oficina de Robtica - @2013 19 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Portas Digitais As portas digitais trabalham com valores </p><p>bem definidos, ou seja, no caso do Arduino esses valores so 0V e 5V. </p><p> 0V indica a ausncia de um sinal e 5V indica a presena de um sinal. </p><p> Para escrever em uma porta digital basta utilizar a funo digitalWrite(pin, estado). </p><p> Para ler um valor em uma porta digital basta utilizar a funo digitalRead(pin). </p><p>UFSC - Oficina de Robtica - @2013 20 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Portas Analgicas As portas analgicas so utilizadas para entrada </p><p>de dados. Os valores lidos em uma porta analgica variam </p><p>de 0V a 5V. Para ler uma valor em uma porta analgica basta </p><p>utilizar a funo analogRead(pin). Os conversores analgicos-digitais (ADC) do </p><p>Arduino so de 10 bits. Os conversores ADC (do Ingls Analog Digital </p><p>Converter) permitem uma preciso de 0.005V ou 5mV. </p><p> Os valores lidos em uma porta analgica variam de 0 a 1023 (10 bits), onde 0 representa 0V e 1023 representa 5V. </p><p>UFSC - Oficina de Robtica - @2013 21 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Para definir uma porta como entrada ou sada necessrio explicitar essa situao no programa. </p><p> A funo pinMode(pin, estado) utilizada para definir se a porta ser de entrada ou sada de dados. </p><p> Exemplo: Define que a porta 13 ser de sada pinMode(13, OUTPUT) </p><p> Define que a porta 7 ser de entrada pinMode(7, INPUT) </p><p>UFSC - Oficina de Robtica - @2013 22 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Algoritmo Sequncia de passos que visa atingir um </p><p>objetivo bem definido. </p><p> Exemplo: Receita caseira </p><p>UFSC - Oficina de Robtica - @2013 23 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Constantes e Variveis Um dado constante quando no sofre </p><p>nenhuma variao no decorrer do tempo. </p><p> Do incio ao fim do programa o valor permanece inalterado. </p><p> Exemplos: </p><p> 10 </p><p> Bata antes de entrar! </p><p> -0,58 </p><p>UFSC - Oficina de Robtica - @2013 24 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Constantes e Variveis A criao de constantes no Arduino pode ser </p><p>feita de duas maneiras: </p><p> Usando a palavra reservada const </p><p> Exemplo: </p><p> const int x = 100; </p><p> Usando a palavra reservada define </p><p> Exemplo: </p><p> #define X 100 </p><p>UFSC - Oficina de Robtica - @2013 25 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Constantes e Variveis No Arduino existem algumas constantes </p><p>previamente definidas e so consideradas palavras reservadas. </p><p> As constantes definidas so: true indica valor lgico verdadeiro false indica valor lgico falso HIGH indica que uma porta est ativada, ou seja, </p><p>est em 5V. LOW indica que uma porta est desativada, ou seja, </p><p>est em 0V. INPUT indica que uma porta ser de entrada de </p><p>dados. OUTPUT indica que uma porta ser de sada de </p><p>dados. </p><p>UFSC - Oficina de Robtica - @2013 26 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Constantes e Variveis Variveis so lugares (posies) na memria </p><p>principal que servem para armazenar dados. </p><p> As variveis so acessadas atravs de um identificador nico. </p><p> O contedo de uma varivel pode variar ao longo do tempo durante a execuo de um programa. </p><p> Uma varivel s pode armazenar um valor a cada instante. </p><p> Um identificador para uma varivel formado por um ou mais caracteres, obedecendo a seguinte regra: o primeiro caractere deve, obrigatoriamente, ser uma letra. </p><p> UFSC - Oficina de Robtica - @2013 27 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Constantes e Variveis </p><p> ATENO!!! </p><p> Um identificador de uma varivel ou constante no pode ser formado por caracteres especiais ou palavras reservadas da linguagem. </p><p>UFSC - Oficina de Robtica - @2013 28 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Tipos de Variveis no Arduino </p><p>UFSC - Oficina de Robtica - @2013 29 </p><p>Tipo Definio </p><p>void Indica tipo indefinido. Usado geralmente para informar que uma funo no retorna nenhum valor. </p><p>boolean Os valores possveis so true (1) e false (0). Ocupa um byte de memria. </p><p>char Ocupa um byte de memria. Pode ser uma letra ou um nmero. A faixa de valores vlidos de -128 a 127. </p><p>unsigned char O mesmo que o char, porm a faixa de valores vlidos de 0 a 255. </p><p>byte Ocupa 8 bits de memria. A faixa de valores de 0 a 255. </p><p>int Armazena nmeros inteiros e ocupa 16 bits de memria ( 2bytes). A faixa de valores de -32.768 a 32.767. </p><p>unsigned int O mesmo que o int, porm a faixa de valores vlidos de 0 a 65.535. </p><p>word O mesmo que um unsigned int. </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Tipos de Variveis no Arduino </p><p>UFSC - Oficina de Robtica - @2013 30 </p><p>Tipo Definio </p><p>long Armazena nmeros de at 32 bits (4 bytes). A faixa de valores de -2.147.483.648 at 2.147.483.647. </p><p>unsigned long O mesmo que o long, porm a faixa de valores de 0 at 4.294.967.295. </p><p>short Armazena nmero de at 16 bits (2 bytes). A faixa de valores de -32.768 at 32.767. </p><p>float Armazena valores de ponto flutuante (com vrgula) e ocupa 32 bits (4 bytes) de memria. A faixa de valores de -3.4028235E+38 at 3.4028235E+38 </p><p>double O mesmo que o float. </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Declarao de Variveis e Constantes Exemplo: declarao de duas constantes e </p><p>uma varivel </p><p>UFSC - Oficina de Robtica - @2013 31 </p><p>#define BOTAO 10 // constante const int pin_botao = 13; // constante void setup() { } void loop() { int valor_x; // varivel } </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Atribuio de valores a variveis e constantes A atribuio de valores a variveis e </p><p>constantes feito com o uso do operador de atribuio =. </p><p> Exemplos: int valor = 100; const float pi = 3.14; </p><p> Ateno!!! O operador de atribuio no vale para o </p><p>comando #define. </p><p>UFSC - Oficina de Robtica - @2013 32 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Atribuio de valores a variveis e constantes Exemplo: lendo dados do monitor serial </p><p>UFSC - Oficina de Robtica - @2013 33 </p><p>int valor = 0; void setup() { Serial.begin(9600); // Definio da velocidade de transmisso } void loop() { Serial.println("Digite um numero "); valor = Serial.read(); // leitura de dados do monitor serial Serial.print("O numero digitado foi "); Serial.write(valor); Serial.println(); delay(2000); // Aguarda por 2 segundos } </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Operadores Em uma linguagem de programao existem </p><p>vrios operadores que permitem operaes do tipo: </p><p> Aritmtica </p><p> Relacional </p><p> Lgica </p><p> Composta </p><p>UFSC - Oficina de Robtica - @2013 34 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Operadores aritmticos </p><p>UFSC - Oficina de Robtica - @2013 35 </p><p>Smbolo Funo </p><p>+ Adio </p><p>- Subtrao </p><p>* Multiplicao </p><p>/ Diviso </p><p>% Mdulo (resto da diviso inteira) </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Operadores relacionais </p><p>UFSC - Oficina de Robtica - @2013 36 </p><p>Smbolo Funo </p><p>&gt; Maior </p><p>&lt; Menor </p><p>&gt;= Maior ou igual </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Operadores lgicos </p><p>UFSC - Oficina de Robtica - @2013 37 </p><p>Smbolo Funo </p><p>&amp;&amp; E (and) </p><p>|| OU (or) </p><p>! No (not) </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Operadores compostos </p><p>UFSC - Oficina de Robtica - @2013 38 </p><p>Smbolo Funo </p><p>++ Incremento </p><p>-- Decremento </p><p>+= Adio com atribuio </p><p>-= Subtrao com atribuio </p><p>*= Multiplicao com atribuio </p><p>/= Diviso com atribuio </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Comentrios Muitas vezes importante comentar alguma parte </p><p>do cdigo do programa. Existem duas maneiras de adicionar comentrios a </p><p>um programa em Arduino. A primeira usando //, como no exemplo abaixo: // Este um comentrio de linha </p><p> A segunda usando /* */, como no exemplo abaixo: /* Este um comentrio de bloco. Permite acrescentar </p><p>comentrios com mais de uma linha */ </p><p> Nota: Quando o programa compilado os comentrios so </p><p>automaticamente suprimidos do arquivo executvel, aquele que ser gravado na placa do Arduino. </p><p>UFSC - Oficina de Robtica - @2013 39 </p></li><li><p>Laboratrio de Automao e Robtica Mvel </p><p>Financiamento: </p><p>Execuo: </p><p> Comandos de Seleo Em vrios momentos em um programa </p><p>precisamos verificar uma determinada condio afim de selecionar uma ao ou aes que sero executadas. </p><p> Um comando de seleo tambm conhecido por desvio condicional, ou seja, dada um condio, um parte do programa executada. </p><p> Os comandos de seleo podem ser do tipo: Seleo simples Seleo composta Seleo de mltipla escolha </p><p>UFSC - Oficina de Robtica - @2013 40 </p></li><li><p>Laboratrio de Au...</p></li></ul>