Tecnologia do Blogger.

Arduino o documentário- legendas pt-br

Boas pessoal!
Hoje trago - vos um documentário que já andava para publicara à algum tempo!
Este documentário fala - nos da ferrementa open-source "Arduino", desde como esta foi criada, a previsões para o futuro e todas as possibilidades de criação que esta tem.
Então fiquem com vídeo do documentário(partilhem):
Fiquem bem!
Cumps Rui Marinho!

Projecto arduino - Detector de gás


Boas pessoal!
Hoje trago - vos mais um projecto, neste caso um detector de gás, para sensor detector de gás estou a usar o "MQ-2", este sensor tem um custo bastante reduzido, tornando assim este projecto muito fácil de realizar graças ao seu baixo custo e fácil compreensão.
Abaixo deixo o material utilizado no projecto, assim como algumas imagens e ainda um video deste em funcionamento e claro o código para arduino.
Caso o vosso sensor demore ou não seja tão "sensível" ao gás, isso é por causa do trimer inserido na placa de breakout, por isso basta com uma chave de fendas ir rodando o trimer até que esteja "sensível" ao valores como querem
Material Utilizado:
-MQ-2 Gas Sensor ( datasheet )
-Buzzer de 5v
-1Led
-Fio
-Arduino


Imagens: 






Vídeo:








Código:


int mq2 = A0;   //defenir o pino analógico
int val = 0;  // criação da variável para armazenar o estado do sensor de gás


void setup()
{
  pinMode(13,OUTPUT);
  pinMode(12,OUTPUT);
Serial.begin(9600);//processo para a comunicação serial
}


void loop() {
  val = analogRead(mq2); //linha de código para armazenar os valores obtidos do sensor de gas  na  variável inteira  "Val"
 Serial.println(val);//envia o valor armazenado na variável "val" para a porta serial 
delay(1000);//intervalo de tempo de 1 segundo
if (val >= 800) {// se os valores obtidos e armazenados na variavel val forem maiores ou iguais a 800 então irá ser activado o buzzer por 3 segundos, e será ligado o led do pino 13
 digitalWrite(13,1);
 tone(12,2999,3000);
 delay(1000);
}
if (val < 800) {// se os valores obtidos e armazenados na variavel val forem menores que 800 então o led do pino 13 apaga-se
 digitalWrite(13,0);
 delay(1000);
}
}


Cumprimentos Rui Marinho!

Projecto arduino - Tracker solar



Boas Pessoal!
Hoje trago-vos mais um projecto, desta vês um "tracker solar".Este é constituído por um estrutura "pan tilt" com 2 Servos,  temos a base onde está o arduino e bread-board,4 ldrs e claro um painel solar. Basicamente o que isto faz é comparar os valores entre os quatro ldrs e virar o painel solar para a parte onde etsá a ser recebida mais luz.
Abaixo segue  o material utilizado,  imagens do projecto,um vídeo do tracker solar em funcionamento, esquemático de ligações e ainda o código em arduino.


Material utilizado:
-Pan-Tilt com 2 servos
-Estrutura em metal
-Uma bread board
-Um arduino
-4 Ldrs
-4Resistências de 10Kohms
-1Painel solar
-Parafusos
-Um pouco de cola quente
-Fio


Imagens














Vídeo:

Código:
---------------

#define LedPin1 4  
#define LedPin2 5

    #include <Servo.h>

    Servo myservo;
    int pos = 0;  
    int inputesquerda = A1; 
    int inputdireita = A0;

    int esquerda = 0; 
    int direita = 0; 
    
    Servo myservo2;
    int pos2 = 0; 
    int inputcima = A2;
    int inputbaixo = A3;
    int ldr = A5
    int tldr = 0

    int cima  = 0; 
    int baixo = 0; 
    void setup()
    {
    myservo.attach(9);
    myservo2.attach(10); 
    }

    void loop()
    {
      pinMode(LedPin1, OUTPUT);  
pinMode(LedPin2, OUTPUT); 
    Left = analogRead(inputesquerda);
    Right = analogRead(inputdireita);
    tldr = analogRead(ldr);
    if (esquerda > (direita +20))
    {
    if (pos < 179)
    pos++;
    myservo.write(pos);
    }
 if(tldr>512){
   digitalWrite(LedPin1,HIGH);
   digitalWrite(LedPin2,HIGH);
 }
 else{
      digitalWrite(LedPin1,LOW); 
   digitalWrite(LedPin2,LOW);
 }
    if (direita > (esquerda +20))
    {
    if (pos > 1)
    pos -= 1;
    myservo.write(pos);
    }
    delay(10);
    cima = analogRead(inputcima);
    baixo = analogRead(inputbaixo);
    if (cima > (baixo +20))
    {
    if (pos2 < 179)
    pos2++;
    myservo2.write(pos2);
    }
    if (baixo > (cima +20))
    {
    if (pos2 > 1)
    pos2 -= 1;
    myservo2.write(pos2);
    }

    delay(10);
    }

