Escolar Documentos
Profissional Documentos
Cultura Documentos
(UTFPR)
Introduo
Mas anal, o que Arduino ?
Arduino um nome fantasia que representa uma famlia de placas eletrnicas. Nestas placas temos um microcontrolador, botes, Leds, algum tipo de conexo para ligar no computador.
(UTFPR)
Introduo
Microcontrolador
Microcontrolador semelhante a um processador tal como nos computadores desktop/notebooks, mas existem diferenas: muito mais simples e mais barato;
8 bits; 2 KiB de memria RAM; 32 KiB de memria de programa; Custo aproximadamente de 4 dlares.
Possui internamente timers/contadores/protocolos de transmisso de dados, conversores AD, memria RAM/FLASH/EEPROM, etc.
(UTFPR)
Introduo: Kits
Figura: LilyPad
Figura: Freeduino
Introduo: Kits
(UTFPR)
(UTFPR)
(UTFPR)
Introduo: Pinos
(UTFPR)
Introduo
Mas por que o Arduino popular ?
Kits de microcontroladores existem j a dcadas, mas o Arduino possui algumas caractersticas que o diferencial dos demais. Baixo custo; Possui ambiente de desenvolvimento Assembly/C disponibilizado como SL; Possui hardware livre*; No necessita de hardware especial para programao*; Algumas verses, usa componentes DIP, que facilita a utilizao em desenvolvimento de prottipos; Possui site com manuais, bibliotecas e exemplos de cdigos; Pode operar sem a presena de um computador; Possibilidade de expandir a sua capacidade atravs da utilizao de shields
(UTFPR)
AVR Compiler
(UTFPR)
(UTFPR)
(UTFPR)
Hardware: Bootloader
(UTFPR)
Hardware: Bootloader
(UTFPR)
(UTFPR)
(UTFPR)
Software
O arduino possui um ambiente de desenvolvimento disponvel para download em www.arduino.cc; SL e multiplataforma; um editor de texto, compilador e gravador do microcontrolador, tudo numa nica ferramenta.
(UTFPR)
Software
(UTFPR)
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 disponvel para diversos sistemas. Quando um sketch compilado, o ambiente Arduino varre o cdigo fonte Wiring fazendo algumas substituies e transforma o cdigo Wiring em linguagem C/C++ que compilado efetivamente pelo compilador da GNU.
(UTFPR)
Software
(UTFPR)
Software
(UTFPR)
1 int ledPin = 2 13; // LED esta conectado ao pino 13 do arduino // Na placa eletronica , deve - se ligar um LED entre o // pino 13 e o GND
3 4 5 6 7 8 9 10 11 12 13 14 15 16
// Setup () eh executada uma vez apenas void setup () { // Inicializa o pino digital como sendo pino de saida pinMode ( ledPin , OUTPUT ) ; }
17 18 19
20 21 22
// a funcao loop () executa ciclicamente void loop () { digitalWrite ( ledPin , HIGH ) ; // Liga o LED colocando nivel alto no pino // do m i c r o c o n t r o l ad o r delay (1000) ; // Espera 1 segundo digitalWrite ( ledPin , LOW ) ; // Desliga o LED colocando nivel baixo no // pino do m i c r o c o n t r o l a d o r delay (1000) ; // Espera 1 segundo }
(UTFPR)
(UTFPR)
Software
(UTFPR)
(UTFPR)
const int buttonPin = 2; const int ledPin = 13; // botao // LED
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
int buttonState = 0; void setup () { pinMode ( ledPin , OUTPUT ) ; pinMode ( buttonPin , INPUT ) ; }
// Estado do botao
void loop () { // Le o estado do botao buttonState = digitalRead ( buttonPin ) ; // Botao pressionado ? if ( buttonState == HIGH ) { // Liga o LED digitalWrite ( ledPin , HIGH ) ; } else { // Desliga o LED digitalWrite ( ledPin , LOW ) ; }
}
(UTFPR)
Software
Transmisso de dados seriais
O Arduino possui uma UART que pode transmitir dados seriais. No software deve-se congurar a taxa de transmisso 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)
Software
(UTFPR)
Software: L um potenciometro
(UTFPR)
int sensorPin = A0 ; // Pino onde o potenciometro esta ligado int sensorValue = 0; // valor lido do sensor void setup () { // Os pinos analogicos ja sao configurados // como pinos de entrada por padrao Serial . begin (9600) ; } void loop () { // le o valor do potenciometro sensorValue = analogRead ( sensorPin ) ; Serial . print ( " Valor do p o t e n c i o m e t r o : " ) ; Serial . println ( sensorValue , DEC ) ; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
(UTFPR)
Software
Pinos de sada analgica
O Arduino possui apenas um conversor AD, ou seja, consegue converter um sinal de tenso em uma representao digital. Mesmo assim, o Arduino possui uma funo
int ledPin = 9; int analogPin = 3; int val = 0; // LED connected to digital pin 9 // potentiometer connected to analog pin 3 // variable to store the read value
1 2 3 4 5 6 7 8 9 10 11 12 13
void loop () { val = analogRead ( analogPin ) ; // read the input pin analogWrite ( ledPin , val / 4) ; // analogRead values go from 0 to 1023 , analogWrite values from 0 to 255 14 }
(UTFPR)
Software
Memria EEPROM
O Arduino possui uma memria EEPROM de 512Bytes que pode ser lida/gravada pelo programador.
# include < EEPROM .h > int addr = 0; void setup () { } void loop () { int val = analogRead (0) / 4; EEPROM . write ( addr , val ) ; addr = addr + 1; if ( addr == 512) addr = 0; delay (100) ; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
(UTFPR)
Software
Funo Map
Converso 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)
Software
Interrupes
O Arduino pode gerar interrupes
# include < TimerOne .h > v o l a t i l e int valor =0 , contador =0 , n =0; u n s i g n e d char valor_a , valor_b ; long freq ; void setup () { interrupts () ; freq = 16 ; // frequencia em hertz Timer1 . initialize (1000000/ freq ) ; Timer1 . at tachInte rr up t ( E s t ou r o _ d e _ T e m p o ) ; Timer1 . start () ; } void E s t o u r o _d e_ Te mp o () { // Faz alguma coisa }
(UTFPR)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Software
Atraso de tempo
O Arduino possui algumas funes para causar um atraso de tempo, como delay() e delayMicroseconds()
// // // // sets the LED on waits for a second sets the LED off waits for a second
1 void loop () 2 { 3 digitalWrite ( ledPin , HIGH ) ; 4 delay (1000) ; 5 digitalWrite ( ledPin , LOW ) ; 6 delay (1000) ; 7 8 9 digitalWrite ( outPin , HIGH ) ; 10 d e l a y M i c r os e c on ds (50) ; 11 digitalWrite ( outPin , LOW ) ; 12 d e l a y M i c r os e c on ds (50) ; 13 14 }
// // // //
sets the pin on pauses for 50 microseconds sets the pin off pauses for 50 microseconds
(UTFPR)
Software
Contando o tempo
O Arduino possui funes 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. aps 70min. time = millis(); Retorna a quantidade de milisegundos que se passaram desde que o Arduino foi iniciado. Estoura depois de aprox. 50 dias.
u n s i g n e d long time ; void setup () { Serial . begin (9600) ; } void loop () { Serial . print ( " Time : " ) ; time = micros () ; // prints time since program started Serial . println ( time ) ; // wait a second so as not to send massive amounts of data delay (1000) ; } FLISOL - UTFPR-PR - Abril/2011
(UTFPR)
1 2 3 4 5 6 7 8 9 10 11 12 13
/ 37
Software
No site http://arduino.cc pode-se encontrar bibliotecas para controlar diversos dispositivos como displays de LCD, acelermetros, sensores de temperatura.
(UTFPR)