Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Sumrio
1 Computao .......................................................................................................................... 8
1.2 Computao Fsica ........................................................................................................... 8
2 Open Source ......................................................................................................................... 9
3 Open Hardware..................................................................................................................... 9
4 Arduino ................................................................................................................................. 10
4.1 Hardware .......................................................................................................................... 11
4.2 IDE ..................................................................................................................................... 12
5 Arduino UNO ....................................................................................................................... 12
5.1 Caractersticas..................................................................................................................... 13
5.2 Alimentao ........................................................................................................................ 14
5.3 Memria ............................................................................................................................. 15
5.4 Entrada e Sada ................................................................................................................... 15
5. 5 Comunicao ..................................................................................................................... 16
5.6 Programao....................................................................................................................... 16
5.7 Reset automatico por software .......................................................................................... 17
5.8 Proteo contra sobre-corrente na USB ............................................................................ 18
5.9 Caractersticas fsicas .......................................................................................................... 18
5.10 Shields ........................................................................................................................... 19
6 Starter Kit ............................................................................................................................. 19
6.1 Laboratrio de Garagem ................................................................................................ 20
6.2 Itens ................................................................................................................................... 20
6.2.1 Cabo USB ..................................................................................................................... 21
6.2.2 Protoboard .................................................................................................................... 22
6.2.3 Jumpers ......................................................................................................................... 22
6.2.4 Display LCD .................................................................................................................. 22
1 Computao
A computao pode ser definida como a busca de uma soluo para um problema a
partir de entradas (inputs) e tem seus resultados (outputs) depois de trabalhada
atravs de um algoritmo. com isto que lida a teoria da computao, subcampo da
cincia da computao e da matemtica. Durante milhares de anos, a computao
foi executada com caneta e papel, ou com giz e ardsia, ou mentalmente, por vezes
com o auxlio de tabelas ou utenslios artesanais.
A partir da segunda metade do sculo XX, com o advento dos computadores
eletrnicos, a Computao passou a ter uma presena cada vez mais marcante na
sociedade, influenciando a vida diria de parte da populao mundial. A partir da
dcada de 1950, a Computao ganhou o status de Cincia surgindo ento o termo
cincia da computao, uma rea do conhecimento humano hoje fortemente ligado
produo de software.
2 Open Source
O termo cdigo aberto, ou open source em ingls, foi criado pela OSI (Open Source
Initiative)
refere-se
software
tambm
conhecido
por
software
livre.
Software
Foundation,
compartilhadas
tambm
pelo
projeto
Debian,
3 Open Hardware
4 Arduino
4.1 Hardware
4.2 IDE
O Arduino IDE uma aplicao multiplataforma escrita em Java na qual derivada
dos projetos Processing e Wiring.[18][22] esquematizado para introduzir a
programao a artistas e a pessoas no familiarizadas com o desenvolvimento de
software. Inclui um editor de cdigo com recursos de realce de sintaxe, parnteses
correspondentes e identao automtica, sendo capaz de compilar e carregar
programas para a placa com um nico clique. Com isso no h a necessidade de
editar Makefiles ou rodar programas em ambientes de linha de comando.[8][23]
Tendo uma biblioteca chamada "Wiring", ele possui a capacidade de programar em
C/C++. Isto permite criar com facilidade muitas operaes de entrada e sada, tendo
que definir apenas duas funes no pedido para fazer um programa funcional:[18]
setup() Inserida no inicio, na qual pode ser usada para inicializar configurao, e
loop() Chamada para repetir um bloco de comandos ou esperar at que seja
desligada.
Habitualmente, o primeiro programa que executado tem a simples funo de piscar
um LED.
5 Arduino UNO
O Arduino Uno uma placa de microcontrolador baseado no ATmega328
(datasheet). Ele tem 14 pinos de entrada/sada digital (dos quais 6 podem ser
usados como sadas PWM), 6 entradas analgicas, um cristal oscilador de 16MHz,
uma conexo USB, uma entrada de alimentao uma conexo ICSP e um boto de
reset.
Ele
contm
todos
os
componentes
necessrios
para
suportar
Dois outros pinos adicionados prximos ao RESET, o IOREF que permite aos
shields se adaptarem voltagem fornecida pela placa. No futuro os shields
sero compatveis tanto com as placas que utilizam o AVR e operam a 5V,
como com o ARduino Due que operar a 3,3V. O segundo pino no est
conectado e resrvado para propsitos futuros.
5.1 Caractersticas
Microcontrolador
ATmega328
Voltagem Operacional
5V
7-12V
6-20V
40 mA
50 mA
Flash Memory
32 KB (ATmega328
SRAM
2 KB (ATmega328)
EEPROM
1 KB (ATmega328)
Velocidade de Clock
16 MHz
Thalis Antunes www.thalisantunes.com.br | 13
5.2 Alimentao
O arduino Uno pode ser alimentado pela conexo USB ou com uma fonte de
alimentao externa. A alimentao selecionada automaticamente.
Alimentao externa (no USB) pode ser tanto de um adaptador CA para CC ou
bateria. H um conector para alimentao de 2,1mm com o positivo no centro.
Cabos vindos de uma bateria podem ser inseridos diretamente nos pinos Gnd e Vin
do conector de alimentao.
Esta placa pode funcionar com uma fonte de alimentao externa de 6 a 20 volts. No
entanto se a alimentao for inferior a 7V, o pino 5V pode fornecer menos de cinco
volts e a placa pode se mostrar instvel. E se a aliemtao for maior do que 12V o
regulador de voltagem pode superaquecer e danificar a placa. A faixa recomendada
de 7 a 12 volts.
Os pinos de alimentao so os seguintes:
VIN. A entrada de alimentao para a placa Arduino quando se est utilizando uma
fonte de alimentao externa. (em oposio conexo USB ou outra fonte de
aliemteo regulada). Voc pode fornecer alimentao atravs deste pino, ou se
estiver utilizando o conector de alimentao acessar esta voltagem aqui.
5V. A fonte de alimentao regulada usada para o microcontrolador e para outros
componentes na placa. Pode vir tanto do VIN atravs do regulador embarcado ou da
conexo USB ou outra fonte regulada em 5V.
3V3. Uma fonte de 3,3V gerada pelo regulador embarcado. A corrente mxima
suportada de 50mA.
GND. Pinos terra.
5.3 Memria
O ATmega328 tm 32KB (dos quais 0,5 so utilizados pelo bootloader). Tambm
tem 2KB de SRAM e 1KB de EEPROM (que pode ser lido ou gravado com a
biblioteca EEPROM).
Serial: 0 (RX) e 1 (TX). Usados para receber (RX) e transmitir (TX) dados
seriais TTL. Estes pinos so conectados aos pinos correspondentes do chip
serial USB-para-TL ATmega8U2.
LED: 13. H um LED integrado ao pino digital 13. Quando este pino est no
valor HIGH este LED est aceso, quando o pino est em LOW o LED est
apagado.
Reset. Envio o valor LOW para esta linha para resetar o microcontrolador.
Tipicamente usado para adcionar um boto de de reset para shileds
montados sobre a placa original.
O Uno tem 6 entradas analgicas, etiquetadas de A0 a A5, cada uma tem 10 bits de
resoluo (i.e. 1024 valores diferentes). Por padro elas medem de 0 a 5V, embora
seja possvel alterar o limite superior utilizando o pino AREF e a funo
analogReference().
5. 5 Comunicao
O Arduino Uno possui uma srie de facilidades para se comunicar com um
computador, outro Arduino, ou outros microcontroladores. O ATmega328 fornece
comunicao serial UART TTL (5V) que est disponvel nos pinos digitais 0 (RX) e 1
(TX). Um ATmega8U2 na placa canaliza esta comunicao para a USB e aparece
como uma porta virtual para o software no computador. O firmware do '8U2 utiliza os
drivers padro USB COM e nenhum driver externo necessrio. Entretanto, no
Windows, um arquivo .inf necessrio. Ainda faltam as instrues especficas mas
em breve estaro disponveis. O software do Arduino inclui um monitor serial que
permite dados textuais ser enviados e recebidos da placa. LEDs conectados ao RX
e TX piscaro enquanto dados estiverem sido transmitidos pelo chip USB-para-serial
e pela conexo USB (mas no para comunicao serial nos pinos 0 e 1).
Uma biblioteca de SoftwareSerial permite comunicao serial em qualquer dos pinos
digitais do Uno.
O ATmega328 tambm suporta comunicao I2C (TWI) e SPI. O software do
Arduino inclui uma biblioteca Wire para simplificar o uso do bus I2C, veja a
documentao para mais detalhes. Para comunicao SPI utilize a biblioteca SPI.
5.6 Programao
O Arduino Uno pode ser programado com o software Arduino (download).
Simplismente selecione "Arduino Uno" no menu Tools > Board.
O ATmega328 no Arduino Uno vem pr-gravado com um bootloader que permite a
voc enviar cdigo novo para ele sem a utilizao de um programador de hardware
externo. Ele se comunica utilizando o protocolo original STK500 (referencia, arquivos
C header).
Thalis Antunes www.thalisantunes.com.br | 16
O Uno contem uma trilha que pode ser interrompida (cortada fisicamente) para
desabilitar o auto-reset. Os conectores de cada lado da trilha podem ser soldados
para reabilitar esta funo. Ela est identificada como "RESET-EN". Voc tambm
pode desabilitar o auto-reset conectando um resistor de 110 do 5V linha de reset,
veja este tpico do frum para mais detalhes.
5.10 Shields
6 Starter Kit
6.2 Itens
6.2.2 Protoboard
Figura 7 - Protoboard
6.2.3 Jumpers
6.2.6 Resistores
6.2.6.1 Resistor 10 K
6.2.7 LEDs
8 Prticas
8.1 Analog
8.1.1 Input
8.1.1.1 Potentiometer
Figura 30 - Protoboard
Figura 32 - PCB
Cdigo Fonte:
int sensorPin = A0; // select the input pin for the potentiometer
int ledPin = 13;
// select the pin for the LED
int sensorValue = 0; // variable to store the value coming from the sensor
void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
// turn the ledPin on
digitalWrite(ledPin, HIGH);
// stop the program for <sensorValue> milliseconds:
delay(sensorValue);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <sensorValue> milliseconds:
delay(sensorValue);
}
8.2 Digital
8.2.1 Input
8.2.1.1 Button
Figura 33 - Protoboard
Figura 34 - PCB
Figura 35 - Esquemtico
Cdigo Fonte:
int ledPin = 13;
int inputPin = 2;
int val = 0;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(inputPin, INPUT);
}
void loop(){
val = digitalRead(inputPin); // read input value
Serial.println(val);
if (val == HIGH) {
// check if the input is HIGH
digitalWrite(ledPin, LOW); // turn LED OFF
} else {
digitalWrite(ledPin, HIGH); // turn LED ON
}
}
8.2.2 Output
8.2.2.1 Blink
Figura 36 - Protoboard
Figura 37 - Esquemtico
Figura 38 - PCB
Cdigo Fonte:
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000);
// wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000);
// wait for a second
}
8.2.2.2 Loop
Figura 39 - Protoboard
Figura 40 - Esquemtico
Figura 41 - PCB
Cdigo Fonte
int timer = 100;
// The higher the number, the slower the timing.
int pins[] = { 2, 3, 4, 5, 6, 7 }; // an array of pin numbers
int num_pins = 6;
// the number of pins (i.e. the length of the array)
void setup()
{
int i;
for (i = 0; i < num_pins; i++) // the array elements are numbered from 0 to num_pins - 1
pinMode(pins[i], OUTPUT);
// set each pin as an output
}
void loop()
{
int i;
for (i = 0; i < num_pins; i++) { // loop through each pin...
digitalWrite(pins[i], HIGH); // turning it on,
delay(timer);
// pausing,
digitalWrite(pins[i], LOW); // and turning it off.
}
for (i = num_pins - 1; i >= 0; i--) {
digitalWrite(pins[i], HIGH);
delay(timer);
digitalWrite(pins[i], LOW);
}
Figura 42 - Protoboard
Figura 43 - Esquemtico
Figura 44 - PCB
Cdigo Fonte:
int carRed = 12;
int carYellow = 11;
int carGreen = 10;
int pedRed = 9;
int pedGreen = 8;
8.3 Light
8.3.1 Display
8.3.1.1 PrintData
Figura 45 - Protoboard
Figura 46 - Esquemtico
Figura 47 - PCB
Cdigo Fonte:
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
8.3.2 Led
Figura 48 - Protoboard
Figura 49 - Esquemtico
Figura 50 - PCB
Cdigo Fonte
int sensorPin = A3; // select the input pin for the potentiometer
int ledPin = 3;
// select the pin for the LED
int sensorValue = 0; // variable to store the value coming from the sensor
void setup() {
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
// turn the ledPin on
digitalWrite(ledPin, HIGH);
// stop the program for <sensorValue> milliseconds:
delay(sensorValue);
// turn the ledPin off:
digitalWrite(ledPin, LOW);
// stop the program for for <sensorValue> milliseconds:
delay(sensorValue);
}
Figura 51 - Protoboard
Figura 52 - Esquemtico
Figura 53 - PCB
Cdigo Fonte:
int LEDGreen=9;
int LEDBlue=10;
int LEDRed=11;
int sensorPin=0;
int val;
void setup(){
Serial.begin(9600);
pinMode(LEDRed,OUTPUT);
pinMode(LEDGreen,OUTPUT);
pinMode(LEDBlue,OUTPUT);
}
void loop(){
val=map(analogRead(sensorPin),0,1024,0,900);
Serial.println(val);
if (val<150) {
analogWrite(LEDRed,0);
analogWrite(LEDBlue,255);
analogWrite(LEDGreen,255);
} else if (val<300) {
8.4 Sensors
8.4.1 Temperature
Figura 54 - Protoboard
Figura 55 - Esquemtico
Figura 56 - PCB
Cdigo Fonte:
float temperature;
int sensorPin = 0;
int startTemp=20;
void setup()
{
Serial.begin(9600);
for (int i=2;i<8; i++){
pinMode(i,OUTPUT);
}
}
void loop()
{
temperature = analogRead(sensorPin); // reading analog sensor value
temperature = temperature*0.488;
// correcting to C
8.5 Sound
8.5.1 Melody
Figura 57 - Protoboard
Figura 58 - Esquemtico
Figura 59 - PCB
Cdigo Fonte:
int speakerPin = 11;
int length = 15; // the number of notes
char notes[] = "ccggaagffeeddc "; // a space represents a rest
int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 };
int tempo = 300;
void playTone(int tone, int duration) {
for (long i = 0; i < duration * 1000L; i += tone * 2) {
digitalWrite(speakerPin, HIGH);
delayMicroseconds(tone);
digitalWrite(speakerPin, LOW);
delayMicroseconds(tone);
}
}