-----------------------
NOTA: CÓDIGO NÃO TESTADO, É FAVOR DE AVISAREM CASO ESTE ESTEJA MAL FEITO


Cumprimentos Rui Marinho !

Livro de introdução ao Arduino

Boas pessoal!

Hoje venho aqui partilhar um livro que achei na Internet, este livro é direccionado a quem é iniciante na ferramenta Arduino, e o seu conteúdo é realmente muito bom, pois neste livro podem ver tudo aquilo que necessitam para iniciar a programação em Arduino e todos os seus conceitos básicos.
Abaixo deixo o link ara o download e a fonte de origem do livro:
Para fazer o download do livro clique aqui

Para mais informações acerca deste livro: http://www.ordemnatural.com.br/

mini-bot v 1.0


Boas!
Hoje vou apresentar aqui um projecto ao qual vai ser dada continuidade daqui para a frente.Para já ficam com a primeira versão do projeto.

Vídeo:


Imagens:
                         




Código em arduino:
----------------------------------------------------------------
void setup()
{
Serial.begin(9600);

pinMode(13, OUTPUT);//motor frente
pinMode(12, OUTPUT);//motor da frente
pinMode(11, OUTPUT);//pwm motor da frente
pinMode(10, OUTPUT);//pwm motor de traz
pinMode(9, OUTPUT);//motor de tras
pinMode(8, OUTPUT);//motor de tras

}


void loop( ){
char x = Serial.read();


  if (x=='a'){//avançar
    digitalWrite(13,0);
    digitalWrite(12,1);
    analogWrite(11,200);
    Serial.print('a recebido');
  }
    if (x=='b'){//recuar
    digitalWrite(13,1);
    digitalWrite(12,0);
    analogWrite(11,200);
    Serial.print('b recebido');
  }


      if (x=='c'){//virar a esquerda 
    digitalWrite(9,0);
    digitalWrite(8,1);
    analogWrite(10,200);
    Serial.print('c esquerda');
  }
    if (x=='d'){//virar a direita
    digitalWrite(9,1);
    digitalWrite(8,0);
    analogWrite(10,200);
    Serial.print('d direita');
  }
  if (x=='e'){//para parar
   analogWrite(11,0);
    digitalWrite(13,0);
    digitalWrite(12,0);
    analogWrite(9,0);
    digitalWrite(8,0);
    digitalWrite(10,0);
   
    Serial.print('e parado');
  }


}
-------------------------------------------------------------------


Download do programa em visual basic: 
http://dl.dropbox.com/u/50854449/mini-robot%20v%201.0.rar


Para saberem mais sobre comunicação Vb arduino visitem :
 http://engenhocas4you.wordpress.com/

Espero que gostem!
Cumprimentos Rui Marinho!

Sensor CNY70 + arduino

Boas pessoal
 Neste post vamos ver como funciona o sensor CNY70( sensor de infravermelhos) este sensor tanto pode fornecer valores  analógicos como digitais mas neste post só esta a fornecer valores digitais (0,1)
Esquema de montagem:



Codigo em arduino

---------------------------------------

int inPin = 4; // pino 4
int valor = 0; //
void setup() {

Serial.begin(9600);
pinMode(inPin, INPUT);

}
void loop() {
valor = digitalRead(inPin); //guardar valor lido na variavel valor

Serial.println(valor);//mostra o valor lido no serial monitor
delay (500);

}
-----------------------------------------

Imagens da placa de circuito impresso




Links:

Comprimentos Marco Joel

Buzzer + Arduino

Boas!
Hoje vou fazer um simples tutorial de como ligar um buzzer  ao arduino.
Neste tutorial estou a usar uma nova função no arduino, com o nome de "tone"( em português tom) basicamente o que esta função faz é dar a frequência  que o buzzer irá emitir para assim formar um determinado som, muito simples.
Abaixo  segue o código de arduino com esquema  de ligação do buzzer:


Esquema:~




Código:
------------------------------------------------
 void setup(){
pinMode(13,OUTPUT);//define o pino 13 do arduino como saida digital
}
void loop(){
//play tone
tone(13,2999,800);// esta linha de código é usada especialmente para o buzzer
//O seu funcionamento é : o pino, a frequência e o tempo de duração em milissegundos
//delay (ms)
delay(1000);
}
---------------------------------------------------

Espero que gostem, cumprimentos Rui Marinho!

Controlo Motores L293D+ Arduino "Versão 2"

