Aprenda a programar o Arduino – Parte 3

Estamos chegando à terceira Parte desse tutorial, hoje começaremos a trabalhar com o arduino ligado a algum hardware e advinha … vamos piscar leds….

Antes de ligarmos qualquer coisa no Arduíno é interessante sabermos um pouco sobre suas características elétricas, aqui vai o datasheet do Arduino Mega 1280 para outros modelos  basta procurar no http://arduino.cc.

Então sabemos que o máximo de corrente que o arduino pode suportar em cada pino é de cerca de 40mA.  Os datasheets que encontrei informam que para uma voltagem de 5v os leds de 5mm  trabalham em média com 40mA.

Não necessariamente a porta do seu arduíno irá queimar se você ligar por exemplo 2 leds em uma mesma porta mas isso não e recomendavel a não ser que você queira correr riscos.

O Led e um componente polarizado portanto não deve ser ligado invertido pois pode queimar. Veja a figura abaixo extraída da wikipedia ensinando a polarizar o Led.

LED
Anodo e Catodo do LED

Portanto o Anodo, com a “perna maior” tem de ir numa porta de IO e o Catodo, deve ir numa porta de GND. (Veremos que isso não é obrigatório mais adiante…).

A montagem é bem simples e você pode conferir na foto abaixo

Arduino Blink
Arduino Blink

O Catodo, deve ser ligado ao pino GND e o Anodo ao Pino 13

Então lets coding!!!!

void setup()
{
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
}

void loop()
{
}

Acabamos de ligar o led.

O comando pinMode recebe um valor inteiro, que deve ser igual ao numero da porta (estão impressos no circuito do arduino), e uma flag que informa se ele e de saída (Output), ou entrada (Input), no Arduino Mega 1280

Portas PWM e Digital
Portas PWM e Digital

as portas PWM* e Digital utilizam o comando digitalWrite que tambem recebe dois parametros o primeiro e um numero inteiro que é o numero da porta e o segundo e se ela esta alta ou baixa (0 ou 1).

Esse programa tambem pode ser reescrito da seguinte forma:

void setup()
{
pinMode(13, OUTPUT);
digitalWrite(13, 1);
}

void loop()
{
}

Podemos passar a informação da porta por uma variavel:

int pino = 13;
void setup() {
pinMode(pino, OUTPUT);
digitalWrite(pino, HIGH);
}

void loop()
{
}

E claro sempre podemos otimizar o código eliminando o sinal e colocando como uma constante alterando a linha:

int pino = 13;

Para:

const unsigned int pino = 13;

Agora vamos brincar criando um objeto chamado led.

class led  {
private:
int pino;
int estado;
public:
void desliga_led();
void liga_led();
void set_pino(int);
};

void led::set_pino(int i) {
pino = i;
pinMode(pino, OUTPUT);
}

void led::desliga_led(){
estado=0;
digitalWrite(pino,estado);
}
void led::liga_led(){
estado=1;
digitalWrite(pino,estado);
}

void setup() {
led l1;
l1.set_pino(13);
l1.liga_led();
}

void loop(){ }

Aos não iniciados em programação orientada a objetos eu sugiro uma pausa pro café tirar os sapatos, relaxar e ler o seguinte link:

http://www.dca.fee.unicamp.br/cursos/POOCPP/node3.html

Vamos começar a analisar o código:

  class led  {
private:
int pino;
int estado;
public:
void desliga_led();
void liga_led();
void set_pino(int);
};

O trecho destacado em cima, define como a classe vai ser. Quais são os seus metodos e variaveis. Nele vemos duas distinçoes claras private: e public: , tudo que estiver dentro de private, só pode ser alterado ou manipulado por algo que esteja dentro da classe. Tudo que esta dentro de public pode ser acessado externamente.

No nosso exemplo declaramos as variáveis pino e estado como variáveis privadas, ou seja só podem ser acessadas por métodos que estiverem dentro da classe.

Já na divisão public declaramos os metodos desliga_led() liga_led() e set_pino() mas não programamos essas ffunçoes veja que até o momento não haviamos programado de fato essas funções.

void led::set_pino(int i) {
pino = i;
pinMode(pino, OUTPUT);
}

No trecho acima vimos a função set_pino, o leitor poderá perceber, que estamos configurando o pino i como saída, esse i vai ser passado outra parte do código quando chamarmos a função.As outras funções seguem um padrão semelhante.

O que fizemos na verdade é criar um método para cada tarefa. O que a príncipio parece muito difícil e de pouca utilidade visto que o mesmo código somente aumentou de tamanho e não de utilidade, mas veremos adiante o quanto isso pode ser útil. Mas atente que ao utilizar esse tipo de programação seu código ocupara mais espaço em físico.

Criando nossa própria biblioteca para um LED

P*** o cara vai ensinar a criar uma biblioteca, e ainda nem explicou direito como funciona um if!? No Arduíno a programação e voltada para interação com o ambiente. Simplesmente com seus comandos básicos isso se torna muito dificil, já existem diversas bibliotecas criadas para o Arduíno, elas extedem as funções dele para  trabalhar com cartões SD, Motores, Blue Tooth, Sim Cards.. ou seja uma infinidade de coisas. Porém muita gente ao dar #include não sabe nem o que esta fazendo, na parte 4 deste tutorial eu pretendo explicar o funcionamento de um cartão de memória e criarmos algumas aplicações interessantes com ele, portando e interessante que o leitor entenda como funciona uma biblioteca de funçoes, até mesmo para localizar seus métodos sem conhecer ela a fundo ou ter de recorrer a alguma documentação.

Então let’s go.

Eu utilizei o Notepad++ mas você pode usar o que quiser, notepad, wordpad, geany, devc++, eclipse c,vi… Ou qualquer outro editor.

Primeiro devemos criar um arquivo de header que no nosso caso vai se chamar amcled.h esse arquivo deve conter o codigo abaixo

#ifndef amcled_h
#define amcled_h

#include “Arduino.h”

class led
{
private:
int pino;
int estado;
public:
void desliga_led();
void liga_led();
void set_pino(int);
void blk(int);
};
#endif

Depois devemos criar um arquivo chamado amcled.cpp

#include “Arduino.h”
#include “amcled.h”

void led::set_pino(int i)
{
pino = i;
pinMode(pino, OUTPUT);
}

void led::desliga_led(){
estado=0;
digitalWrite(pino,estado);
}
void led::liga_led(){
estado=1;
digitalWrite(pino,estado);
}
void led::blk(int time){
liga_led();
delay(time);
desliga_led();
delay(time);
}

Você precisa agora criar um arquivo que vai destacar os comandos que você criou ao digita-los (colocar eles em laranja na IDE do arduino). esse arquivo deve se chamar keywords.txt

desliga_led KEYWORD1
liga_led    KEYWORD2
set_pino    KEYWORD3
blk            KEYWORD4

Agora você deve criar uma pasta chamada amcled dentro da pasta libraries do Arduino conforme abaixo, e colar dentro dela todos os arquivos que criamos:

Biblioteca de Led
Biblioteca de Led

