Professional Documents
Culture Documents
SERRA
2011
O que queres que os homens faam por ti, faa igualmente por eles (Jesus Cristo).
Para essa grande mulher que respeito, admiro e amo, minha me Rosa Cuadros. Para minha esposa Anina e minhas filhas Luana e Laila, porque elas so a inspirao da minha vida.
Sumrio
Lista de Figuras ................................................................................................... 5 Lista de Tabelas ................................................................................................... 6 Captulo 1: Conceitos bsicos do arduino .................................................... 7
1.1 Estrutura bsica de um programa arduino .................................................................. 7 1.2 Exemplo 1: Pisca-Pisca com a funo delay ................................................................. 8 1.3 Simulao de um programa arduino no Proteus ......................................................... 9 1.4 Declarao de variveis ............................................................................................ 11 1.5 Operadores .............................................................................................................. 12 1.5.1 Operadores aritmticos............................................................................................ 12 1.5.2 Operadores de comparao ..................................................................................... 13 1.5.3 Operadores lgicos ................................................................................................... 13 1.6 Exemplo 2: Controle do nvel com boias ................................................................... 14
Lista de Figuras
Figura 1 - Configurao da placa de desenvolvimento .............................................................. 8 Figura 2 Partes do ambiente de programao do arduino ....................................................... 9 Figura 3 Circuito de simulao no Proteus ............................................................................ 10 Figura 4 Edio do uC ATMEL no Proteus .......................................................................... 11 Figura 5 Exemplo 2: Controle de Nvel com bias ............................................................... 14 Figura 6 Circuito eletrnico no Proteus Exemplo 2 ........................................................... 15 Figura 7 Circuito no Proteus Uso bsico do display de 7 segmentos ................................. 16 Figura 8 Circuito no Proteus Contador no display de 7 segmentos ................................... 18
Lista de Tabelas
Captulo 1:
O Arduino uma plataforma de hardware livre, usa um microcontrolador ATMEL AVR. O objetivo desta plataforma ser uma ferramenta de fcil uso e assim acessar a uma maior quantidade de usurios. O projeto iniciou-se na cidade de Ivrea, Itlia, em 2005, com o intuito de interagir em projetos escolares de forma a ter um oramento menor que outros sistemas de prototipagem disponveis naquela poca (WikiPedia, 2011). As placas de desenvolvimento so compostas por um controlador ATMEL AVR, entradas e sadas digitais e analgicas, interfaces de comunicao seriais e/ou USB, alm de possuir extenses como: modens GPRS, controladores de motores, interfaces de comunicao (Ethernet, XBee), para LCDs, tocadores MP3 ente outros. As extenses mencionadas so chamadas comumente de Shields. O Integrated Development Environment (IDE) ou Ambiente Integrado de Desenvolvimento do arduino uma aplicao escrita em Java. O IDE tem uma biblioteca chamada Wiring que permite programar em C/C++. Nesta seo estudaremos a estrutura bsica de um programa arduino e a declarao de vrios tipos de variveis.
http://www.arduino.cc/en/Main/Software, logo de descompactar e instalar abra o aplicativo. Salvar o programa como Pisca_Pisca e configurar o programa com a placa de desenvolvimento usada, neste caso o Arduino uno
Figura 1 - Configurao da placa de desenvolvimento Os comentrios feitos anteriormente podem ser consolidados atravs do seguinte exemplo:
void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(100); // digitalWrite(13, LOW); delay(100); //
// liga o led espera 100 mseg // desliga o led espera 100 mseg
Sketch/(Verify/Compile) ou pressionar as teclas Ctrl+R. Na Figura 2 observa-se a mensagem Done ompiling na barra de status o que indica que o programa no tem erros.
10
Figura 3 Parte do Circuito da placa de desenvolvimento Arduino Uno Para simular o exemplo anterior necessrio conhecer todos os componentes a serem usados, a placa Arduino Uno usa o microcontrolador ATMEL 328 com um clock de 16 MHz, sendo que o pino 13 da placa de desenvolvimento corresponde ao pino 19 do microcontrolador usado. Para realizar a simulao montado o circuito da Figura 3.
11 Como resultado da compilao ser gerado o arquivo Pisca_Pisca.cpp.hex, o caminho deste arquivo deve de ser especificado na edio do uC usado no proteus, como se mostra na Figura 4.
12
32 32 32
Para os programadores tambm interessante a declarao de constantes, para estes casos o comando #define pode ser bastante usado, sendo sua sintaxe #define NomeDaConstante valor Exemplo:
#define PinoDaLampada1 5 // O compilador substituir cada meno de PinoDaLampada1 pelo valor de 5.
Outra opo para declarar constantes o comando const que no permite a duplicidade do uso do nome da constante no programa. Quando o programador use o nome da constante novamente para outra varivel o compilador ir indicar um erro na programao efeito que no acontece com o comando #define. Exemplo:
const float PI=3.14;
Existem constantes predefinidos no IDE do arduino como as lgicas FALSE (0) e TRUE (1). As constantes HIGH e LOW para definir os estados dos pinos do uC. No podemos deixar de citar as constantes INPUT e OUTPUT usados no inicio do programa para definir a direo dos pinos (entrada ou sada) atravs da funo pinMode; no exemplo 1 podese observar a aplicao destas constantes e da funo pinMode. Exemplo:
If (d == FALSE){ digitalWrite(13,HIGH);//sada 13 em 1 (5V) }
1.5 Operadores
1.5.1 Operadores aritmticos Os operadores aritmticos usados no arduino so a soma, resta, multiplicao e diviso. As operaes so realizadas considerando os tipos de dados usados, por exemplo, se X=A/B sendo que A (10) e B(4) foram definidos como int o resultado seria 2, mas se
13 fossem declarados como float ou double X seria 2.5. Entretanto se as variveis usadas so de diferentes tipos, para o clculo ser usado o tipo de dado que armazene maior informao. Exemplo:
A=b+c; G=f-10; K=m*1.5; L=A/2;
Existem tambm operadores de incremento ou decremento unitrio alm de operadores de atribuio. Exemplo:
x++; // equivalente a x=x+1 x--; //equivalente a x=x-1 x+=y; //equivalente a x=x+y x*=y; // equivalente a x=x*y x/=y/ //equivalente a x=x/y
1.5.2
Operadores de comparao Os operadores de comparao so usados para testar se uma condio verdadeira
ou falsa. Exemplo:
X==Y X!=Y X < Y X <= Y X > Y X >= Y // // // // // // X X X X X X igual que Y diferente a Y menor que Y menor ou igual que Y maior que Y maior ou igual que Y
1.5.3
forma a retornar o valor de verdadeiro (1) ou falso (0). Existem 3 operadores lgicos AND(&&), OR(||) e NOT (!), usados comumente com a declarao if. Exemplos:
if (A>B && C==5) if (A!=B || B<3) if (!B)
14
Resolver o seguinte problema: Fazer o Projeto, para o controle da Bomba B1, sendo que o nvel sempre estar entre S1 e S2 (sensores bia). Quando o nvel atinge o sensor S2 o seu contato fecha, e quando o nvel fica diminui muito S1 abre.
S2
B1
S1
15
16
digitalWrite(3, digitalWrite(4, digitalWrite(5, digitalWrite(8, HIGH); HIGH); HIGH); HIGH);
} if (S3){ //Apaga o Display for (int i=2; i<=8; i++) { digitalWrite(i, LOW); } // liga a bomba B1 }
17
for (int i=0; i<=3; i++) { pinMode(ledDisplay[i], OUTPUT); } pinMode(11, INPUT); pinMode(12, INPUT); pinMode(13, INPUT);
void loop() { S1=digitalRead(11); S2=digitalRead(12); S3=digitalRead(13); if (S1){ for (int i=0; i<=9; i++) {//Incrementando i0=0; for (int i1=3; i1>=0; i1--) { digitalWrite(ledDisplay[i0], numero[i][i1]); i0+=1; } delay(1000); } } if (S2){ for (int i=9; i>=0; i--) {//Decrementando i0=0; for (int i1=3; i1>=0; i1--) { digitalWrite(ledDisplay[i0], numero[i][i1]); i0+=1; } delay(1000); } } }
18
Figura 9 Circuito no Proteus Contador no display de 7 segmentos Referncias Andrew Fitzgibbon, Mauricio Pilu, and Robert B. Fisher (1999). Direct Least Square Fitting of Ellipses. IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 21, No. 5, May 1999. Ang,K.H., Chong,G. and LiY. (2005). PID Control System Analysis, Design, and Technology, IEEE Transactions On Control Systems Technology, vol. 13, no. 4. Armstrong-Hlouvry, B.; Dupont P., and C. C. De Wit (1994). A survey of models, analysis tools and compensation methods for the control of machines with friction. Automatica., 30(7):1083.1138. http://pt.wikipedia.org/wiki/Arduino#Hist.C3.B3ria. Acesso em 15/10/20111
20
21
22
23
24
Serial.print(ValorEnAnC0, DEC); Serial.println(); if (Serial.available()) { char enByte = Serial.read(); lcd.setCursor(0, 1); lcd.print("Ent.Port.Ser:"); lcd.print(enByte); lcd.print(" "); }
25
ValorEnAnC0 = analogRead(EnAnC0); // Inicia o cursor na coluna 0 e linha 1 (Desde que se tem linha 0 e 1) lcd.setCursor(11, 0); // Imprime o valor da entrada analgica lcd.print(ValorEnAnC0); lcd.setCursor(0, 1); lcd.print("PWM (%):"); PorPWM=ValorEnAnC0/4*100/255; lcd.print(PorPWM); lcd.print(" "); analogWrite(pinoPWM, ValorEnAnC0/4);