Social Icons

Usando um Acelerômetro ADXL3xx

Neste exemplo veremos como usar um Acelerômetro analógico da série ADXL3xx (exemplos: ADXL320, ADXL321, ADXL322, ADXL330) e comunica a aceleração para o computador. Os pinos usados foram desenhados para serem facilmente compatíveis com as placas Sparkfun. O dispositivo ADXL3xx  potencia a aceleração em cada eixo com uma tensão análoga entre 0 e 5 volts, que é lida por uma entrada analógica do Arduino.


Um ADXL322 em uma placa Sparkfun inserido nos pinos de entrada analógica de um Arduino.


Tabela de pinos para a configuração acima:

Pinos da Placa Auto-Teste Eixo-Z Eixo-Y Eixo-X Terra VDD
Pinos de entrada analógica do Arduino 0 1 2 3 4 5

Ou, se você está usando somente o acelerômetro:

Pino ADXL3xx Auto-Teste Saída-Z Saída-Y Saída-X Terra VDD
Pino Arduino Nenhum (não conectado) Entrada Analógica 1 Entrada Analógica 2 Entrada Analógica 3 GND 5V

Código

int groundpin = 18;             // analog input pin 4
int powerpin = 19;              // analog input pin 5
int xpin = 3;                   // x-axis of the accelerometer
int ypin = 2;                   // y-axis
int zpin = 1;                   // z-axis (only on 3-axis models)

void setup()
{
  Serial.begin(9600);

  // Provide ground and power by using the analog inputs as normal
  // digital pins.  This makes it possible to directly connect the
  // breakout board to the Arduino.  If you use the normal 5V and
  // GND pins on the Arduino, you can remove these lines.
  pinMode(groundPin, OUTPUT);
  pinMode(powerPin, OUTPUT);
  digitalWrite(groundPin, LOW); 
  digitalWrite(powerPin, HIGH);
}

void loop()
{
  Serial.print(analogRead(xpin));
  Serial.print(" ");
  Serial.print(analogRead(ypin));
  Serial.print(" ");
  Serial.print(analogRead(zpin));
  Serial.println();
  delay(1000);
}

Dados

Básicamente ele fica atualizando a tela com a leitura do acelerômetro...
Aqui apresentamos algumas leituras coletadas por um acelerômetro posicionando o eixo Y de um dispositivo ADXL322 2g a vários ângulos do chão. Os valores devem ser os mesmos para outros eixos, mas podem variar de acordo com a sensibilidade do dispositivo. Com o eixo horizontal (por exemplo paralelo ao chão 0º) a leitura do acelerômetro deveria ser ao redor de 512, mas os valores para outros ângulos serão diferentes para cada dispositivo (exemplo de um ADXL302 5g).

Ângulo -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90
Aceleração 662 660 654 642 628 610 589 563 537 510 485 455 433 408 390 374 363 357 355


O conteúdo desta página é uma tradução para o português a partir do site original do Arduino.
Esta obra está licenciada sob uma Licença Creative Commons.
Creative Commons License

Um Dimmer Futurístico



Um dimmer digital que pode ser facilmente acoplado no Arduino ou qualquer outra placa controladora. O resultado é que você consegue controlar a intensidade de brilho de uma lâmpada incandescente.  Dependendo dos circutos que você colocar neste esquema, você pode controlar um ventilador, chuveiro, ou fazer um ferro de solda com controle de potência!

Os desafios propostos neste desenvolvimento foram bem interessantes e pessoalmente foram verdadeiras aulas práticas de eletrônica e microcontroladores. 

A primeira tentativa que fizemos utilizamos um isolador ótico simples e tentamos usar a PWM para controlar a potência, mas o resultado com a lâmpada não deu certo: ela ficava piscando. Então Paulo pesquisou e me passou uma solução mais trabalhosa mas que funcionaria.

Neste novo esquema elétrico usamos dois isoladores óticos: 4N35 um MOC3021. O primeiro é utilizado para detectar a passagem da corrente alternada por zero e interromper o ATMega cada vez que isso acontecere, no caso do Brasil com 60hz, 120 vezes por segunda a corrente passa por 0. Neste momento é onde temporizamos  a abertura do TRIAC e simulamos o controle de potência. Veja o esquema elétrico:




Segue o código-fonte para Arduino. Você pode mudar a intensidade alterando o valor da variável dim entre 1 e 120, sendo que 1 é o mais forte e 120 praticamente desligada. Este programa permite alteração desta variável por I2C ou por Serial:


/*

#include 
int AC_pin = 3;
volatile long dim = 60;

void setup(){
  pinMode(AC_pin, OUTPUT);
  Serial.begin(9600);
  attachInterrupt(0, light, CHANGE);
  Wire.begin(66);
  Wire.onReceive(receiveEvent);
}

void receiveEvent(int howMany){
   char comando[16];
   int counter=0;
   while(1 < Wire.available())  {
   char c = Wire.receive();
   comando[counter++]=c;
   Serial.print(c);
      }  

int x = Wire.receive();
Serial.println(x);
Serial.println("Evento");
Serial.println(howMany);
//value, fromLow, fromHigh, toLow, toHigh)  
dim = map(comando[1], 48,57,10,120);
  } 


void light(){
  if(dim<125) {
    long dimtime = (60*dim);  // eval the proper pause to fire the triac
    delayMicroseconds(dimtime);  // delay the dim time
    digitalWrite(AC_pin, HIGH);  // fire the Triac
    delayMicroseconds(1);  // pause briefly to ensure the triac turned on
    digitalWrite(AC_pin, LOW);   // turn off the Triac gate (triac will not turn off until next zero cross)
  }  else {
      digitalWrite(AC_pin, LOW);   // turn off the Triac gate (triac will not turn off until next zero cross)  
  }
}

void loop(){
if (Serial.available() > 0) {
    byte inByte = Serial.read();
    dim = inByte;  }
}



E na etapa seguinte integramos este circuito com o ping da Parallax para ter o controle de intensidade "on the air". Bem, isso deixamos para um próximo post, por enquanto vai se divertindo com este circuito!

A lista de materiais para você comprar e montar:

- 4 resistores de 47K (R1 a R4)
- 1 resistor de 10k (R5) (se não tiver 1k e 10k não é eletrônica!)
- 2 resistores 330 (R6 e R7)
- TRIAC BTA16
- 1 isolador 4N35
- 1 isolador MOC3021

Preço da lista: menos que R$ 10.

Criador do Projeto:  Vinicius Senger
http://twitter.com/vsenger
http://twitter.com/eletronlivre
http://loja.eletronlivre.com.br
http://www.globalcode.com.br/instrutores/ViniciusSenger

Projeto EscaPe! v1.1



Ontem a noite sem nada pra fazer comecei a trabalhar com novos caracteres para a LCD Shield e aprendi a criar caracteres especiais com este site você tem uma idéia de como eles vão ficar.
Criei alguns avatares,bonequinhos,símbolos e gostei, pensei então em fazer o bonequinho andar na tela com os comandos:

 lcd.setCursor(x,y);
X=Valor de 0 a 15(no caso de LCD 16x2); - COLUNA
Y=Valor 0 ou 1 (Linha de cima ou de baixo) - LINHA

Recomendo quem quer entender o código por completo que leia o outro tutorial que fiz para o reconhecimento das teclas da shield lcd, pois irei usar o mesmo código para fazer com que vá para cima/baixo...







------------------------------------------
Nome do Jogo: EscaPe! 
Versões:
- 1.0: (Bugs simples logo serão corrigidos);
   1.1 (Implementado e corrigido 3 Bugs, ainda tem bastante bugs mas como estou sem muito                                  tempo talvez demore a concertar todos - Qualque ajuda é bem vinda).


No Pack de Download estão todas as versões para você poder avaliar a evolução.
Totalmente OPEN SOURCE: Download do Código (coloquei assim porque é muito grande o código para largar aqui, +-350 linhas)
User como quiser.
Você pode acompanhar notícias do jogo pela label EscaPe! aguardem muitas novidades até o fim do mês.