Depois disso só precisamos abrie e fechar a IDE do arduíno e já poderemos usar a nossa biblioteca.

Biblioteca amcled pronta para o uso
Biblioteca amcled pronta para o uso

 

Agora vamos reescrever o último programa que fizemos utilizando a nossa biblioteca:

#include <amcled.h>
void setup() {
led l1;
l1.set_pino(13);
l1.liga_led();
}

void loop(){ }

Ainda pode parecer que o código ficou maior que o primeiro mas vamos prosseguir para o exemplo do led Blink do site do Aduino disponivel em:

 /*
* Created 1 June 2005
* copyleft 2005 DojoDave <http://www.0j0.org>
* http://arduino.berlios.de
*
* based on an orginal by H. Barragan for the Wiring i/o board
*/

int ledPin = 13;

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

void loop()
{
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}

O programa acima faz com que o led pisque a cada 1s, pois ele alterna o estado do pino 13 utilizando digitalWrite. Veja eles reescrito com a nossa lib.

/*
* Criado em 18 de Fevereiro de 2012
* copyleft 2012 – Copie e distribua =]
* http://amcollucci.com.br
*
* based on an orginal by H. Barragan for the Wiring i/o board
*/
#include <amcled.h>

led l1;
void setup()
{
l1.set_pino(13);
}

void loop()
{
l1.liga_led();
delay(1000);
l1.desliga_led();
delay(1000);
}

 

Nada muito diferente não é?

Então veja o seguinte codigo: =]

#include <amcled.h>

led l1;
void setup(){
l1.set_pino(13);
}
void loop(){
l1.blk(1000);
}

 

Bom acho que consegui apresentar com sucesso o Led Blink com delay, da maneira mais completa que pude. Durante os proximos tutoriais pretendo avançar ainda mais em alguns itens que toquei durante essa parte.

 

Então até a próxima

*Obs.:Os pinos PWM possuem ainda outras características.

 

Aprenda a programar o Arduino – Parte 2

Quando estava montando um braço mecânico na faculdade precisei de usar algumas estruturas que não rodassem em loop, me deparei com a pergunta como faço para executa-las fora do loop do Arduino sendo que ele trata essa função como se fosse uma main() (por ser obrigatória) do C (dummies abaixo eu explico melhor ok 😉 )

No Arduino o programa começa a ser executado pela função Setup(). Depois de concluído ele procura a função loop() e inicia sua execução, o que eu fiz e vou mostrar nesse post e como interromper o fluxo e apontar uma função que você criou para ser executada. É extremamente simples, pode até parecer boçal… Mas eu passei algumas boas horas para ter a epifania, pois ao imaginar o codigo do arduíno ele parece tratar a setup como se fosse uma função para configurar o mesmo, mas na verdade dentro do proprio loop, você pode setar um pino, dar um atach numa interrupção etc…

****************************************************************************************************************************

Observe que não deixamos de executar o loop como bem observado pelo bubulindo no forum do Arduino, como vocês podem conferir a discussão no link abaixo:

http://arduino.cc/forum/index.php/topic,93283.0.html

* Trechos em negrito inseridos para corrigir erro na publicação original

****************************************************************************************************************************

Então vejamos o seguinte código:

void setup(){

Serial.begin(9600);

naoqueroloop();

}

void loop(){

}

void naoqueroloop(){

Serial.print(“Estou fora do loop”);

}

Se você executou corretamente quando abrir o Serial monitor obterá a seguinte tela.

Saída Serial Monitor Arduíno
Saída Serial Monitor Arduíno

Sem o meu logo é claro… Agora veja como o programa seria executado se não houvessemos criado essa função:

void setup(){

Serial.begin(9600);

}

void loop(){
Serial.print(“Estou dentro do loop \n”);

}

O código acima gera a seguinte saída:

Saida Serial monitor loop()
Saida Serial monitor loop()

Bom já que estamos aqui não vou gastar o post apenas explicando isso. Vamos falar um pouco tambem sobre funções. Funções servem para agrupar comandos que juntos fazem alguma tarefa.

Veja a definição segundo o Site do curso de C da UFSC :  “Uma função é um bloco de código de programa que pode ser usado diversas vezes em sua execução. O uso de funções permite que o programa fique mais legível, mais bem estruturado. Um programa em C consiste, no fundo, de várias funções colocadas juntas. ”

O corpo de uma função e composto pelo tipo de retorno, nome da funçao, parametros, chaves de inicio e fim da função, e comandos..

tipo nome_funcao (parametros) {

comando_1;

comando_2;

}

Funçoes podem ter o tipo void, int, float e qualquer outro que uma váriavel possa receber, nos exemplos anteriores vimos vários exemplos de funçoes do tipo “void” , esse tipo de função não retorna nenhum valor, ou seja apos ser chamada ela cumpre sua função e não devolve nenhum resultado para o programa.

Para esclarecer melhor vejamos uma função do tipo int.

void setup(){

Serial.begin(9600);

}

void loop(){

int numero1=8;
int numero2=10;
int resultado=soma(numero1,numero2);
Serial.print(resultado);
Serial.print(“\n”);
delay(1000);
}

int soma(int a, int b){
int c;
c=a+b;
return c;
}

No programinha acima, temos uma função chamada soma(), essa função e do tipo int, e tem dois parametros, a e b, do tipo inteiro ou em inglês integer. Dentro dessa função foram declaradas 3 variaveis a,b,c duas delas tem seu valor obtido através da passagem de parametros soma(numero1,numero2) nesse momento o valor de a e b passam a ser os mesmos de numero1 e numero2, logo abaixo a variável c recebe o valor da soma de a e b esse valor é retornado atraves do comando return c; Já no loop() a variável resultado recebe o valor de retornado pela função soma().

Até agora tá tranquilo não é?

Então dá uma olhada nesse programa e tentem entender, tem muita coisa que eu não expliquei ainda mas é bom pra dar uma exercitada, e tambem para quem já tem algum conhecimento, o programa a seguir imprimi no serial monitor o triângulo de pascal.

/*
Codigo Exemplo Triangulo de Pascal

*****************************************************************
Aprenda a programar o Arduino – Primeiros Passos

Autor: Anthony Collucci
Data: 12/02/2012

Esse algoritmo não foi otimizado
*****************************************************************
*/

/* sendo k o numero da coluna e n o numero da linha*/
int k,n;

/*
criaremos uma matriz de 20 por 20 para armazenar os valores
o que nos dará 400 numeros na memoria!!!!
*/

int numero [19][19];

void setup(){

Serial.begin(9600);
zera_variaveis();
pascal();
}

void loop(){
}

void pascal (){

/*inia o calculo pela linha 1 coluna 1*/
k=n=1;
numero [n][k]=1;
Serial.print(numero [n][k]);
Serial.print(“\n”);

for (n=2;n<19;n++){
for (k=1;k<=n;k++){
numero [n][k] = efetua_calculo();
Serial.print(numero [n][k]);
Serial.print(”  “);
delay(100);
}
Serial.print(“\n”);
}

}

