Você está na página 1de 17

1

marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br



Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/






















2
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/
Experimento 1: Piscar um led Blink
Portas Digitais

Antes disso......


Agora sim.. vamos ao experimento
Testando a polaridade do LED












3
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/
Agora Sim!!! Circuito final...



Agora o Experimento...

O experimento a seguir prope um primeiro contato com o Arduino: um LED ser ligado a
placa em uma porta digital, e atravs do cdigo programado nele o LED piscar
interruptamente, com um intervalo de alternao entre acender e apagar de 1 segundo.
Nesse experimento sero utilizados os seguintes componentes: 1 LED, 1 resistor de 330
Ohm, 2 fios.
Definio dos componentes:

LED
LED a sigla em ingls para Light Emitting Diode, ou Diodo Emissor de Luz. O led um
diodo semicondutor (juno P-N) que quando energizado emite luz visvel.
Obs: O led um componente que possui polaridade, portanto a sua perna maior deve ser
ligada a alimentao e a perna menor terra (GND na placa Arduino) no caso de um led
normal de 2 pernas, caso seja um led RGB, que possui 4 pernas, a maior ligada no terra.
Resistor








4
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/
O resistor um dispositivo cujas principais funes so: dificultar a passagem da corrente
eltrica e transformar energia eltrica em energia trmica por efeito joule. Entendemos a
dificuldade que o resistor apresenta passagem da corrente eltrica como sendo
resistncia eltrica. O material mais comum na fabricao do resistor o carbono.
Para o resistor vlida a expresso:





Que relaciona a resistncia oferecida passagem da corrente eltrica com tenso e
corrente eltrica. Devemos lembrar que a unidade da resistncia eltrica o ohm ()
relao entre a tenso e a corrente eltrica em ampre.

Obs: Diferente do led o resistor no possui polaridade, portanto a ligao de seus terminais
no segue nehuma regra. Para ver a polaridade do led clique no link
http://inventormaluco.com/2012/03/30/led-que-respira/
Neste exemplo utilizaremos um circuito simples , com um LED e um resistor (cujo valor
mnimo vai ser calculado no item 1) em srie, conforme indica a figura abaixo
Este circuito foi desenhado em um software freeware Fritzing disponvel em
http://fritzing.org/.


















Cdigo:

void setup() {
pinMode(13, OUTPUT);
}
Void loop()
{
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}









5
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/

Utilizando Exemplos do Arduino

Este cdigo tambm est disponvel em exemplos no IDE do Arduino veja na figura abaixo
como obt-lo. Exemplo : Blink

Para rodar o programa no Arduino


Altere o intervalo de tempo em que o LED fica aceso e o intervalo de tempo que fica
apagado!








6
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/
Viu como fcil!
Comando via teclado -_ Funo Serial.read()

Com o mesmo circuito anterior vamos enviar comandos para acender e apagar o led via
teclado. Copie o cdigo abaixo na IDE (Integrated Development Environment) do Arduino
Faa upolad do programa
















Abra o monitor serial
!
int ledPin = 13; //define o pino em que o led est ligado
char leitura; //define a varivel leitura que corresponde a uma letra o teclado
//definido por char

void setup() {
pinMode(ledPin, OUTPUT); //define que o pino 13 ser uma saida
Serial.begin(9600);// taxa de comunicaao com a serial
}

void loop() {

leitura = Serial.read(); // a varivel leitura ser obtida atravs do teclado
if (leitura == 'L') {
digitalWrite(ledPin, LOW);
}
else if (leitura == 'H') {
digitalWrite(ledPin, HIGH);
}
}
Digite a letra L ou H e,
seguida tecle enter
para alterar o estado do led








7
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/
Experimento 2: Leitura de porta analgica com um LDR


O experimento a seguir prope um contato mais avanado com o Arduino, que consiste em
ligar um LDR (Light Dependent Resistor)
1
a placa Arduino em uma porta analgica em
seguida ler os valores fornecidos pelo LDR e envi-los para a leitura no monitor serial a cada
0,25 segundos.
Nesse experimento sero utilizados os seguintes componentes: 1 LDR, 1 resistor de
33K ou 10K , alguns fios.

Definio dos componentes:

LDR

Do ingls Light Dependent Resistor, ou resistor dependente de luz, a resistncia do LDR
varia de forma inversamente proporcional quantidade de luz incidente sobre ele, isto ,
enquanto o feixe de luz estiver incidindo, o LDR oferece uma resistncia muito baixa.
Quando este feixe cortado, sua resistncia aumenta, o LDR tambm chamado de clula
fotocondutiva, ou ainda de fotoresistncia, o LDR um dispositivo semicondutor de dois
terminais.

Com o LDR pode-se fazer o controle automtico de porta, alarme contra ladro, controle de
iluminao em um recinto entre outros.
Obs: Assim como o resistor o LDR no possui polaridade, portanto a ligao de seus
terminais no segue nenhuma ordem pr-determinada.

Monte o circuito com base na figura a abaixo, e faa o upload do cdigo usando a IDE do
Arduino.

O valor do resistor que ser utilizado igual a 10 K