Boas
Aqui fica a 2 versão do controlo de motores com o L293D, este já com vídeo e com a placa em eagle, também com umas pequenas alterações no código, irão reparar de imediato quendo olharem para o código.
Já agora o PWM é uma abreviatura de (  Pulse Width Modulation ), serve para podermos controlar a velocidade de um motor de 0-255
Esquema de Montagem







Manual da Placa de circuito impresso



Imagens da placa de circito impresso




Esta placa pode ser colucada em cima do arduino.

Código
-----------------------------------------

void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
}

void loop()
{
digitalWrite(13,1); //Motor 1
digitalWrite(12,0); //Motor 1
digitalWrite(9,0); //Motor 2
digitalWrite(8,1);//Motor 2
analogWrite(11,50); //Motor 1 PWM
analogWrite(10,50); //Motor 2 PWM
delay (2000);
digitalWrite(13,HIGH); //Motor 1
digitalWrite(12,LOW); //Motor 1
digitalWrite(9,HIGH); //Motor 2
digitalWrite(8,LOW);//Motor 2
analogWrite(11,50); //Motor 1 PWM
analogWrite(10,50); //Motor 2 PWM
delay (2000);
digitalWrite(13,0); //Motor 1
digitalWrite(12,1); //Motor 1
digitalWrite(9,0); //Motor 2
digitalWrite(8,0);//Motor 2
analogWrite(11,50); //Motor 1 PWM
analogWrite(10,50); //Motor 2 PWM
delay (2000);
digitalWrite(13,1); //Motor 1
digitalWrite(12,0); //Motor 1
digitalWrite(9,0); //Motor 2
digitalWrite(8,0);//Motore2
analogWrite(11,20); //Motor 1 PWM
analogWrite(10,100); //Motor 2 PWM
delay (2000);
digitalWrite(13,LOW); //Motor 1
digitalWrite(12,HIGH); //Motor 1
digitalWrite(9,LOW); //Motor 2
digitalWrite(8,LOW);//Motor 2
analogWrite(11,100); //Motor 1 PWM
analogWrite(10,20); //Motor 2 PWM
}
-----------------------------------------

Controlo Motores L293D+ Arduino


Boas

Com este esquema representado a baixo, podemos fazer o controlo de 2 motores DC, este código em arduino consiste em   fazer com que os motores andem para a frente 2 seg. a uma certa velocidade, mais 2 seg. a outra velocidade e assim sucessivamente.
Os materiais necessários são:

1 Drive L293D, para controlo dos motores
2 Motores DC
1 Arduino
Fios de ligação
1 Breadboard

Esquema de Ligação:

Código:


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

void loop()
{
digitalWrite(13,HIGH); //Motor 1
digitalWrite(12,LOW); //Motor 1
digitalWrite(9,HIGH); //Motor 2
digitalWrite(8,LOW);//Motor 2
analogWrite(11,50); //Motor 1 PWM
analogWrite(10,50); //Motor 2 PWM

delay (2000);
digitalWrite(13,LOW); //Motor 1
digitalWrite(12,LOW); //Motor 1
digitalWrite(9,HIGH); //Motor 2
digitalWrite(8,LOW);//Motor 2
analogWrite(11,50); //Motor 1 PWM
analogWrite(10,50); //Motor 2 PWM

delay (2000);
digitalWrite(13,LOW); //Motor 1
digitalWrite(12,HIGH); //Motor 1
digitalWrite(9,LOW); //Motor 2
digitalWrite(8,LOW);//Motor 2
analogWrite(11,50); //Motor 1 PWM
analogWrite(10,50); //Motor 2 PWM

delay (2000);
digitalWrite(13,HIGH); //Motor 1
digitalWrite(12,LOW); //Motor 1
digitalWrite(9,HIGH); //Motor 2
digitalWrite(8,LOW);//Motore2
analogWrite(11,20); //Motor 1 PWM
analogWrite(10,100); //Motor 2 PWM

delay (2000);
digitalWrite(13,LOW); //Motor 1
digitalWrite(12,HIGH); //Motor 1
digitalWrite(9,LOW); //Motor 2
digitalWrite(8,LOW);//Motor 2
analogWrite(11,100); //Motor 1 PWM
analogWrite(10,20); //Motor 2 PWM
}
----------------------------------------
Nota: Mais para a frente irei actualizar este post com uma placa em EAGLE, e com um vídeo  do drive e dos motores em funcionamento.

"Eagle Cad Soft" é um programa em que se desenha o esquema do circuito com os seus devidos componentes  e que depois com uma função automatica do EAGLE cria as pistas automaticamente numa face ou em dupla face, depois imprime-se as pistas para acetato e segue-se o devido procedimento para passar as pistas para as placas pcb.