int efetua_calculo(){
int resultado;

if (numero[n-1][k]==0){
resultado = numero [n-1][k-1];
return resultado;
}
if (numero[n-1][k-1]==0){
resultado = numero [n-1][k];
return resultado;
}

if (numero[n-1][k-1]!=0 && numero[n-1][k]!=0){
resultado = numero [n-1][k-1] + numero [n-1][k];
return resultado;
}
return 0;
}

void zera_variaveis(){

/* Fui obrigado a criar essa funçao pois ao criar as variaveis
elas vem com um valor aleatorio, lembrando que a matriz começa
no indice 0 mas estamos facilitando as coisas

*/
for (n=1;n<19;n++){
for (k=0;k<19;k++){
numero[n][k]=0;
}
}
}

Aqui você vê a saída deste programa:

Triângulo de Pascal - Arduíno
Triângulo de Pascal - Arduíno

Fico por aqui até a próxima!

Aprenda a programar o Arduino – Parte I

Esse será o primeiro post de uma série onde pretendo ensinar a programar o Arduino. Esse tutorial leva em conta que você ja tenha instalado e configurado a ide do Arduino na sua máquina e que você já saiba ao menos o qué é o Arduino, algum conhecimento prévio de programação e bem vindo!

Primeiro programa no Arduino

Vamos fazer agora um programa que não serve literalmente para nada!  Simplesmente vamos ver o que é obrigatório para o código poder roda veja abaixo:

/*                               Codigo Exemplo Numero 1*****************************************************************
Aprenda a programar o Arduino – Primeiros PassosAutor: Anthony Collucci
Data: 04/02/2012
******************************************************************/
void setup(){
  /* O setup é uma estrutura obrigatória, ele é utilizado para definirmos a
função (i/o) dos pinos do Arduino, serve tambem para inicializarmos
algumas bibliotecas.   */
}
 
void loop(){
  /* O loop tambem e uma estrutura obrigatória, ele executa o codigo
entre {} em ciclos infinitos e repetitivos.  */
}

No exemplo acima utilizamos as duas estruturas básicas Setup() e Loop() que são duas funções como veremos mais adiante. O texto entre “/* */” é simplesmente um comentário ele não afeta em nada a execução do programa, é interessante que o comentário exista para facilitar a leitura e manutenção do código, mas deve -se evitar seu uso em excesso para não diminuir a legibilidade do código com muitas quebras. Isso aí e uma coisa que você vai adquirindo com o tempo!!!

Quando você compilar deve receber um resultado como esse:

Binary sketch size: 674 bytes (of a 126976 byte maximum)

Esse resultado indica qual o tamanho do arquivo e que ele foi compilado com sucesso.

Repare que se você utilizar o seguinte codigo:

void setup(){
}
void loop(){
}

O tamanho do arquivo gerado será o mesmo indicando que os comentários são ignorados após a compilação. Agora atente para o codigo abaixo digite-o e compile:

Void setup(){
}
Void loop(){
}
 

O seguinte erro será exibido:

sketch_feb04a:-1: error: ‘Void’ does not name a type
sketch_feb04a:0: error: ‘Void’ does not name a type
sketch_feb04a:1: error: ‘Void’ does not name a type
sketch_feb04a:5: error: ‘Void’ does not name a type

Isso indica que o “Void” não e um tipo válido para uma váriavel ou função, isso ocorre porque a linguagem usada no arduino e baseada no c/c++ que são linguagens case sensitive.

Começando a brincar com variáveis e comunicação serial

Em todo tutorial de Arduíno que encontram o primeiro exemplo é o do Led Blink, porém acho uma abordagem totalmente inútil, pois ela realmente não ensina nada… Vou começar por outro caminho. Vamos iniciar a comunicação serial e escrever o conteudo de uma váriavel na no console.

Digite esse codigo em sua IDE:

/*
Codigo Exemplo Numero 2

*****************************************************************
Aprenda a programar o Arduino – Primeiros Passos

Autor: Anthony Collucci
Data: 04/02/2012

*****************************************************************
*/
void setup(){
//Inicia a comunicação serial a 9600 bauds
Serial.begin(9600);

}

void loop(){
// Envia a string “Aprendendo a programar no arduino” para a console
Serial.print(“Aprendendo a programar no arduino”);
}

Agora acesse a serial monitor conforme a figura abaixo:

Arduino Serial Monitor
Abrindo o Serial Monitor- Opening the Serial Monitor

O resultado como se segue e uma sucessão de impressões da string “Aprendendo a programar no arduino”. Vimos que iniciamos a comunicação serial através do comando serial.begin(9600) que colocamos dentro do setup(){} . O  valor de 9600 pode variar dependendo da sua aplicação veja mais sobre velocidade da porta serial nesse post:

http://www.tech-faq.com/difference-between-bit-rate-and-baud-rate.html

O comando Serial.print(“string aqui”) que faz com que a informação seja impressa no serial monitor. Adiante veremos outros exemplos do uso do Serial.print, mas por ora quero que reparem que todo comando que não constroí um bloco (não tem “chaves” como o setup e o loop) ou então que não e uma diretiva de pré-processador (#include, #define que veremos adiante tambem)  termina com ponto e vírgula, isso indica o fim do comando.

Digite agora o código abaixo, e veremos um exemplo de uso de váriavel:

/*
Codigo Exemplo Numero 3

*****************************************************************
Aprenda a programar o Arduino – Primeiros Passos

Autor: Anthony Collucci
Data: 04/02/2012

*****************************************************************
*/

/* Podemos declarar uma variavel por linha */
int a;
int b;

/* Ou podemos declarar diversas variaveis por linha */
int c,d;

void setup(){
//Inicia a comunicação serial a 9600 bauds
Serial.begin(9600);
a = 2;
b = 3;
}

void loop(){
// Observe o \n ele e um escape de new line, ou seja muda a linha
Serial.print (“Aprendendo a programar no Arduino \n”);
/* Veja como e facil fazer operações com o arduino, as variaveis
c e d receberao os valores da soma e multiplicação de a e b.*/
c=a+b;
d=a*b;
/* depois de efetuado o calculo imprimimos o valor na console */
Serial.print (“O valor da soma de a e b é: “);
Serial.print (c);
Serial.print (“\n”);
Serial.print (“O valor da multiplicação de a e b é: “);
Serial.print (d);
Serial.print (“\n”);
delay (1000);
}

Agora começamos a complicar um pouquinho mais o nosso código =]. Mas o que fizemos e muito simples criamos 4 variaveis a,b,c,d que são do tipo int ou seja podem receber números inteiros. Depois dentro do setup iniciamos a comunicação serial e atribuimos valores para as variaveis a e b. Dentro do loop, nós realizamos a operação de soma de “a” e “b” e colocamos o resultado na variável “c” depois realizamos a operação de multiplicação da váriavel “a” e “b” e colocamos na variavel “d”, por ultimo usamos o Serial.print e imprimimos o resultado na console. O comando delay (1000) faz com que haja um espera de um segundo entre uma repetição e outra.

Boas práticas…

