Sei sulla pagina 1di 61

Curso de Arduino

Edson Amado
Curitiba
2014
O que o Arduino
Arduino uma plataforma open-source
(Cdigo Aberto) de prototipagem
eletrnica flexvel, fcil de usar, baseada
em software e hardware. destinado a
artistas, designers e qualquer pessoa
interessada em criar objetos ou ambientes
interativos.
Arduino Uno
Micro controlador ATmega 328
Tenso de Operao 5V
Tenso de Entrada (recomendado) 7-12V
Tenso de Entrada (Limites) 6-20V
E/S pinos Digitais 14 (Dos quais 6 fornecem sada PWM)
Pinos de Entrada Analgica 6
Corrente DC I/O Pin 40 mA
Corrente 3.3V para Pino 50 mA
Memoria Flash 32Kb, dos quais 0,5Kb so utilizados pelo
bootloader
SRAM 2Kb
EEPROM 1Kb
Clock 16MHZ

Arduino Uno
Arduino Leonardo

Micro controlador ATmega 32u4
Tenso de Operao 5 V
Tenso de Entrada (recomendado) 7-12 V
Tenso de Entrada (Limites) 6-20 V
E/S pinos Digitais 20
Pinos de Entrada Analgica 12
PWM Canais 7
Corrente DC I/O Pin 40 mA
Corrente 3.3V para Pino 50 mA
Memoria Flash 32Kb, dos quais 4Kb so utilizados pelo
bootloader
SRAM 2,5 Kb
EEPROM 1Kb
Clock 16 MHZ
Microcontrolador
Atmel SAM3X8E
Tenso de funcionamento
3.3 V
Tenso de entrada (recomendado)
7-12 V
Tenso de entrada (limites)
6-20 V
E / S digital Pinos
54 (dos quais 12 oferecem sada PWM)
Pinos de entrada analgica
12
Sadas analgicas Pinos
2(DAC)
Sada DC Corrente total em todas as linhas de I /
O
130 mA.
Corrente DC 3.3V para Pino
800 mA
Corrente DC para 5V Pin
800 mA
Memria Flash
512 Kb
SRAM
96 Kb (dois bancos 64 Kb e 32 Kb)
Clock
84 MHZ
Arduino Due

Arduino Mega

Microcontrolador
ATmega 2560
Tenso de funcionamento
5V
Tenso de entrada (recomendado)
7-12 V
Tenso de entrada (limites)
6-20 V
E / S digital Pinos
54
Pinos de entrada analgica
16
Corrente DC 3.3V para Pino
50 mA
Corrente DC por I /O
40 mA
Memria Flash
256 KB dos quais 8 KB usados pelo bootloader
SRAM
8Kbits
EEPROM
4Kbits
Clock
16 MHZ
Shield Ethernet
Shield Wifi
Hardware
Alimentao
Cuidado!!!
Pinos Digitais
Os pinos digitais podem ser utilizados tanto como pino de entradas quanto pino
de sada digital
Operam a 5 volts com uma corrente de 40mA
Possuem resistor interno de 20 a 50 Kohms

Proteo contra Sobre Corrente
O Arduino Uno possui um fusvel reajustvel que protege a porta USB de
surtos e sobre corrente. Quando mais que 500 mA for aplicado na porta
USB o fusvel interromper automaticamente a comunicao ate que o
surto ou sobre corrente seja removida.

Reviso Eletrnica
Tenso: Fora que impulsiona os eltrons
ocasionando o fluxo de cargas eltricas entre os
polos de um circuito eltrico. Unidade: volt (V)
Corrente Eltrica: o movimento ordenado das
partculas eletricamente carregadas no interior
de um condutor. Unidade: Ampre (A)
Resistncia Eltrica: Oposio oferecia pelo
material a passagem de corrente eltrica.
Unidade: Ohm ()
Reviso Eletrnica
Resistor:

Tem como principal objetivo limitar a corrente
que flui por determinado componente
eletrnico.
Resistor Fixo
Resistor Varivel
Os resistores variveis tm a caracterstica de
poder variar o valor da resistncia hmica. Os
resistores variveis possuem 2 dois ou 3 trs
terminais.
Potencimetro
Esquema de Ligao
Diodo Emissor de Luz -LED
um semicondutor que emite luz quando
energizado diretamente. Este processo de
emisso de luz pela aplicao de uma fonte
eltrica chamado de eletroluminescncia.
Diodo Emissor de Luz- LED
Esquema de Ligao
Ambiente de Desenvolvimento
Arduino

Barra de Menus
Menu Edit
Menu Sketch
Menu tools
Menu Help
Toolbar
Janela de sketch
rea de Mensagens
Programao
Estrutura

void Setup() // funo de preparao do Arduino
{
Comandos;
}

void Loop()
{
Comandos;
}

Programao
Tipos de Variveis
Byte
Int
Long
Float
Char
string
Programao
Declarao de Variveis:

int a; // A variavel a visvel para todas as funes,
//o que demonstra que ela uma varivel global.
void Setup()
{
Instrues;
}

Programao
void Setup()
{ // Inicio da Funo Setup()
Instrues;
} // Fim da funo Setup
void Loop()
{ // Inicio da funo Loop()
For( int i=0 ; i<20) // A varivel i do tipo inteiro
// declarada dentro da funo for.
{ // Inicio da funo For()
i++; // Nesta linha a varivel i incrementada i = i+1;
} // Fim da funo For()
float value; // J fora da funo for(), a varivel
// value do tipo float declarada.
}
Programao
Operadores Aritmticos