Fica aqui uma imagem da a placa em EAGLE, esta placa pode ser encaixada no arduino uno ou mega:


LINK´s:
Datasheet do drive L293D:



Comprimentos Marco Joel !

Estação de temperatura versão 2

Boas!
Mais um projecto, desta vez é uma estação de temperatura, está-mos já na segunda versão.
Esta segunda versão sofreu algumas alterações, agora estamos a usar 2 sensores de temperatura para assim obter mais precisão, fizemos também algumas alterações no código... Abaixo deixo-vos com o video do funcionamento do projecto, material utilizado, algumas imagens e  esquemático para a ligação ao arduino e é claro o código para o arduino.
Espero que gostem :D
Video:


Material utilizado:
-Um lcd 16*2
-2 sensores de temperatura Lm35
-Um arduino
-Uma breadboard
-Fio(quantidade variada
Imagens:
Imagem do projeto
Mais uma imagem do projeto


Código:

//biblioteca do lcd
#include <LiquidCrystal.h>


LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


//Declaração de sensores e variáveis para o armazenamento de valores
int SENSOR1 = A0;
int SENSOR2 = A1;
float D1 = 0;
float T1 = 0;
float D2 = 0;
float T2 = 0;
float media = 0;




void setup() {
  
Serial.begin(9600);
lcd.begin(16, 2); //LCD 16x2
lcd.setCursor(0,0);
lcd.print("Estacao de Temp.");
lcd.setCursor(0,1);
lcd.print("Versao 1.0");
delay(3000);
lcd.clear();
}


void loop() {


// Cálculos para a conversão da temperatura
D1 = analogRead(SENSOR1);
T1 = (D1 * 500)/1024;
D2 = analogRead(SENSOR2);
T2 = (D2 * 500)/1024;
media=(T1+T2)/2;
delay(1000); // atualização dos dados a cada 1 segundo
lcd.setCursor(0,0);//mudar para a linha de cima
lcd.print("Sensor1 Sensor2");
lcd.setCursor(0,1);
lcd.print(T1);
lcd.print("C");
lcd.print("  ");
lcd.print(T2);
lcd.print("C");
delay(5000);
lcd.clear();// apagar tudo que está escrito no lcd
lcd.setCursor(0,0);
lcd.print("Temp. Media");
lcd.setCursor(0,1);
lcd.print(media);
lcd.print("C");
delay(3000);
lcd.clear();
}



Cumprimentos Rui Marinho !

"Knight Rider" versão 2

Boas!
Hoje trago-vos uma actualização num projecto "Knight Rider"... Nesta versão adicionei um potenciómetro que controla a velocidade com que os leds piscam, existem  grandes diferenças em termos de código.
Abaixo deixo -vos com o esquemático do projeto o video e o código para o arduino:
Video:




Imagens:


Código:
----------------------------------------------------------
int pinInicial=7;
int pinFinal=13;


void setup() {
  for(int i=pinInicial;i<=pinFinal;i++)
  {
    pinMode(i,OUTPUT);
  }


  pinMode(A0,INPUT);


  for(int i=pinInicial;i<=pinFinal;i++)
  {
    digitalWrite(i,LOW);
  }
}


void loop() {
  for(int i=pinInicial;i<pinFinal;i++)
  {
    digitalWrite(i,HIGH);
    ledDelay(1);
    digitalWrite(i+1,HIGH);
    ledDelay(2);
    digitalWrite(i,LOW);
    ledDelay(3);
  }
  for(int i=pinFinal;i>pinInicial;i--)
  {
    digitalWrite(i,HIGH);
    ledDelay(1);
    digitalWrite(i-1,HIGH);
    ledDelay(2);
    digitalWrite(i,LOW);
    ledDelay(3);
  }
}


int valVelocidad(){
  float valorPotenciometro=int(analogRead(A0)/100);
  if(valorPotenciometro<0){
    return(0);
  }
  else if(valorPotenciometro>9) {
    return(9);
  }
  else {
    return(valorPotenciometro);
  }
}


void ledDelay(int d){
  for(int j=0;j<(valVelocidad()*2);j++)
  {
    delay(d);
  }
}
----------------------------------------------------------------
Cumprimentos Rui Marinho !

"knight Rider" - Arduino + 6LEDS

Boas!
Hoje trago-vos mais um mini projecto desta ves decidi fazer um "Knigh Rider" com a combinação de 6 leds, espero que gostem :D , abaixo deixo o esquemático, material, Código e um video a demonstrar o funcionamento.

Video:
(desculpem pela má qualidade do video)


Material utilizado:
- Seis Leds;
-Seis Resistências de 220ohms;
-Uma Breadboard;
-Fio(quantidade variada);
-Um arduino;

Esquemático: