Buscar

Flisol Arduino

Prévia do material em texto

Curso introdutório de microcontroladores -
Plataforma Arduino
Prof. Fábio Rodrigues de la Rocha
FLISOL - UTFPR-PR - Abril/2011
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 1
/ 37
Introdução
Mas afinal, o que é Arduino ?
Arduino é um nome “fantasia” que representa uma família de placas
eletrônicas. Nestas placas temos um microcontrolador, botões, Leds, algum
tipo de conexão para ligar no computador.
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 2
/ 37
Introdução
Microcontrolador
Microcontrolador é semelhante a um processador tal como nos computadores
desktop/notebooks, mas existem diferenças:
É muito mais simples e mais barato;
8 bits;
2 KiB de memória RAM;
32 KiB de memória de programa;
Custo aproximadamente de 4 dólares.
Possui internamente timers/contadores/protocolos de transmissão de
dados, conversores AD, memória RAM/FLASH/EEPROM, etc.
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 3
/ 37
Introdução: Kits
Figura: Arduino 2009 Figura: Arduino Mega Figura: Arduino Pro
Figura: Arduino Pro
Mini Figura: LilyPad Figura: Freeduino
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 4
/ 37
Introdução: Kits
Figura: Arduino Severino Figura: Arduino UNO Figura: Mega 2560
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 5
/ 37
Introdução Kits x microcontroladores
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 6
/ 37
Introdução: Características dos
microcontroladores
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 7
/ 37
Introdução: Pinos
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 8
/ 37
Introdução
Mas por que o Arduino é popular ?
Kits de microcontroladores existem já a décadas, mas o Arduino possui
algumas características que o diferencial dos demais.
Baixo custo;
Possui ambiente de desenvolvimento Assembly/C disponibilizado como
SL;
Possui hardware livre*;
Não necessita de hardware especial para programação*;
Algumas versões, usa componentes DIP, que facilita a utilização em
desenvolvimento de protótipos;
Possui site com manuais, bibliotecas e exemplos de códigos;
Pode operar sem a presença de um computador;
Possibilidade de expandir a sua capacidade através da utilização de shields
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 9
/ 37
Hardware:Como um microcontrolador é programado ?
AVR Compiler
0011001110000110010010
1110010101010101010101
1110000000000011010101
0101010101010101010101
0101010101010101010110
0101010101010101010101
0101000011110000111000
0101010101010101010101
0101101000111100001111
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 10
/ 37
Hardware:Como um microcontrolador é programado ?
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 11
/ 37
Hardware:Como um microcontrolador é programado ?
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 12
/ 37
Hardware: Bootloader
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 13
/ 37
Hardware: Bootloader
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 14
/ 37
Hardware: Shield para o Arduino
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 15
/ 37
Hardware: Shield para o Arduino
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 16
/ 37
Software
O arduino possui um ambiente de desenvolvimento disponível para
download em www.arduino.cc;
É SL e multiplataforma;
É um editor de texto, compilador e gravador do microcontrolador, tudo
numa única ferramenta.
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 17
/ 37
Software
Como programar no Arduino ?
Na maioria dos casos os programadores que desenvolvem software para o
Arduino não utilizam as linguagens C ou C++, mas a linguagem denominada
Wiring que pode ser considerada a linguagem do Arduino. A linguagem
Wiring é similar as linguagens C e C++, contudo possui algumas diferenças.
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 18
/ 37
Software
Um programa escrito na linguagem do arduino é denominado sketch e deve
ser escrito no ambiente de desenvolvimento Arduino (Figura 10). O ambiente
Arduino é escrito na linguagem Java e assim está disponível para diversos
sistemas. Quando um sketch é compilado, o ambiente Arduino varre o código
fonte Wiring fazendo algumas substituições e transforma o código Wiring em
linguagem C/C++ que é compilado efetivamente pelo compilador da GNU.
Figura: Ambiente de desenvolvimento Arduino
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 19
/ 37
Software
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 20
/ 37
Software
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 21
/ 37
�
1 int ledPin = 13; // LED esta conectado ao pino 13 do arduino
2 // Na placa eletronica , deve -se ligar um LED
entre o
3 // pino 13 e o GND
4
5
6 // Setup() eh executada uma vez apenas
7 void setup() {
8 // Inicializa o pino digital como sendo pino de saida
9 pinMode(ledPin , OUTPUT);
10 }
11
12
13 // a funcao loop() executa ciclicamente
14 void loop()
15 {
16 digitalWrite(ledPin , HIGH); // Liga o LED colocando nivel alto
no pino
17 // do microcontrolador
18 delay (1000); // Espera 1 segundo
19 digitalWrite(ledPin , LOW); // Desliga o LED colocando nivel
baixo no
20 // pino do microcontrolador
21 delay (1000); // Espera 1 segundo
22 }� �
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 22
/ 37
Software: Pisca LED
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 23
/ 37
Software
Pinos de Entrada/Saída Digital
Antes de utilizar um pino como entrada/saída devemos configurá-lo ou como
entrada ou como saída. A configuração é feita utilizando-se a função
pinMode(numero_pino,modo)
pinMode(3,OUTPUT); ou pinMode(3,INPUT);
e depois podemos utilizar a função x=digitalRead(numero_pino) e
digitalWrite(numero_pino, LOW);
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 24
/ 37
Software: Liga LED usando botão
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 25
/ 37
�
1 const int buttonPin = 2; // botao
2 const int ledPin = 13; // LED
3
4
5 int buttonState = 0; // Estado do botao
6
7 void setup() {
8 pinMode(ledPin , OUTPUT);
9 pinMode(buttonPin , INPUT);
10 }
11
12 void loop(){
13 // Le o estado do botao
14 buttonState = digitalRead(buttonPin);
15
16 // Botao pressionado ?
17 if (buttonState == HIGH) {
18 // Liga o LED
19 digitalWrite(ledPin , HIGH);
20 }
21 else {
22 // Desliga o LED
23 digitalWrite(ledPin , LOW);
24 }
25 }� �
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 26
/ 37
Software
Transmissão de dados seriais
O Arduino possui uma UART que pode transmitir dados seriais. No software
deve-se configurar a taxa de transmissão e enviar bytes ou cadeias de
caracteres e ler bytes pela porta serial.�
1
2 void setup(){
3 Serial.begin (9600);
4
5 Serial.println("Olá mundo");
6 Serial.write (128);
7
8 }
9 void loop (){
10
11 if (Serial.available () > 0) {
12 // Lê um byte que tenha sido transmitido
13 // do PC
14 incomingByte = Serial.read();
15 }� �
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 27
/ 37
Software
Pinos de Entrada analógica
Alguns pinos do Arduino estão conectados a um conversor AD. O Arduino
pode possuir diversos pinos que são pinos analógicos, mas existe apenas um
conversor. Quando desejamos ler um pino analógico do Arduino, usa-se a
função analogRead(pino);�
1 int analogValue;
2 unsigned char valor_a ,valor_b;
3
4 analogValue = analogRead (0);
5 valor_a = (byte)analogValue;
6 valor_b = (byte)(analogValue >>8);� �
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 28
/ 37
Software: Lê um potenciometro
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 29
/ 37
�
1 int sensorPin = A0; // Pino onde o potenciometro esta ligado
2 int sensorValue = 0; // valor lido do sensor
3
4 void setup() {
5 // Os pinos analogicos ja sao configurados
6 // como pinos de entrada por padrao
7 Serial.begin (9600);
8 }
9
10 void loop() {
11 // le o valor do potenciometro
12 sensorValue = analogRead(sensorPin);
13 Serial.print("Valor do potenciometro :");
14 Serial.println(sensorValue ,DEC);15 }� �
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 30
/ 37
Software
Pinos de saída analógica
O Arduino possui apenas um conversor AD, ou seja, consegue converter um
sinal de tensão em uma representação digital. Mesmo assim, o Arduino possui
uma função�
1 int ledPin = 9; // LED connected to digital pin 9
2 int analogPin = 3; // potentiometer connected to analog pin 3
3 int val = 0; // variable to store the read value
4
5 void setup()
6 {
7 pinMode(ledPin , OUTPUT); // sets the pin as output
8 }
9
10 void loop()
11 {
12 val = analogRead(analogPin); // read the input pin
13 analogWrite(ledPin , val / 4); // analogRead values go from 0 to
1023, analogWrite values from 0 to 255
14 }� �
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 31
/ 37
Software
Memória EEPROM
O Arduino possui uma memória EEPROM de 512Bytes que pode ser
lida/gravada pelo programador.�
1 #include <EEPROM.h>
2 int addr = 0;
3
4 void setup()
5 {
6 }
7
8 void loop()
9 {
10 int val = analogRead (0) / 4;
11 EEPROM.write(addr , val);
12 addr = addr + 1;
13 if (addr == 512) addr = 0;
14 delay (100);
15 }� �
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 32
/ 37
Software
Função Map
Conversão de valores.�
1 void setup() {}
2
3 void loop()
4 {
5 int val = analogRead (0);
6 val = map(val , 0, 1023, 0, 255);
7 analogWrite (9, val);
8 }� �
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 33
/ 37
Software
Interrupções
O Arduino pode gerar interrupções�
1 #include <TimerOne.h>
2
3 volatile int valor=0,contador=0,n=0;
4 unsigned char valor_a , valor_b;
5 long freq;
6
7 void setup()
8 {
9 interrupts ();
10 freq = 16 ; // frequencia em hertz
11 Timer1.initialize (1000000/ freq);
12 Timer1.attachInterrupt(Estouro_de_Tempo);
13 Timer1.start();
14 }
15
16 void Estouro_de_Tempo ()
17 {
18 //Faz alguma coisa
19 }� �
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 34
/ 37
Software
Atraso de tempo
O Arduino possui algumas funções para causar um atraso de tempo, como
delay() e delayMicroseconds()�
1 void loop()
2 {
3 digitalWrite(ledPin , HIGH); // sets the LED on
4 delay (1000); // waits for a second
5 digitalWrite(ledPin , LOW); // sets the LED off
6 delay (1000); // waits for a second
7
8
9 digitalWrite(outPin , HIGH); // sets the pin on
10 delayMicroseconds (50); // pauses for 50 microseconds
11 digitalWrite(outPin , LOW); // sets the pin off
12 delayMicroseconds (50); // pauses for 50 microseconds
13
14 }� �
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 35
/ 37
Software
Contando o tempo
O Arduino possui funções para medir a passagem do tempo desde que o
programa comecou a executar.
time = micros(); Retorna a quantidade de microsegundos que se passaram
desde que o Arduino foi iniciado. Estoura aprox. após 70min.
time = millis(); Retorna a quantidade de milisegundos que se passaram
desde que o Arduino foi iniciado. Estoura depois de aprox. 50 dias.�
1 unsigned long time;
2
3 void setup(){
4 Serial.begin (9600);
5 }
6 void loop(){
7 Serial.print("Time: ");
8 time = micros ();
9 // prints time since program started
10 Serial.println(time);
11 // wait a second so as not to send massive amounts of data
12 delay (1000);
13 }� �(UTFPR) FLISOL - UTFPR-PR - Abril/2011 36/ 37
Software
No site http://arduino.cc pode-se encontrar bibliotecas para controlar
diversos dispositivos como displays de LCD, acelerômetros, sensores de
temperatura.
(UTFPR)
FLISOL - UTFPR-PR - Abril/2011 37
/ 37

Continue navegando