Vamos agora dar uma olhada em alguns trechos do código e torna-los mais “profissional”. Nesse post só vou tratar da diminuição do tamanho do programa realizando o tratamento de variáveis e tornando assim o codigo mais limpo rápido e menor.

No exemplo 3 a IDE nos retorna a seguinte mensagem:

Binary sketch size: 4326 bytes (of a 126976 byte maximum)

Agora vamos analisar alguns trechos do código e realizar alterações.

As seguintes linhas:

/* Podemos declarar uma variavel por linha */
int a;
int b;

/* Ou podemos declarar diversas variaveis por linha */
int c,d;

serão alteradas para

/* Declaração de constantes */

const unsigned int a = 2;
const unsigned int b = 3;

/* Declaração de variáveis. */

int c,d;

e as seguintes linhas serão deletadas:

a = 2;
b = 3;

Por quê realizamos essas alterações? Simples, você deve ter notado que os valores de “a” e “b” nesse código são constantes ou seja não se alteram durante a execução do programa, então não deixamos um espaço de memória alocada para uma variável do tipo int, simplesmente declaramos diretamente seu valor. O comando “const” declara ela como constante. E como no exemplo o sinal dos operadores não influencia ja que são ambos positivos, nos suprimimos ele com o “unsigned”.

Quando voce compilar vair obter o seguinte resultado:

Binary sketch size: 4274 bytes (of a 126976 byte maximum)

Economizamos 52 bytes  vamos prosseguir. No exemplo abaixo ja fazemos algumas alterações substanciais no código:

/*
Codigo Exemplo Numero 3.1

*****************************************************************
Aprenda a programar o Arduino – Primeiros Passos

Autor: Anthony Collucci
Data: 04/02/2012

*****************************************************************
*/

/* declaramos as constantes */
const unsigned int a = 2;
const unsigned int b = 3;

/*declarmos a variavel resultado*/
unsigned int res;

void setup(){
//Inicia a comunicação serial a 9600 bauds
Serial.begin(9600);

}

void loop(){
// Observe o \n ele e um escape de new line, ou seja muda a linha
Serial.print (“Aprendendo a programar no Arduino \n”);
/* Veja como e facil fazer operações com o arduino, as variaveis
c e d receberao os valores da soma e multiplicação de a e b.*/

//imprimimos primeiro o valor da soma
res=a+b;
Serial.print (“O valor da soma de a e b é: “);
Serial.print (res);
Serial.print (“\n”);
//depois o valor da multiplicação
res=a*b;
Serial.print (“O valor da multiplicação de a e b é: “);
Serial.print (res);
Serial.print (“\n”);
delay (1000);
}

Reduzir o numero de váriaveis não reduziu o código, mas aplicar o “unsigned” foi efetivo. A vantagem de diminuir as váriaveis e que seu codigo usa menos memória ram. Agora o resultado foi esse:

Binary sketch size: 4172 bytes (of a 126976 byte maximum)

Acabamos de economizar 154 bytes.

Por ultimo reduzindo o escopo das variaveis conseguimos reduzir ainda mais o tamanho do código:

Retiramos as linhas abaixo que estavam acima do setup(){}

/* declaramos as constantes */
const unsigned int a = 2;
const unsigned int b = 3;

/*declarmos a variavel resultado*/
unsigned int res;

E recolocamos dentro do loop:

void loop(){
/* declaramos as constantes */
const unsigned int a = 2;
const unsigned int b = 3;

/*declarmos a variavel resultado*/
unsigned int res;

O novo resultado foi:

Binary sketch size: 4140 bytes (of a 126976 byte maximum)

Ou seja conseguimos 182 bytes de redução no código. Essa técnica é bem criticada por muitos programadores, já houve um caso que quase fui crucificado aqui no blog, e o assunto foi tão polêmico que preferi retirar a matéria. Mas ela é uma técnica muito válida quando temos um projeto complexo a ser feito no Arduino, normalmente em projetos complexos temos de incluir várias bibliotecas, que por si só ja impactam o tamanho do programa, não precisamos então agravar isso criando programas ruins!

Bom em breve postarei a continuação desse post. Espero que ele tenha sido útil!

Att,
Anthony Collucci

Manifesto Pirata

Na verdade antes de tudo gostaria de dizer que não sou ou não era a favor da pirataria, pois sempre pensava nos empregos dos artistas e tudo isso. Mas devido a SOPA ACTA PIPA e , com o perdão da palavra, a puta que pariu da sigla que vier agora. Resolvi divulgar o manifesto e trabalho do The Pirate Bay. Ficarei do lado da pirataria até que sjea apresentada uma lei decente. Para lesgilar tanto a internet como os direitos autorais.

Vejam abaixo um e-mail que a Dream works enviou para o The Pirate Bay.

Para quem possa interessar:

Esta carta está sendo escrita para você em nome de nossos
cliente, DreamWorks SKG (doravante denominada “DreamWorks”).
DreamWorks é a proprietária exclusiva de todos os direitos autorais,
marcas registradas e outros direitos de propriedade intelectual
e para o filme “Shrek 2” Ninguém é
autorizado a copiar, reproduzir, distribuir ou
de outra forma utilizar o filme “Shrek 2”, sem
a expressa autorização por escrito da DreamWorks.

Chegou ao nosso conhecimento que o site web
localizado em “http://www.thepiratebay.org” para a qual
você é o prestador do serviço, está reproduzindo,
distribuindo e / ou ofertando para venda o filme “Shrek 2”
. Em anexo estão fotocópias de
páginas representando o site acima mencionado.

DreamWorks tem a convicção de que o uso do
material da forma reclamada não está
autorizada pela DreamWorks, seu representante ou pela lei.
DreamWorks diligentemente impõe seus direitos
ao “Shrek 2” no cinema e em todas as formas de mídia.
O nosso cliente toma legalmente a sua responsabilidade para
a proteção do “2 Shrek” filme muito
a sério.

Como você pode estar ciente, Provedores de Serviço Internet podem
ser responsabilizados se não responderem a reclamações de
infracção nos termos das exigências do
Digital Millennium Copyright Act (DMCA). em
acordo com a DMCA, solicitamos sua ajuda
na remoção de violações ao filme “Shrek 2”
a partir deste site e quaisquer outros sites
para o qual você agir como um provedor de acesso.
Declaramos, sob pena de perjúrio, de que nós
estamos autorizados a agir em nome da DreamWorks e
que as informações nessa carta são verdadeiras.
Entre em contato comigo imediatamente para discutir o assunto
ainda mais.

Nada contido nesta carta constitui um
expressa ou implícita renúncia de quaisquer direitos, recursos ou
defesas da DreamWorks, que são expressamente
reservados.

, Atenciosamente

Dennis L. Wilson
Keats McFarland & Wilson LLP

Abaixo segue a resposta do Pirate Bay:

Como você pode ou não pode estar ciente, a Suécia não é um estado dos Estados Unidos
da América. A Suécia é um país do norte da Europa.
A não ser que entendeu isto agora, a lei dos EUA não se aplica aqui.
Para sua informação, nenhuma lei sueca está a ser violada.Tenha certeza de que qualquer outro contacto com a gente, independentemente do meio,
irá resultar em
a) um processo sendo arquivado por assédio
b) uma denúncia formal apresentada através de seu advogado, para
enviar frívolas ameaças de processo judicial.É de opinião nossa e de nossos advogados que você são ……. imbecis, e
que você deveria por favor sodomizar-se com bastões retráteis.Observe também que o seu e-mail e carta será publicada na íntegra na
http://www.thepiratebay.org.Vá se foder.Educado como de costume,
anakata
Se quiserem rir mais um pouco podem ir aqui: http://thepiratebay.org/legal
 Em momentos como esse (S.O.P.A e P.I.P.A) eu gostaria que o Irã enviasse uma bomba direto na  WhiteHouse… Bom saindo do meu momento devaneio, abaixo vai um post publicado no ThePirateBay que é praticamente um manifesto. Não vou traduzir pois qualquer tradução peca por eliminar a essencia…. E por favor reproduzam o texto, pirateiem copiem, etc…