1
Indicamos o uso de simuladores para mostrar esta dependncia. Um bom simulador est disponvel em
http://phet.colorado.edu/sims/conductivity/conductivity_pt_BR.jnlp. O uso deste simulador (ou qualquer outro) permitir aos estudantes
melhor compreender o funcionamento de um LDR.
muito importante que o estudante compreenda cada passo do processo de aquisio para um amplo domnio da tecnologia.









8
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/















Montando o Circuito






Cdigo:

int LDR; //declara a variavel

void setup(){
pinMode(A0, INPUT);
Serial.begin(9600);
}

void loop(){
LDR = analogRead(A0);
Serial.print("Valor lido no LDR: ");
Serial.print(LDR);
Serial.println();
delay(250);

}









9
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/
Faa upload e abra o monitor serial



Varie a intensidade de Luz sobre o LDR ( colocando a mo sobre o sensor) e observe o que
ocorre.

Compreendendo a Estrutura do Cdigo

A estrutura de um cdigo para o Arduino muito simples temos basicamente tres
procedimentos; declarao de variavies, setup e loop.

Declarao de Variaveis.

Observe no cdigo que definimos a varivel LDR como int (que corresponde a um inteiro)
Podemos ter outros tipos de variveis e segue abaixo algumas variveis que normalmente
utilizamos

Tipos de Variveis (as mais utilizadas)

Tipo

Descrio Referencia no site e exemplos
int Numero inteiro
http://arduino.cc/en/Reference/Int
float Nmero fracionrio(ponto
flutuante)
http://arduino.cc/en/Reference/Float
double Nmero fracionrio, como mais
preciso
http://arduino.cc/en/Reference/Double
char caractere
http://arduino.cc/en/Reference/Char
boolean Verdadeiro ou falso
http://arduino.cc/en/Reference/Boolea








10
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/

nVariables
long Longas maiores que 32 bits
http://arduino.cc/en/Reference/Long
unsigned

Impede que assuma valores
negativos

unsigned long

Variveis longas e sempre
positivas (em geral usada para
tempo)
http://arduino.cc/en/Reference/Unsigne
dLong
byte


Numero de 8 bits

http://arduino.cc/en/Reference/Byte


Estrutura de Setup

void setup() { entre os colchetes devemos especificar a taxa de velocidade em que a transmissao de dados ocorrer
definido por Serial.begin(taxa em bps) os pinos de entrada e sada definidos por : pinMode(A0, INPUT ou OUTPUT)
etc...
}

Estrutura de Loop (o que vai rodar repetidamente)

void loop() { entre os colchetes um conjunto de operaoes e commandos que devem ser executados
}

Impresso no monitor serial

Usamos o comando Serial.print
Se o contedo estiver entre aspas ser impresso na tela exatamente o que voc escreveu, como por
exemplo Valor lido no LDR
Se quisermos que seja impresso o valor lido ento colocamos entre parnteses a varivel que ser quer
obter a impresso; no exemplo Serial.print (LDR).
Para imprimir em linha o comando Serial.println
Observe que logo abaixo da sequencia, solicitamos a impresso de uma linha em branco Serial.println(),
isso permite que tenhamos os dados em duas colunas (um ao lado do outro)
O comando delay(valor) espera um dado intervalo de tempo para a nova impresso em milisegundos
Altere o delay e observe o que ocorre com os dados
Delay ( o intervalo de tempo para impresso no monitor serial em milisegundos)









11
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/
Inserindo a varivel tempo

Para a coleta de dados em experimentos, necessitamos da indicao de como a varivel
evolui com o tempo, ou ainda a relao entre diferentes variveis.

Para que voc possa obter a impresso dos dados em colunas das variveis; tempo e
valor para o sensor LDR, segue o programa abaixo

Cdigo Fonte




























int LDR; //declara a varivel
unsigned long tempo;

void setup() {
pinMode(A0, INPUT);
Serial.begin(9600);
}

void loop() {
tempo= millis(); // base de tempo para a coleta
LDR = analogRead(A0);
{
Serial.print(tempo);
Serial.print(" "); // introduz um espao entre as colunas
Serial.print(LDR);
}
Serial.println(); // imprime em linhas
delay(250);
}








12
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/
Experimento 3: Construindo um Alarme tico
Arduino respondendo sensores - Condicional

LDR e disparo atravs de uma porta digital

A partir da leitura de um LDR ligado em uma porta analgica o Arduino vai permitir
perceber que ocorreu um bloqueio no feixe de luz, como por exemplo, acender um LED
vermelho.
Nesse experimento sero utilizados os seguintes componentes:
1 LDR
1 resistor de 33K ou 10 K
1 led
1 resistor de 150 a 330 .

1 passo: Leitura na porta Analgica

LDR na porta Analgica

So dispositivos eltricos que tm a sua resistncia eltrica alterada com a incidncia de
luz.

Com o circuito usando um LDR e um resistor em srie podemos efetuar leitura de tenso
no LDR atravs da porta analgica do Arduino.













Copie o cdigo e faca upload para o Arduino e abra o monitor serial.


//Cdigo

int LDR; // define a variavel LDR

