Você está na página 1de 36

Oficina: Prototipação com Arduino

http://pc.void.cc - UDESC Physical Computing


Placas de Circuito Impresso DIY

Material:
● Glossy Paper
● Impressora Laser

● Ferro de passar roupa

● Vasilia com água e detergente

Modo de Fazer:
● Imprima o circuito no papel Glossy
● Coloque o papel impresso em cima da placa e

passe com o ferro por cerca de 10 minutos


● Deixe a placa descançar na vasilia por uns 15

minutos
● Retire o excesso de papel com o dedo
Ferramentas
Ferramentas Mãos extras

Estanho
Ferro de
Sugador Solda

Multímetro

Componentes
Protoboard

Fios (jumpers)

Alicates
Protoboard
Protoboard

...
...
Physical Computing

● Computação Ubiqua
● Computação Pervasiva

● Ambiente Inteligente

● Objetos inteligentes

● Interação
Arduino
● Plataforma Open Source Physical Computing
Arduino
● Plataforma Open Source Physical Computing

● Hardware Livre
Arduino
● Plataforma Open Source Physical Computing

● Hardware Livre

● Comunidade
Arduino
● Plataforma Open Source Physical Computing

● Hardware Livre

● Comunidade

● IDE
Origens do Arduino

● Baseado no AVR-GCC, avr-libc, AVRlib e no


Processing, filho do Wiring
● Usa o microcontrolador AVR Atmega168

● Possui um bootloader padronizado


Características Atmega8

● 8 Kbyte - memória flash


● 1 Kbyte - RAM
● 512 byte – EEPROM
● 13 digital I/O
● 5 analog input
● 6 analog output
● 16 Mhz (Apple II: 1 MHz / Intel
286: 12.5 MHz /Intel Core 2: 3 GHz)
Pinagem

● Digital Pins 2-13 (verde)


● Digital Pins (RX,TX) 0,1 (verde)
● Reset (azul)
● In-circuit Serial Programer (azul)
● Analog in Pins (azul)
● Power 5v e 9v (laranja)
● Terra (verde e laranja)
● Alimentação externa 9v – 12v
(rosa)
● USB (amarelo)
●Jumper para mudar a alimentação
do Diecimila (roxo)
Digital e Analógico

● Digital: On/Off, 1/0, 5v/0v


● Analógico: 0 até ∞ (muitos valores
●Computadores não entendem valores
analógicos, esses valores são convertidos em
pulsos digitais

PWM (analog output)


Pulse Width Modulation

●Oscilando rapidamente a saída


Digital, tem-se a impressão de que a
quantidade de energia enviada para
o circuito é variável;
●Essa técnica pode ser utilizada
para variar a intensidade luminosa
de um led, a velocidade de um
motor, etc;

●No Arduino, as portas 9, 10, 11


podem ser usadas como PWM;

● Usa-se a função analogWrite(x, y)


para controlar essa saída. Por
exemplo: analogWrite(9,128), seta o
pino 9 como PWM, usando 50% da
sua tensão total. O valor máximo
possível é 255;
Mão na massa
Montar projetos ao invés de falar sobre eles, a filosofia do Arduino.
Digital Output
Blink: http://www.arduino.cc/en/Tutorial/Blink
Digital Output
Blink: http://www.arduino.cc/en/Tutorial/Blink

int ledPin = 13;

void setup(){
pinMode(ledPin, OUTPUT);
}

void loop(){
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
Digital Input
Button: http://arduino.cc/en/Tutorial/Button
Digital Input
Button: http://arduino.cc/en/Tutorial/Button

int ledPin = 13;


int inputPin = 2;
int val = 0;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(inputPin, INPUT);
}

void loop(){
val = digitalRead(inputPin);
if (val == HIGH) {
digitalWrite(ledPin, LOW);
} else {
digitalWrite(ledPin, HIGH);
}
}
PWM Output
Fading: http://arduino.cc/en/Tutorial/Fading
PWM Output
Fading: http://arduino.cc/en/Tutorial/Fading

int value = 0;
int ledpin = 9;

void setup(){
pinMode(ledpin, OUTPUT);
}

void loop() {
for(value = 0; value <= 255;
value+=5) {
analogWrite(ledpin, value);
delay(30);
}
for(value = 255; value >=0;
value-=5) {
analogWrite(ledpin, value);
delay(30);
}
}
Potentiometer Input
Analog Input: http://arduino.cc/en/Tutorial/AnalogInput
Potentiometer Input
Analog Input: http://arduino.cc/en/Tutorial/AnalogInput

int ledPin = 9;
int potPin = 0
int value = 0;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(potPin, INPUT);
}

void loop(){
value = analogRead(potPin);
delay(100);
analogWrite(ledpin, value);
}
Variable Resistor Input
Analog Input: http://arduino.cc/en/Tutorial/AnalogInput
Variable Resistor Input
Analog Input: http://arduino.cc/en/Tutorial/AnalogInput

int ledPin = 9;
int ldrPin = 0
int value = 0;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(ldrPin, INPUT);
}

void loop(){
value = analogRead(ldrPin);
delay(100);
analogWrite(ledpin, value);
}
Processing
Comunicando entre o Arduino e seu computador: http://www.processing.org
Firmata
http://www.arduino.cc/playground/Interfacing/Firmata

File>Sketchbook>Exemples>Library-Firmata>StandardFirmata

Arduino Library: http://www.arduino.cc/playground/Interfacing/Processing


Digital Output
Blink: http://www.arduino.cc/en/Tutorial/Blink
Digital Output (Processing)

import processing.serial.*;
import cc.arduino.*;
 
Arduino arduino;
int ledPin = 13;
 
void setup(){
arduino = new Arduino(this, Arduino.list()[0]);
arduino.pinMode(ledPin, Arduino.OUTPUT);
}
 
void draw(){
arduino.digitalWrite(ledPin, Arduino.HIGH);
delay(1000);
arduino.digitalWrite(ledPin, Arduino.LOW);
delay(1000);
}
Variable Resistor Input
Analog Input: http://arduino.cc/en/Tutorial/AnalogInput
Variable Resistor Input (Processing)

import processing.serial.*;
import cc.arduino.*;

Arduino arduino;
int pino_sensor_ldr = 0;
int valor_capturado_ldr = 0;

void setup(){
println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[0]);
arduino.pinMode(pino_sensor_ldr, Arduino.INPUT);
}

void draw(){
valor_capturado_ldr = arduino.analogRead(pino_sensor_ldr);
println(valor_capturado_ldr);
}
Você pode encontrar tudo isso e
muito mais em:

● Arduino Notebook:
http://www.lulu.com/content/1108699
● Arduino Booklet:

http://www.alfakini.com.br/blog/wp-content/uploads/2009/02/arduino_booklet02.pdf
● Arduino Lecture:

http://www.slideshare.net/eoinbrazil/imediaarduino08