Over a century ago Thomas Edison got the patent for a device which would “do for the eye what the phonograph does for the ear”. He called it the Kinetoscope. He was not only amongst the first to record video, he was also the first person to own the copyright to a motion picture.

Because of Edisons patents for the motion pictures it was close to financially impossible to create motion pictures in the North american east coast. The movie studios therefor relocated to California, and founded what we today call Hollywood. The reason was mostly because there was no patent.There was also no copyright to speak of, so the studios could copy old stories and make movies out of them – like Fantasia, one of Disneys biggest hits ever.

So, the whole basis of this industry, that today is screaming about losing control over immaterial rights, is that they circumvented immaterial rights. They copied (or put in their terminology: “stole”) other peoples creative works, without paying for it. They did it in order to make a huge profit. Today, they’re all successful and most of the studios are on the Fortune 500 list of the richest companies in the world. Congratulations – it’s all based on being able to re-use other peoples creative works. And today they hold the rights to what other people create. If you want to get something released, you have to abide to their rules. The ones they created after circumventing other peoples rules.

The reason they are always complainting about “pirates” today is simple. We’ve done what they did. We circumvented then rules they created and created our own. We crushed their monopoly by giving people something more efficient. We allow people to have direct communication between eachother, circumventing the profitable middle man, that in some cases take over 107% of the profits (yes, you pay to work for them). It’s all based on the fact that we’re competition. We’ve proven that their existance in their current form is no longer needed. We’re just better than they are.

And the funny part is that our rules are very similar to the founding ideas of the USA. We fight for freedom of speech. We see all people as equal. We believe that the public, not the elite, should rule the nation. We believe that laws should be created to serve the public, not the rich corporations.

The Pirate Bay is truly an international community. The team is spread all over the globe – but we’ve stayed out of the USA. We have Swedish roots and a swedish friend said this: The word SOPA means “trash” in Swedish. The word PIPA means “a pipe” in Swedish. This is of course not a coincidence. They want to make the internet inte a one way pipe, with them at the top, shoving trash through the pipe down to the rest of us obedient consumers. The public opinion on this matter is clear. Ask anyone on the street and you’ll learn that noone wants to be fed with trash. Why the US government want the american people to be fed with trash is beyond our imagination but we hope that you will stop them, before we all drown.

SOPA can’t do anything to stop TPB. Worst case we’ll change top level domain from our current .org to one of the hundreds of other names that we already also use. In countries where TPB is blocked, China and Saudi Arabia springs to mind, they block hundreds of our domain names. And did it work? Not really. To fix the “problem of piracy” one should go to the source of the problem. The entertainment industry say they’re creating “culture” but what they really do is stuff like selling overpriced plushy dolls and making 11 year old girls become anorexic. Either from working in the factories that creates the dolls for basically no salary or by watching movies and tv shows that make them think that they’re fat.

In the great Sid Meiers computer game Civilization you can build Wonders of the world. One of the most powerful ones is Hollywood. With that you control all culture and media in the world. Rupert Murdoch was happy with MySpace and had no problems with their own piracy until it failed. Now he’s complainting that Google is the biggest source of piracy in the world – because he’s jealous. He wants to retain his mind control over people and clearly you’d get a more honest view of things on Wikipedia and Google than on Fox News.

Some facts (years, dates) are probably wrong in this press release. The reason is that we can’t access this information when Wikipedia is blacked out. Because of pressure from our failing competitors. We’re sorry for that. THE PIRATE BAY, (K)2012

Fato e que estamos vivendo num conflito de interesses e nesse momento todos tem de escolher um lado. A minha posição e contra a industria cinematográfica, e televisiva, não somente a globo aqui no Brasil, mas essa industria como um todo.

A fábula dos porcos assados

Li esses dias no Aldeia Numa Boa, um site que gosto muito, a fábula dos porcos assados, reescrita de cabeça por um dos leitores. Achei interessantíssimo e fui buscar um tradução integral. Abaixo vocês podem ver o texto integral.

A Fábula dos Porcos Assados

 

 

Certa vez, aconteceu um incêndio num bosque onde havia alguns porcos, que foram assados pelo fogo. Os homens, acostumados a comer carne crua, experimentaram e acharam deliciosa a carne assada. A partir daí, toda vez que queriam comer porco assado, incendiavam um bosque… até que descobriram um novo método.

Mas o que vamos contar é o que aconteceu quando tentaram mudar o SISTEMA para implantar um novo.

Fazia tempo que as coisas não iam lá muito bem: às vezes os animais ficavam queimados demais ou parcialmente crus.

O processo preocupava muito a todos, porque se o SISTEMA falhava, as perdas ocasionadas eram muito grandes – milhões eram os que se alimentavam de carne assada e também milhões os que se ocupavam com a tarefa de assá-los.

Portanto, o SISTEMA simplesmente não podia falhar. Mas, curiosamente, quando mais crescia a escala do processo, tanto mais parecia falhar e tanto maiores eram as perdas causadas.

Em razão das inúmeras deficiências, aumentavam as queixas. Já era um clamor geral a necessidade de reformar profundamente o SISTEMA. Congressos, seminários, conferências passaram a ser realizados anualmente para buscar uma solução. Mas parece que não acertavam o melhoramento do mecanismo. Assim, no ano seguinte repetiam-se os congressos, seminários, conferências.

As causas do fracasso do SISTEMA, segundo os especialistas, eram atribuídas à indisciplina dos porcos, que não permaneciam onde deveriam, ou à inconstante natureza do fogo, tão difícil de controlar, ou ainda às árvores, excessivamente verdes, ou à umidade da terra, ou ao serviço de informações meteorológicas, que não acertava o lugar, o momento e a quantidade das chuvas…

As causas eram, como se vê, difíceis de determinar. Na verdade, o sistema para assar porcos era muito complexo. Fora montada uma grande estrutura: maquinário diversificado; indivíduos dedicados exclusivamente a acender o fogo – incendiadores que eram também especializados (incendiadores da Zona Norte, da Zona Oeste, etc., incendiadores noturnos e diurnos – com especialização e matutino e vespertino – incendiador de verão, de inverno, etc.). Havia especialista também em ventos – os anemotécnicos. Havia um Diretor Geral de Assamento e Alimentação Assada, um Diretor de Técnicas Ígneas (com seu Conselho Geral de Assessores), um Administrador Geral de Reflorestamento, uma Comissão de Treinamento Profissional em Porcologia, um Instituto Superior de Cultura e Técnicas Alimentícias (ISCUTA) e o Bureau Orientador de Reforma Igneooperativas.

Havia sido projetada e encontrava-se em plena atividade a formação de bosques e selvas, de acordo com as mais recentes técnicas de implantação – utilizando-se regiões de baixa umidade e onde os ventos não soprariam mais que três horas seguidas.

Eram milhões de pessoas trabalhando na preparação dos bosques, que logo seriam incendiados. Havia especialistas estrangeiros estudando a importação das melhores árvores e sementes, fogo mais potente, etc. Havia grandes instalações para manter os porcos antes do incêndio, além de mecanismos para deixá-los sair apenas no momento oportuno.

Foram formados professores especializados na construção dessas instalações. Pesquisadores trabalhavam para as universidades para que os professores especializados na construção das instalações para porcos; fundações apoiavam os pesquisadores que trabalhavam para as universidades que preparavam os professores especializados na construção das instalações para porcos, etc.

As soluções que os congressos sugeriam eram, por exemplo, aplicar triangularmente o fogo depois de atingida determinada velocidade do vento, soltar os porcos 15 minutos antes que o incêndio médio da floresta atingisse 47 graus, posicionar ventiladores-gigantes em direção oposta à do vento, de forma a direcionar o fogo, etc. Não é preciso dizer que os poucos especialistas estavam de acordo entre si, e que cada um embasava suas idéias em dados e pesquisas específicos.

Um dia, um incendiador categoria AB/SODM-VCH (ou seja, um acendedor de bosques especializado em sudoeste diurno, matutino, com bacharelado em verão chuvoso), chamado João Bom-Senso, resolveu dizer que o problema era muito fácil de ser resolvido – bastava, primeiramente, matar o porco escolhido, limpando e cortando adequadamente o animal, colocando-o então sobre uma armação metálica sobre brasas, até que o efeito do calor – e não as chamas – assasse a carne.

Tendo sido informado sobre as idéias do funcionário, o Diretor Geral de Assamento mandou chamá-lo ao seu gabinete, e depois de ouvi-lo pacientemente, disse-lhe:

Tudo o que o senhor disse está muito bem, mas não funciona na prática. O que o senhor faria, por exemplo, com os anemotécnicos, caso viéssemos a aplicar a sua teoria? Onde seria empregado todo o conhecimento dos acendedores de diversas especialidades?

Não sei – disse João!

E os especialistas em sementes? Em árvores importadas? E os desenhistas de instalações para porcos, com suas máquinas purificadores automáticas de ar?

Não sei!

E os anemotécnicos que levaram anos especializando-se no exterior, e cuja formação custou tanto dinheiro ao país? Vou mandá-los limpar porquinhos? E os conferencistas e estudiosos, que ano após ano têm trabalhado no Programa de Reforma e Melhoramentos? Que faço com eles, se a sua solução resolver tudo? Heim?

Não sei – repetiu João encabulado!

O senhor percebe agora que a sua idéia não vem ao encontro daquilo de que necessitamos? O senhor não vê, que, se tudo fosse tão simples, nossos especialistas já teriam encontrado a solução há muito tempo atrás? O senhor com certeza compreende que eu não posso simplesmente convocar os anemotécnicos e dizer-lhes que tudo se resume a utilizar brasinhas, sem chamas! O que o senhor espera que eu faça com os quilômetros e quilômetros de bosques já preparados, cujas árvores não dão frutos e nem têm folhas para dar sombra? Vamos, diga-me.

Não sei, não senhor!

Diga-me, nossos três engenheiros em Porcopirotecnia, o senhor não considera que sejam personalidades científicas do mais extraordinário valor?

Sim, parece que sim!

Pois então. O simples fato de possuirmos valiosos engenheiros em Porcopirotecnia indica que nosso sistema é muito bom. O que eu faria com indivíduos tão importantes para o país?

Não sei!

Viu? O senhor tem que trazer soluções para certos problemas específicos – por exemplo, como melhorar as anemotécnicas atualmente utilizadas, como obter mais rapidamente acendedores de Oeste (nossa maior carência), como construir instalações para porcos com mais de sete andares. Temos que melhorar o sistema, e não transformá-lo radicalmente, o senhor, entende? Ao senhor, falta-lhe sensatez!

Realmente, eu estou perplexo! – respondeu João.

Bem, agora que o senhor conhece as dimensões do problema, não saia dizendo por aí que pode resolver tudo. O problema é bem mais sério e complexo do que o senhor imagina. Agora, entre nós, devo recomendar-lhe que não insista nessa sua idéia – isso poderia trazer problemas para o senhor no seu cargo. Não por mim, o senhor entende. Eu falo isso para o seu próprio bem, porque eu o compreendo, entendo perfeitamente o seu posicionamento, mas o senhor sabe que pode encontrar outro superior menos compreensivo, não é mesmo?

João Bom-Senso, coitado, não falou mais um “a”. Sem despedir-se, meio atordoado, meio assustado com a sua sensação de estar caminhando de cabeça para baixo, saiu de fininho e ninguém nunca mais o viu. Por isso é que até hoje quando se faz uma reunião para melhoria do SISTEMA se diz que falta o Bom-Senso.

 

Nesta fábula o autor satiriza com sutileza um dos maiores problemas existentes nos dias de hoje nas organizações: a burocracia e o conflito de interesses de pessoas ou grupos de pessoas, como fortes obstáculos para encontrar soluções que permitam a elas aumentar a eficácia na execução de suas missões.

A “Fábula de los cerdos asados”, de Gustavo F. J. Cirigliano, foi publicada originalmente na revista Cátedra y Vida, Buenos Aires, 1959.

Como Santos Dumont inventou o avião

Estou trabalhando em uma pesquisa e li um artigo intitulado “Como Santos Dumont inventou o avião” de autoria de Rodrigo Moura Visoni e João Batista Garcia Canalle, que mesmo sendo um trabalho muito remotamente correlato ao meu me despertou muita atenção, o trabalho é uma descrição técnico/histórico de como Santos Dumont, partiu de um aparelho Aerostato que a principio deveria ser mais leve que o ar para o Avião (14-bis e Demoseille).

Santos Dumont era um Balonista residente na França, ele começou a se tornar famoso como aviador, quando concorreu 3 vezes consecutivas  pelo premio Deutsch tendo falhado nas duas primeiras tentativas com sua maquina o Dirigivel nº 5 e na terceira com o dirigivel nº 6 finalmente obteve exito ao realizar a volta na Torre Eiffel em menos de 30 minutos. Mostrando ao mundo a possibilidade de “dirigibilidade” dos artefatos aéreos e dando uma prévia da sua genialidade.

Em 1901 a bordo do numero 6 Santos Dumont dá a volta na Torre Eiffel

