Sunteți pe pagina 1din 46

Oficina de Arte e Tecnologia

www.void.cc/workshop/

Ferramentas

Ferramentas

Mos extras

Estanho
Sugador

Ferro de
Solda
Multmetro

Protoboard
Fios (jumpers)
Alicates

Componentes

Protoboard

Protoboard

...
...

Arduino

Plataforma Open Source Physical Computing

Hardware Livre

Comunidade

IDE

Caractersticas Atmega8

8 Kbyte - memria 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)

Pinos

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)

Alimentao externa 9v 12v


(rosa)

USB (amarelo)

Jumper para mudar a


alimentao do Diecimila (roxo)

Digital e Analgico

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

Analgico: 0 at (muitos valores)

Computadores no entendem valores


analgicos, esses valores so convertidos em
pulsos digitais

PWM (analog output)


Pulse Width Modulation

Oscilando rapidamente a sada


Digital, tem-se a impresso de que a
quantidade de energia enviada para
o circuito varivel

Essa tcnica 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 funo analogWrite(x, y)


para controlar essa sada. Por
exemplo: analogWrite(9,128), seta o
pino 9 como PWM, usando 50% da
sua tenso total. O valor mximo
possvel 255

Linguagem Arduino
referncias: http://arduino.cc/en/Reference/HomePage

setup()
Executado somente uma vez quando o microcontrolador ligado
loop()
Roda repetidamente o programa dentro desse bloco
pinMode(<pino>, <INPUT/OUTPUT>)
Configura um pino como entrada ou como sada
digitalWrite(<pino>, <HIGH/LOW>)
Configura o estado de uma sada digital como HIGH ou LOW
digitalRead(<pino>)
L o estado de uma entrada digital
analogWrite(<pino>, <valor: 0-255>)
Escreve um valor em uma sada analgica
analogRead(<pino>)
L o estado de uma entrada analgica

Linguagem Arduino
referncias: http://arduino.cc/en/Reference/HomePage

delay(<n>)
Pausa o processamento durante n milsimos de segundo
random(<inicio>, <fim>)
Retorna um nmero entre inicio e fim
Serial.begin(9600)
Serial.print(mensagem, <HEX/DEC/BIN/BYTE>)
Serial.read()

Mo na massa

Montar projetos ao invs de falar sobre eles, a filosofia do Arduino.

Sada Digital
Blink: http://www.arduino.cc/en/Tutorial/Blink

Sada Digital
Blink: http://www.arduino.cc/en/Tutorial/Blink

Sada Digital
Blink: http://www.arduino.cc/en/Tutorial/Blink

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

Sada Digital + PD
Blink: http://www.arduino.cc/en/Tutorial/Blink

int
int ledPin
ledPin == 13;
13;
void
voidsetup(){
setup(){
pinMode(ledPin,
pinMode(ledPin,OUTPUT);
OUTPUT);
Serial.begin(9600);
Serial.begin(9600);
}}
void
voidloop(){
loop(){
int
intmsg
msg==Serial.read();
Serial.read();
ifif((char)msg
((char)msg==
=='l')
'l'){ {
digitalWrite(ledPin,
digitalWrite(ledPin,HIGH);
HIGH);
} }else
elseifif((char)msg
((char)msg==
=='d')
'd'){ {
digitalWrite(ledPin,
digitalWrite(ledPin,LOW);
LOW);
}}
}}

Cdigo dos resistores


http://www.areaseg.com/sinais/resistores.html

Sada Analgica
PWM
Sada Digital
Fading: http://arduino.cc/en/Tutorial/Fading

Sada Analgica PWM


Fading: http://arduino.cc/en/Tutorial/Fading

Sada Analgica PWM


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);
}
}

Sada Analgica PWM + PD


Fading: http://arduino.cc/en/Tutorial/Fading

int ledPin = 9;
void setup(){
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
int msg = Serial.read();
if (msg >= 0) {
analogWrite(ledPin, msg);
}
}

Entrada
Digital
Sada Digital
Button: http://arduino.cc/en/Tutorial/Button
Circuito pull-down

Entrada Digital
Button: http://arduino.cc/en/Tutorial/Button

Entrada Digital
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);
}
}

Entrada Digital + PD
Button: http://arduino.cc/en/Tutorial/Button

int pinoBotao = 2;
void setup(){
pinMode(pinoBotao, INPUT);
Serial.begin(9600);
}
void loop(){
int x = digitalRead(pinoBotao);
Serial.write(x);
}

Entrada Analgica
Analog Input: http://arduino.cc/en/Tutorial/AnalogInput
Circuito divisor de tenso

Entrada Analgica
Analog Input: http://arduino.cc/en/Tutorial/AnalogInput

Entrada Analgica
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/4);
}

Entrada Analgica + PD
Analog Input: http://arduino.cc/en/Tutorial/AnalogInput

int potPin = 0;
int value = 0;
void setup() {
pinMode(potPin, INPUT);
Serial.begin(9600);
}
void loop(){
value = analogRead(potPin);
Serial.write(map(value, 0, 1023, 0, 127));
}

Entrada Analgica
Analog Input: http://arduino.cc/en/Tutorial/AnalogInput
Circuito divisor de tenso

Entrada Analgica
Analog Input: http://arduino.cc/en/Tutorial/AnalogInput

Entrada Analgica
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/4);
}

Entrada Analgica + PD
Analog Input: http://arduino.cc/en/Tutorial/AnalogInput

int entrada = 0;
int valor = 0;
void setup() {
pinMode(entrada,INPUT);
Serial.begin(9600);
}
void loop(){
valor = analogRead(entrada);
Serial.write(valor);
}

Entrada Analgica Piezo


Knock: http://arduino.cc/en/Tutorial/Knock

Entrada Analgica Piezo


Knock: http://arduino.cc/en/Tutorial/Knock

int ledPin = 13;


int knockSensor = 0;
byte val = 0;
int statePin = LOW;
int THRESHOLD = 100;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
Val =analogRead(knockSensor);
if (val >= THRESHOLD) {
statePin = !statePin;
digitalWrite(ledPin, statePin);
Serial.println("Toc-toc");
delay(10);
}
}

Sada Analgica Piezo


Pitch follower: http://arduino.cc/en/Tutorial/Tone2

Sada Analgica Piezo


Pitch follower: http://arduino.cc/en/Tutorial/Tone2

Sada Analgica Piezo


Pitch follower: http://arduino.cc/en/Tutorial/Tone2

int piezo = 9;
int ldr = 0;
void setup() {
}
void loop() {
int sensorReading = analogRead(ldr);
int pitch = map(sensorReading, 400, 1000, 100, 1000);
tone(piezo, pitch, 10);
}

Piezo + PD
Pitch follower: http://arduino.cc/en/Tutorial/Tone2

int entrada = 0;
int valor = 0;
void setup() {
pinMode(entrada,INPUT);
Serial.begin(9600);
}
void loop(){
valor = analogRead(entrada);
Serial.write(valor);
}

Motor
L293: http://www.arduino.cc/es/L293D/L293D

Motor
L293: http://www.arduino.cc/es/L293D/L293D

int motor1Pin1 = 13; // pin 15 on L293D


int motor1Pin2 = 12; // pin 10 on L293D
int enablePin = 11; // pin 9 on L293D
void setup() {
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);
digitalWrite(enablePin, HIGH);
}
void loop() {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
}

Voc pode encontrar tudo isso e muito mais em:

Arduino http://arduino.cc
Pure Data http://puredata.info
Coletivo MuSA http://musa.cc
Artesanato de Volts http://artesanato.devolts.org
des).(centro http://pub.descentro.org
Robtica Livre http://roboticalivre.org
Metareciclagem http://rede.metareciclagem.org
Estdio Livre http://estudiolivre.org
MSST http://devolts.org/msst

S-ar putea să vă placă și