Astrogildo Junqueira
Docente Física/IFSP
Lucas D´Amásio
David Larronda
Licenciandos/IFSP
Apoio Financeiro:
Prodocência / Capes
OFICINA
Wikipedia: plataforma de prototipagem eletrônica de hardware livre, projetada
com um microcontrolador Atmel AVR de placa única, com suporte de
entrada/saída embutido, uma linguagem de programação padrão
essencialmente em C / C++.
Entrada USB
Pinos E/S Digitais
Pinos E/S Analógicas
CONHECENDO A PLATAFORMA ARDUINO
Microcontrolador Atmel AVR LED
Conexão ao computador por cabo
USB
Indica se o arduíno está ligado a uma fonte; conectado ao pino 13.
“cérebro” do arduíno. Marca Atmega, com 10bits e 32KB de memória.
14 portas de entrada/saída digitais (sinal elétrico de “0” ou de “1”)
IDE: Ambiente de Desenvolvimento Integrado
(Integrated Development Environment)
O IDE pode ser baixado gratuitamente de: www.arduino.cc
IDE: PROGRAMANDO O ARDUÍNO
Nesta área serão escritos os comandos para o arduíno
PROTOBOARD: MONTANDO PROJETOS ARDUINO
Placa de plástico em que os orifícios são conectados internamente por trilhas metálicas. Os oríficios servem para a inserção de terminais de componentes e fios de conexão.
sentidos das trilhas no protoboard
Fios de conexão (ou “jumpers”) entre o arduíno e o protoboard
Sensor para temperatura:
SENSORES E SHIELDS PARA ARDUÍNO
Sensor de distância por US:
Acelerômetro de três eixos
Bússola digital três eixos
Shield Bluetooth:
Shield Ethernet:
EXPERIMENTOS COM ARDUÍNO NO ENSINO DE FÍSICA
Irradiação Térmica: Sensor de temperatura (LM35)
Duas latinhas, branca e preta, iluminadas por
uma lâmpada, com um sensor em cada uma. Variação da temperatura com o tempo
Fonte: A placa Arduino: opção de baixo custo para experiências de Física por Souza et al., RBEF, vol. 33(1), 2011.
Oscilação de uma régua: Sensor de luz (LDR)
Pêndulo vertical: sensor de ultrasom
EXPERIMENTOS COM ARDUÍNO NO ENSINO DE FÍSICA
Movimento Oscilatório Vertical com Arduíno
40 50 60 70 80 100 150 200 250 300 350 400 Tempo (ua) P o s iç ã o ( u a )
ARDUINO: NOSSO PRIMEIRO PROJETO
Acendendo e Apagando LED
Os primeiros componentes
LED (Light Emitting Diode): Diodo Emissorde Luz: diodo semicondutor que ao ser energizado emite luz visível. Possui polaridade, portanto, a perna maior deve ser ligada à tensão de alimentação e a perna menor à terra (GND da placa).
Resistor: dispositivo que dificulta a passagem da corrente elétrica e transforma a energia elétrica em energia térmica. Não possui polaridade.
CIRCUITO COM UM RESISTOR
E UM LED EM SÉRIE
MATERIAIS:
• 1 LED
• 1 RESISTOR
• PROTOBOARD
• FIOS CONECTORES
• PLACA ARDUINO
ARDUINO: NOSSO PRIMEIRO PROJETO
Acendendo e Apagando LED
Após realizada as conexões dos componentes, são escritos os códigos de comandos no
IDE e salvos na memória do arduíno. Os comandos que usaremos são indicados abaixo.
void setup() {
pinMode(13, OUTPUT);
// define a porta digital 13
// para sinal de saida para o LED
}
void loop() {
digitalWrite(13, HIGH);
// acende o LED
delay(1000);
// aguarda por um segundo
digitalWrite(13, LOW);
// apaga o LED
delay(1000);
// aguarda por um segundo
}
Porém, antes de iniciarmos, vamos conversar um pouco sobre circuitos elétricos,
algumas leis básicas e a lógica dos comandos aqui usados.
ARDUINO: NOSSO PRIMEIRO PROJETO
Acendendo e Apagando LED
ARDUINO: NOSSO PRIMEIRO PROJETO
Antes, um pouco de eletrônica
Lei de Ohm
Conceitos fundamentais para entendermos os circuitos elétricos são os de
corrente (i) e tensão (V) elétricas e o de resistência (R).
A relação entre eles é dado pela Lei de Ohm: V = R.i.
V = R.i i = V/R = 9/90 = 0,1 A
Se conectarmos uma lâmpada com resistência
de 90 a uma bateria de 9 V, a corrente elétrica
fluindo pelo circuito será dada pela Lei de Ohm:
Podemos ligar
dois
ou mais componentes resistivos (lâmpada, resistor, etc.)
basicamente de duas maneiras: série e paralelo.
Ligação em série: a mesma corrente passa pelos dois componentes resistivos
Ligação em paralelo: a mesma tensão elétrica é aplicado aos dois componentes resistivos
ARDUINO: NOSSO PRIMEIRO PROJETO
Antes, um pouco de eletrônica
Para não queimarmos um LED, ele é ligado em série
com resistor R. O valor mínimo desta resistência é
dada pela Lei de Ohm.
Suponha que o LED suporte até 2 V de tensão e
corrente de 10 mA = 0,010 A e está ligado junto com
a resistência a uma fonte de V = 5 V.
Se ele suporta apenas 2 V, então 3 V da fonte devem ir
para o resistor R.
V
res= R.i R = V
res/i = 3/0,01 = 300
V
res+ V
LED= 5 V V
res= 5 V - 2 V = 3 V
Programação: códigos de comando
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Porta de saída DefiniçõesSaída para LED (HIGH = 5 V) Espera 1000 ms
Saída para LED (LOW = 0 V) Espera 1000 ms
Laço: Repete indefinidamente
Observação: o que estiver escrito após “//” não é lido pelo arduíno, apenas observações do programador.
ARDUINO: NOSSO PRIMEIRO PROJETO
Acendendo e Apagando LED
Conferindo (compilando) a programação
Depois de escrever os comandos, pressione
o botão . O IDE irá verificar se há algum
erro de lógica na programação.
Montando o circuito
Conforme discutido, e com o arduíno desconectado,
conecte, usando os fios e o protoboard, os
componentes do circuito: Arduino-LED-resistor.
Escrevendo o sketch
Escreva a programação no IDE, com o Arduino desconectado
ARDUINO: NOSSO PRIMEIRO PROJETO
Porta de comunicação com o Arduino
Conecte o computador com o Arduino via
cabo USB. Após isso, vá em “Ferramentas”,
depois em “porta”. Escolha uma porta de
comunicação com o Arduíno.
Gravando na memória do Arduino
Estabelecida a comunicação, pressione o
botão . O IDE irá gravar na memória do
Arduíno os comandos.
Se tudo der certo, você verá o arduíno piscando e em seguida o LED no
protoboard acendendo e apagando conforme os comandos.
EXERCÍCIO: PROJETO COM 3 LEDS
Levando em consideração a discussão realizada até aqui, tente montar um projeto com
3 LEDs ligados ao arduíno, acendendo e apagando alternadamente os LEDS.
void setup() { pinMode(11, OUTPUT); pinMode(12, OUTPUT); pinMode(13, OUTPUT); } void loop() { digitalWrite(11, HIGH); delay(1000); digitalWrite(11, LOW); digitalWrite(12, HIGH); delay(1000); digitalWrite(12, LOW); digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); }
PROJETO: LED COM PWM
Pinos PWM: nesse projeto vamos usar os pinos 3, 5 e 6, que também são pinos PWM (Pulse with
Modulation). Esse pinos são indicados pelo sinal ~ (til). Com ele, podemos fornecer valores de tensão
fracionários entre HIGH (5 V) e LOW (0 V), com passos de tensão de V = 5 V / 256 ~ 0,0195 V, permitindo uma variação gradual da tensão entre 0 V e 5 V.
AnalogWrite(pino, valor): Com esse comando, podemos enviar um valor fracionário (de 0 a 255) para o pino PWM. Para o estado 255, associamos o valor 5V e para o estado 0, associamos o valor 0 V AnalogWrite(3, 0) Pino 3 Valor 0 (mínimo) AnalogWrite(3, 255) Pino 3 Valor 255 (máximo)
Vamos montar um projeto simples com apenas um LED e verificar como funciona o pino PWV.
void setup() {
pinMode(3, OUTPUT);
}
void loop() {
analogWrite(3, 255);
}
ESPECTRO ELETROMAGNÉTICO E AS CORES
A luz é aquilo que chamamos em Física de Ondas Eletromagnéticas. Além das ondas
que enxergamos (a luz), temos outros tipos de ondas EM para os quais nossos olhos
não são sensíveis. O que caracteriza as regiões do chamado espectro eletromagnético
são as freqüências de oscilações das ondas EM (ou seja, quantas oscilações numa
unidade de tempo).
CORES: REGIÃO DO VÍSIVEL.
A região do visível, que é composta das frequências que enxergamos, pode ser
dividida (arbitrariamente) em sub-regiões que associamos as cores.
Fonte: “Esclarecendo o significado de cor em física” por Silva, Revista Física na Escola vol. 8(1), 2007
f
c
CORES: MISTURA ADITIVAS DE CORES
O que acontece quando misturamos luzes de cores diferentes? Vamos obter o
chamado sistema cromático aditivo. Esse sistema é formado pela adição das três
cores primárias da luz: azul, vermelho e verde (RGB)
PROJETO: LED RGB
Vamos continuar nossa exploração do Arduíno, usando agora outro tipo de LED: LED RGB. Ele é composto por três LED de cores diferentes, chamado simplesmente LED RGB. Nele, temos embutido três LEDs de cores vermelho (R), verde (G) e azul (B): a perna maior é o ânodo e as outras são os cátodos.
Para fazermos a conexão desse LED com o arduíno, montamos o circuito abaixo, usando três saídas digitais do arduíno (R,G e B) e o GND (ânodo). Ao lado, a programação.
void setup() {
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
void loop() {
analogWrite(3, 255);
analogWrite(5, 255);
analogWrite(6, 255);
}
PROJETO: BUZZER
FAZENDO BARULHO
Vamos agora fazer um pouco de barulho!
Nesse projeto iremos usar um dispositivo que produz som. O Buzzer é um transdutor piezoelétrico feito com uma membrana vibratória que ao ser excitada por impulso vibra e produz um tom.
O nosso projeto com o buzzer é mostrado abaixo, juntamente com um exemplo de programação.
void setup() { pinMode(9, OUTPUT); } void loop() { digitalWrite(9, HIGH); delay(150); digitalWrite(9, LOW); delay(1000); }
SONS E MÚSICA
f
T
1
Os fenômenos oscilatórios podem ser caracterizados principalmente por sua frequencia (f) ou período (T).
Período (T): tempo de repetição de uma oscilação completa (s) Frequencia (f): número de oscilações numa unidade de tempo (Hz)
As ondas sonoras são perturbações nas posições das moléculas do ar que vibram para lá e para cá, na direção da onda (longitudinais), produzindo regiões de baixa e alta
pressões (vales e cristas). O ser humano é capaz de identificar sons de 20 Hz até 20 kHz
f
v
som
SONS E MÚSICA
A música ocidental é baseada principalmente na chamada escala temperada. Basicamente, um som (tom) de uma dada freqüência (f0) e junto com uma outra, chamada de oitava (2xf0).
Dividimos esse intervalo de uma oitava em 12 intervalos chamados semi-tons, de tal forma que cada semitom vizinho é separado pela relação entre as frequencias:
059
,
1
2
1/12 1
n nf
f
Desta forma podemos criar uma escala temperada da seguinte forma (usando o dó como tom da escala):
Desta forma, segue-se aproximadamente as distâncias (intervalos) entre notas na escala natural, como os exemplos abaixo:
PROJETO BUZZER
FAZENDO MELODIA
Vamos estudar mais alguns recursos da programação do arduíno num projeto para produzir uma pequena melodia. Para isso, usaremos novamente o buzzer, conforme indicado na figura. Veja que a programação, agora um pouco mais longa, tem alguns elementos novos.
int C = 262, D = 294, E = 330, F = 349, G = 392, A = 440, B = 523; int P = 0; int i; int ode[ ] = { E,E,F,G,G,F,E,D,C,C,D,E,E,D,P,D,P, E,E,F,G,G,F, E,D,C,C,D,E,D,C,P,C,P, D,D,E,C,D,E,P,F,E, C,D,E,P,F,E,D,C,D,P, E,E,D,G,G,F,E,D,C,C,D,E,D,C,P,C }; int tempo[ ] = { 1,1,1,1,1,1,1,1,1,1,1,1,1.5,1,.5,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1.5,1,.5,1,1, 1,1,1,1,1,1,.5,1,1,1,1,1,.5,1,1.5,1,.5,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1.5,.125,1,1 }; void setup() { pinMode(3,OUTPUT); } void loop() {
for(i=0; i<sizeof(ode)/2; i++) {
if(ode[i] != 0) tone(3,ode[i]); elsenoTone(3); delay(tempo[i] * 500); noTone(3); } noTone(3); delay(10000); }
Variáveis: as variáveis reservam espaço na memória do arduíno para armazenar valores de determinados parâmetros a serem usado na programação do arduíno.
Tipos de dados: as variáveis podem armazenar valores inteiros, fracionários, etc. Para isso, é necessário especificar o tipo de dado que ela irá armazenar. Dependendo do tipo de dado, a variável irá consumir mais ou menos da memória do arduíno.
int: armazena números inteiros de -32.768 a 32.768 (ocupa 2 bytes no arduíno UNO). long: armazena números inteiros de -2.147.483.648 a 2.147.483.648 (ocupa 2 bytes no arduíno UNO).
float: armazena números fracionários de -3,4028235.10+38 a 3,4028235.10+38 (ocupa 4
bytes no arduíno UNO). Precisão de 6 ou 7 dígitos depois da vírgula.
array: conhecido como vetor unidimensional (vetor) ou multidimensional (matriz). int vetor [8]; // indica um vetor de 8 posições
int matriz [3][3]; // indica matriz de 3 linhas e 3 colunas
PROJETO ALTO FALANTE
CONHECENDO MAIS RECURSO
Escopo das variáveis: as variáveis podem ser declaradas dentro da função void( ) ou loop( ) – nesse caso serão chamadas de variáveis locais; ou podem ser declaradas antes de void( ), nesse caso será chamada de variável global.
tone(pino, frequencia, duração): função que gera um sinal de onda quadrada com frequencia específica
PROJETO ALTO FALANTE
CONHECENDO MAIS RECURSO
Estrutura de repetição “for”: faz o bloco de comandos seja repetido conforme a condição e o incremento especificado. Ela possui três parâmetros: a inicialização da variável de controle, uma condição e um incremento.
for(inicialização; condição; incremento)
for (int x = 1; x <= 10; x++) Exemplos: Inicializa com x valendo 1 Incremento de 1 unidade na variável x Repete até o valor de x = 10 for (int x = 2; x <= 100; x+=2) Inicializa com x valendo 2 Incremento de 2 unidades na variável x Repete até o valor de x = 100
PROJETO ALTO FALANTE
CONHECENDO MAIS RECURSO
Estrutura de seleção “if...else”: realiza um desvio de fluxo de funcionamento do programa, dependendo da condição especificada ser verdadeira ou falsa.
If (condição) { bloco de comando 1 } else { bloco de comando 2 } Exemplo: If (a != 10) {
// realiza esse bloco de comando se a diferente de 10 else {
// realiza esse bloco de comando se a igual 10 }
ENTENDENDO MELHOR O PROJETO BUZZER
Objetivo da Programação: usando FOR e IF/ELSE tocar as notas ode[ ] em seqüência durante os tempos correspondentes tempo[ ]*500 ms, ou seja:
Toca a primeira nota ode[0] = E por tempo[0]*500 = 500 ms; Toca a segunda nota ode[1] = E por tempo[1]* 500 = 500ms
etc.
IF
Condição: ode[ i ] 0
Satisfeita: Toca nota ode[ i ] Não satisfeita: faz pausa FOR:
Realiza a tarefa de i = 0 até i = número máximo de notas - 1 (*)
exemplo esquemático:
(*) Cada ode[ ] ocupa 2 bytes de memória, então: Número máximo de notas = sizeof ( ode[] ) / 2