Em 1902 ele dá uma nova mostra de sua Genialidade, publica para a revista North American Review um artigo onde explica que na verdade o príncipio por trás do voo do nº 6 não era aerostação. O nº 6 apesar de utilizar Hidrôgenio, somente o usava para manter rigido sua forma de fuso. Obviamente que o empuxo gerado pela baixa densidade do hidrôgenio sustentava boa parte do peso da Aeronave mas ela nunca seria capaz de voar sem as suas hélices que nessa versão empurravam cerca de 2okg do peso da aeronave.

Parando um pouco com  a parte histórica gostaria de comentar que existem 4 forças Aerodinâmicas Básicas: Tração, Sustentação, Arrasto e Peso. Sendo que na verdade Peso e uma força gravitacional.

Utilizando-se de materiais construtivos leves no Dirigivel nº6, Dumont minimizou o peso, ao invés de usar uma estrutura rija, o invetor inflava a estrutura com hidrogênio e preferia utilizar aluminio ao aço.  A Sustentação se dava pela baixa densidade do material atuando em conjunto com a tração gerada pela hélice movida por um motor a combustão, essas características faziam com que enquanto a hélice estivesse em funcionamento nº6 tende-se a sair do chão. E por último o arrasto causado pelo formato de fuso e tamanho do balão, tornavam esse veículo lento.

Em 1904 foram criados mais algumas competições de aviação que incentivaram Santos Dumont a construir em 1905 o menor dirigivel do mundo o Nº 14, que teve duas versões uma com um motor de 14 cv e outra com 16cv que não obtiveram um desempenho satisfatório. Em 1906 Santos Dumont desenvolve um veículo híbrido o 14-bis (ou o 14 de novo). Que era uma máquina “bem feia” na minha opinião, consistia em uma aeronave mesclada com um dirigivel.

Primeira versão do 14-bis

O Legal aqui foi que não foi eu o único a achar a máquina feia e deselegante. Apesar da máquina projetada por Santos Dumont obedecer às regras da competição e ser por definição um avião, o Capitão Ferdinand Ferber membro do Aeroclube da França, disse a Santos Dumont, que a máquina era impura, e que os problemas de aviação deveriam ser resolvidos pela aviação. Santos Dumont aceitou as crítica e desistiu de competir com essa versão do 14-Bis nessa parte tomo a liberdade de citar o artigo original:

7. O “Oiseau de Proie I”

O Oiseau de Proie tinha 4 metros de altura, 10 de comprimento e 12 de envergadura. A hélice ficava atrás, movida por um motor Levavasseur de 24 cavalos. O trem de pouso possuía duas rodas. O piloto ia em pé, em uma cesta situada entre as asas, clara influência da tradição de Dumont como balonista e resquício da configuração original da máquina.

Em 29 de julho, valendo-se de um asno, Santos Dumont içou o Oiseau de Proie por meio de um sistema de cabos até o alto de uma torre de 13 metros de altura (2 metros ficavam enterrados no chão), instalada há alguns dias em sua propriedade em Neuilly. O avião, suspenso por um gancho móvel conectado a um fio de aço inclinado, deslizou sem a hélice 60 metros do topo da torre até outra menor, de apenas 6 metros, fincada no Boulevard de la Seine. O metódico inventor procurava testar com isso os comandos de vôo [11].

Em agosto de 1906 Santos Dumont alterou o trem de pouso com a colocação de uma pequena roda traseira. No dia 21 tirou o avião do hangar e deslocou-se para o campo de provas de Bagatelle, onde experimentou a hélice em marcha. O eixo motor não resistiu e se quebrou. No dia seguinte uma hélice nova forneceu 1.400 rotações por minuto. No dia 23 o aeroplano fez 25 km/h sobre o gramado, sem decolar [12].

Era preciso aumentar a potência. Em 3 de setembro Santos Dumont substituiu o motor de que estava se valendo, de 24 cavalos-vapor, por um de 50, emprestado por Louis Charles Bréguet (1880-1955). Nos dias 4 e 7 desenvolveu velocidades de 35 km/h e percebeu que a decolagem estava iminente. Marcou a prova para o dia 13, em Bagatelle.

8. O “Oiseau de Proie II”

No dia 23 de outubro de 1906 Santos Dumont voltou a Bagatelle para concorrer ao Prêmio Archdeacon. Apresentou-se com o Oiseau de Proie II, uma modificação do modelo original. As asas haviam sido envernizadas para reduzir a porosidade do tecido e aumentar a sustentação. A roda traseira, por atrapalhar a decolagem, foi suprimida [14].

O biplano decolou logo na primeira tentativa, feita às 16h45min: ficou 6 segundos no ar, atingiu 3 metros de altura e voou 60 metros, mais do dobro da distância necessária para a vitória (Fig. 6). O Oiseau de Proie II entrava para a história como o primeiro avião vencedor de um prêmio aeronáutico [15].

A grande sacada de Alberto Santos Dumont, foi “não reconstruir a roda”  fosse a dirigibilidade de aeronaves fosse o emprego da aviação ante aerostação partindo do que já existia Dumont foi realizando alterações, melhorias até chegar ao seu objetivo.

Bom vou parando por aqui pretendo escrever em breve sobre como iniciei minha compreensão sobre foguetes, tomando por base a análise do voo de um avião. Até lá!

Acelerômetro ADXL345 e Arduino Mega 1280

Boa Noite,

00:23 hrs, e consegui finalmente compreender e programar o Arduino para interfacear com o Acelerometro ADXL345, inicialmente. Esse será um breve tutorial de como fazer isso, já que isso não é hora de gente ficar acordada.

O que é um acelerômetro: (Tecmundo)
Segundo a primeira lei de Newton: ”Todo corpo permanece em repouso até que alguma força externa aja sobre ele.” Já a segunda lei define a força aplicada como o produto da massa do corpo pela sua aceleração. Logo, medindo a aceleração aplicada sobre um corpo (e seu peso), é possível determinar a força aplicada sobre ele.

Acelerômetro do iPhone (imagem de divulgação)

Um acelerômetro nada mais é que um instrumento capaz de medir a aceleração sobre objetos. Ao invés de posicionar diversos dinamômetros (instrumento para medir a força) em lugares diferentes do objeto, um único acelerômetro é capaz de calcular qualquer força exercida sobre ele.

Leia mais em: http://www.tecmundo.com.br/2652-o-que-e-um-acelerometro-.htm#ixzz1gBn98TBJ

O ADXL 345

Datasheet: http://www.sparkfun.com/datasheets/Sensors/Accelerometer/ADXL345.pdf

O ADXL345 é bem adequado para medidas de aceleração estática da gravidade em aplicações tilt-sensing, bem como aceleração dinâmica resultante do movimento ou choque. Sua alta resolução (4 mG/ LSB) permite a medição de mudanças de inclinação inferiores a 1,0 °.

Várias funções especiais de detecção são fornecidas. A detecção de atividade e inatividade detecta a presença ou ausência de movimento e se a aceleração em qualquer eixo excede um nível definido pelo usuário. Detecção de queda livre detecta se o dispositivo está caindo. Estas funções podem ser mapeados para um dos dois pinos de saída de interrupção.