y = y+2; // A varivel y recebe o valor
da soma de y +2.
y = j 4; // A varivel y recebe o valor
da varivel j //decrescido de 4.
y = y* j; // A varivel y recebe o valor
da //multiplicao das variveis y e j.
y = j/5;//y recebe o valor da varivel j
dividido pelo //numero 5.

Programao
Smbolo Composto Atribuio
x++ x = x + 1;
x- - x = x 1;
x+= z x = x + z;
x - = z x = x z;
x *= z x = x* z;
x /= z x = x/ z;
Adio +
Subtrao -
Multiplicao *
Diviso /
Programao
Operadores de Comparao

Operador Smbolo Exemplo Descrio
Igualdade == x == y; x igual a y.
No igual != x != y; x no igual a y.
Maior > x > y; x maior que y.
Menor < x < y; x menor que y.
Maior ou igual >= x >= y; x maior ou igual a y.
Menor ou igual < = x < = y; x menor ou igual a y.
Programao
Operadores Lgicos

Operador Smbolo Exemplo Descrio
Not ! If (! x >20) Caso x seja menor que 20 a funo
if executada.

And

&&
If (x==4 && b<4) O comando if s ser executado
caso as duas expresses sejam
verdadeiras.

Or

| |
If (x==4 | | b<4) O comando if s ser executado se
uma das expresses for verdadeira
Funes
tipo NomeDaFuno (Parmetros)
{
Instrues;
}
Exemplo
int delayVal()
{
int v; // Cria a varivel v
v = analogRead(pot); // L o valor do
potencimetro v/= 4; // Realiza a diviso por 4
convertendo a faixa de //valores de 0-1023 para
0-255
return v;
}

Programao
Funes de Tempo

Funo delay ( parmetro)
delay(1000);// tempo em milissegundos.

Funo delayMicroseconds(parmetro)

delayMicroseconds(1000);

Funo Millis()

long Total = millis();



Programao
Funes Matemticas
Min(Valor 1,Valor 2)
Max(Valor 1, Valor 2)
abs(valor)
Constrain(valor, valor 1, valor 2)
Pow(valor, expoente)
sqrt(valor)
sen(valor)
cos(valor)
tan(valor)
random( min,max )

Programao
Funes Matemticas
map(valor, min1, max1,min2,max2)

int valor;
valor = map(analogicRead(pot),0,1023,0,255);

Programao
Funes de entrada e sada digital
PinMode(pin,mode)

int pin = 13;
Setup()
{
pinMode(pin,INPUT);
}
Loop()
{
Instrues;
}

Programao
Leitura da entrada digital

digitalRead(pin)

int pin = 13;
void Setup()
{
pinMode(pin,INPUT);
}
void Loop()
{
int valor = digitalRead(pin);
}


Programao
Mudana de Nvel logico na sada digital

digitalWrite(pino,valor)

int pin = 4;
void Setup()
{
pinMode(pin, OUTPUT);
}
void Loop()
{
digitaWrite(pin, HIGH);
}

Programao
Exerccio 1

Utilizar as funes de entrada e sada para fazer
acender um led quando um boto for pressionado.

Exerccio 2
Utilizando as funes de tempo, crie um programa
que faa um led piscar a cada 5 segundos.
Transistor
Este dispositivo possui 3 trs terminais sendo eles,
coletor, emissor e base. A utilizao do transistor
pode ser realizada tanto para simular uma chave ou
para amplificar um valor de corrente.
Transistor
Rel
O rel um dispositivo que atua como uma chave
eletromecnica quando uma corrente eltrica circula
pela bobina, criando um campo eletromagntico que
atrai os contatos, assim liga ou se desliga circuitos.
Esquema de Ligao
Programao
Funes de controle de fluxo

If(condio)

if (pinFiveInput < 500)
{
// do Thing A
}
else if (pinFiveInput >= 1000)
{
// do Thing B
}
else
{
// do Thing C
}

Programao
Switch Case
switch (var) {
case 1: / / Fazer algo quando var igual a 1
break;
case 2: / / Fazer algo quando var igual a 2
break;
default: / / Se nada mais jogos, fazer o padro
/ / Padro opcional
}
Programao
While

var = 0;
while(var < 200)
{
// do something repetitive 200 times
var++;
}

Programao
Do-while

do
{
delay(50); // wait for sensors to stabilize
x = readSensors(); // check the sensors

} while (x < 100);


Programao
Lao For

Programao
Funes de entrada analgica

analogRead(pin);

Setup()
{
Instrues;
}
Loop()
{
(...)
int sensor= analogRead(A0);
()
}

Programao
Funo de sada analgica (PWM)

AnalogWrite(pino,valor);

int pot;
int LED = 3;
int analogico=0;
void Setup()
{
Instrues;
}
Void Loop()
{
pot=analogRead(analogico);
pot=map(pot,0,1023,0,255);
analogWrite(LED,pot);
}
PWM
Programao
Comunicao serial

Serial.begin(Taxa)

void setup() {
Serial.begin(9600);
//Abre a porta serial configurando a
//taxa de comunicao em 9600 (bps)
}

void loop()
{
}

Programao
Comunicao Serial
Serial.Available()
Serial.Read()
Serial.Print()
Serial.Println()

Programao
int incomingByte = 0; // for incoming serial data

void setup() {
Serial.begin(9600); // opens serial port, sets
data rate
// to 9600 bps
}

void loop() {

// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();

// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}

Potrebbero piacerti anche