void setup(){
pinMode(A0, INPUT); // estabelece o pino A0 como
//entrada
Serial.begin(9600); // comunicao com a serial
}

void loop(){
LDR = analogRead(A0); // LDR leitura em A0
{
Serial.print("Valor lido no LDR: "); // impresso no monitor
//serial
Serial.print(LDR);}
Serial.println();
delay(250);
}

+V
LDR
R
GND
Porta analogical (0)








13
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/
2 passo: Calibrao do sensor para bloqueio da luz

Incida um feixe de luz (ou utilize a luz ambiente) no LDR.
Abra o nonitor serial e observe qual ser o valor na porta analgica A0 (em decimal)
quando o feixe de luz bloqueado
Em seguida estabelea a condio para o disparo do alarme.

3 passo: Inserindo a condio de acendimento:

Se a leitura na analgica for maior/menor que o valor obtido na calibrao escreva da porta
digital 13 HIGH, seno escreva LOW

Orientao para o Cdigo
























Veja a sintaxe para a condio de if/else em http://arduino.cc/en/Reference/Else
Para escrever na porta digital http://arduino.cc/en/Reference/DigitalWrite


int LDR; //declara varivel inteira

void setup() {
Serial.begin(9600);
pinMode(A0, INPUT);// entrada A0
pinMode(13,OUTPUT); // define o pino 13 como sada
}

void loop() {

LDR = analogRead(A0); //
Serial.println(LDR); // imprime em linhas o valor do LDR
delay(200); // intervalo de tempo entre as medidas

if (LDR > 200) { // este valor voce dever calibrar
digitalWrite(13,HIGH); // para escrever na digital veja }
} // em http://arduino.cc/en/Reference/DigitalWrite
else {
digitalWrite(13,LOW); // escreva oposto da condio anterior;
}
}








14
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/
Desafios:

Tarefa e desafio: Com o cicuito montado para leitura no LDR, monte um programa e um
sistema Fisico em que tenhamos uma sequencia de leds acendendo conforme a distancia
de bloqueio de luz no LDR.

A sequencia deve ser a seguinte: Com a dimiuio da distancia acenderemos os leds na
seguinte sequencia:

Maior distancia: led azul
Distancia intermediaria1 (mais prxima led verde)
Menor distancia vermelho

Para acender os leds use as portas digitais e insira linhas de programao com
condies de if

Faa um pequeno vdeo com seu aparelho celular da
montagem e poste no seu Facebook


!!!

























15
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/

Construindo um Alarme Sonoro

A funo

tone( pino, freqncia e durao da nota).
http://arduino.cc/en/Reference/Tone (ver anexo)

Fornece um sinal sonoro de freqncia conhecida

Acrescente no seu alarme um som para isso use o pino 9, por exemplo, para tocar um
alarme e faa a conexo com um plug Jackfmea-udio na sada com um resistor de 1K a
330 ohms em serie, por proteo.
Para retirar o sinal sonoro, basta que voc envie um sinal com freqncia igual a 0 ou ainda
noTone(pino) (http://arduino.cc/en/Reference/NoTone)

















16
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/

Codigo Fonte



























int LDR; //declara varivel

void setup(){
Serial.begin(9600);
pinMode(A0, INPUT);// entrada A0
pinMode(13,OUTPUT); // define o pino 13 como saida
pinMode(9,OUTPUT); // define o pino 9 como saida
}

void loop(){

LDR = analogRead(A0); // leitura na porta A0
Serial.println(LDR); // imprimir valor lido no LDR
delay(200);

if (LDR > 200) {// varie este valor para o que voc deseja {
digitalWrite(13, HIGH);// escreva na digital 13 alto
tone(9, 440, 100);// (funo tone (pino, frequncia,
durao)
}

else {
digitalWrite(13, LOW); //escreva na digital 13 baixo
noTone(9); // parar de tocar
}
}








17
marisac@pucsp.br; molisani@hotmail.com e cris@pucsp.br

Oficina Arduino para Iniciantes
http://labduino.blogspot.com.br/
Desafio

Distancia diferentes sequencia em cores diferentes e tocar as notas d, r e mi

Tarefa e desafio: Com o circuito montado para leitura no LDR, monte um programa e um
sistema Fisico em que tenhamos uma sequencia de leds acendendo conforme a distancia
de bloqueio de luz no LDR.


A sequencia deve ser a seguinte: Com a diminuio da distancia acenderemos os leds na
seguinte sequencia:

Maior distancia: led azul
Distancia intermediaria1 (mais prxima led verde)
Menor distancia vermelho (e tocar uma sequencia de notas musicais)
Para acender os leds use as portas digitais e insira linhas de programao com
condies de if



Faa um pequeno vdeo com seu aparelho celular da
montagem e poste no seu Facebook

!!




Outras referncias
http://cppreference.com/wiki/br-pt/data_types
http://www.mtm.ufsc.br/~azeredo/cursoC/aulas/c320.html
http://equipe.nce.ufrj.br/adriano/c/apostila/tipos.htm
http://labduino.blogspot.com.br/2012/02/cartilha-de-programacao-em-c-para-o.html

Você também pode gostar