Bom vamos ao trabalho

Para interfacear o Adxl 345 tive de soldar 4 fios nele para liga no Arduino. Utilizei o Padrão i2c para comunicação então o hardware e bem simples siga a tabela que não vai haver problemas.

Pino Arduino    Pino Adxl

3v3                         vcc e cs

gnd                          gnd

20                            sda

21                             scl

Se você usar outra versão do arduino os pinos scl e sda vão variar, mas dai e so dar uma olhada no site do Arduino…

Depois da pinagem vale a pena dar uma olhada e créditos nos dois sites a seguir:

http://www.sparkfun.com/tutorials/240

https://www.loveelectronics.co.uk/Tutorials/12/adxl345-accelerometer-arduino-tutorial

No segundo site eu consegui baixar a biblioteca que trabalha com o acelerômetro. Porém ela foi escrita para o compilador 0022 do Arduino, e estamos na versão 0023, portanto depois de baixar a biblioteca, você deve abrir o arquivo .c dela e proceder com as seguintes modificações:

– substituir #include<Wprogram.h> por #include<Arduino.h>

– substituir wire.send por wire.write

– substituir wire.receive por wire.read

E depois você coloca a biblioteca na pasta librarie do seu Arduino.

Pronto agora basta executar o exemplo que vem na própria biblioteca e ele vai funcionar. O exemplo pode ser conferido tambem abaixo:

/*
ADXL345_Example.pde - Example sketch for integration with an ADXL345 triple axis accelerometer.
Copyright (C) 2011 Love Electronics (loveelectronics.co.uk)

This program is free software: you can redistribute it and/or modify
it under the terms of the version 3 GNU General Public License as
published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/

// Include the Wire library so we can start using I2C.
#include <Wire.h>
// Include the Love Electronics ADXL345 library so we can use the accelerometer.
#include <ADXL345.h>

// Declare a global instance of the accelerometer.
ADXL345 accel;

// Set up a pin we are going to use to indicate our status using an LED.
int statusPin = 2; // I'm using digital pin 2.

void setup()
{
  // Begin by setting up the Serial Port so we can output our results.
  Serial.begin(9600);
  // Start the I2C Wire library so we can use I2C to talk to the accelerometer.
  Wire.begin();

  // Ready an LED to indicate our status.
  pinMode(statusPin, OUTPUT);

  // Create an instance of the accelerometer on the default address (0x1D)
  accel = ADXL345();

  // Check that the accelerometer is infact connected.
  if(accel.EnsureConnected())
  {
    Serial.println("Connected to ADXL345.");
    digitalWrite(statusPin, HIGH); // If we are connected, light our status LED.
  }
  else
  {
    Serial.println("Could not connect to ADXL345.");
    digitalWrite(statusPin, LOW); // If we are not connected, turn our LED off.
  }

  // Set the range of the accelerometer to a maximum of 2G.
  accel.SetRange(2, true);
  // Tell the accelerometer to start taking measurements.
  accel.EnableMeasurements();
}

void loop()
{
  if(accel.IsConnected) // If we are connected to the accelerometer.
  {
    // Read the raw data from the accelerometer.
    AccelerometerRaw raw = accel.ReadRawAxis();
    //This data can be accessed like so:
    int xAxisRawData = raw.XAxis;

    // Read the *scaled* data from the accelerometer (this does it's own read from the accelerometer
    // so you don't have to ReadRawAxis before you use this method).
    // This useful method gives you the value in G thanks to the Love Electronics library.
    AccelerometerScaled scaled = accel.ReadScaledAxis();
    // This data can be accessed like so:
    float xAxisGs = scaled.XAxis;

    // We output our received data.
    Output(raw, scaled);
  }
}

// Output the data down the serial port.
void Output(AccelerometerRaw raw, AccelerometerScaled scaled)
{
   // Tell us about the raw values coming from the accelerometer.
   Serial.print("Raw:\t");
   Serial.print(raw.XAxis);
   Serial.print("   ");
   Serial.print(raw.YAxis);
   Serial.print("   ");
   Serial.print(raw.ZAxis);

   // Tell us about the this data, but scale it into useful units (G).
   Serial.print("   \tScaled:\t");
   Serial.print(scaled.XAxis);
   Serial.print("G   ");
   Serial.print(scaled.YAxis);
   Serial.print("G   ");
   Serial.print(scaled.ZAxis);
   Serial.println("G");
}

E Que venha 2012, Contagem regressiva

Pois é mais um ano se passa, e é bom relembrar e fazer um balanço, pra mim foi um ano de muita mudança por aqui.

Entre as várias coisas que me aconteceram foi o des-casamento e re-casamento e a bagunça causada por isso, não é Alice ( Ainda na crescendo na barriga da Samira)…

Entrei pro curso de Engenharia Mecânica seguido pelo meu amigo Andre Luis (www.alsmoreira.com.br), e incrível, me dei bem com o curso, mudei de endereço, Parei de lutar (será????).

Foi um ano de conclusão de alguns projetos,

e inicio de outros, http://amcollucci.com.br/ead

Outros ainda ficaram inacabados http://amcollucci.com.br/2011/08/16/montagem-dobsoniana-sem-acabamento-3/ (juro to tentando terminar ele)

Ainda conheci e criei novos amigos! (Nadesda, Wesley, Raphael, Stefany, Isaac, Gabriele, Mixirica…. Puxa toda a turma de Engenharia rsrsr, ficou mais fácil né!) Pessoal da Faseh (Lucas Viana, Dinho Reis, Carlos Godinho) Pessoal que só vejo no Facebook (Diane Caroline)…

Rômulo e Ademir - Feira de Profissões Anhanguera
Rômulo e Ademir - Feira de Profissões Anhanguera

Tive o privilégio de matar a saudade velhos amigos, @rosisilvaap que num via a anos, Lembrar os bons tempos de jogatina num rpg com @vaojogar,@rodrigorfnet,@Tihdragaozinho. Revi também o Glauber Porto, Pollyana Marossis e Plínio Devanier, amigos da finada infórium (inférnium)..

E aprender e me divertir muito, muito mesmo!

E 2012?

São tantos os projetos pra 2012 que ficaria perdido! Mas aqui vão os meus objetivos para 2012!

– Babar minha filha… ( =] o foda serão as fraldas…. )

– Começar a trabalhar com Mecânica

– Sair ileso do 3° e 4° semestre de engenharia

– Concluir meu projeto de pesquisa

– Ir a marte… (tá bom esse pode ficar pra 2013)

– Colocar os cursos de Arduino, Pic, Linguagem C e Linux no ar.

– Construir um aeromodelo (importante senão o Rômulo me bate)

– Colocar um Balão atmosférico no ar! ( estilo isso aqui http://www.redecol.com.br/2011/05/balao-atmosferico-mais-de-30-mil-metros.html)

– Sobreviver ao fim do mundo em 2012!!!!!!!!!

Bom então que venha 2012 contagem regressiva!!!!