sexta-feira, 18 de abril de 2014

Projeto 25 - Tank autônomo --- Parte 1

        Em primeiro momento este post tem apenas o intuito de mostrar os materiais necessários para montar um tank autônomo, aonde a ideia será que ele irá se locomover e evitando bater nos objetos ao seu redor.
     Dessa forma ao longo dos dias será postado várias imagens da construção e dos materiais que está sendo utilizado. Por fim o post de hoje se resume na publicação da imagem logo abaixo e para alertar o que será divulgado mais informações a respeito nos próximos dias seguintes.                                                      




sexta-feira, 11 de abril de 2014

Projeto 24 - Controlando motor de passo com SHIELD

Componentes necessários:

- Protobord
- Motor de passo com SHIELD
- Fios

Foi utilizado no teste o referente a figura a cima.




 //Projeto 24 - Controlando motor de passo com SHIELD  
 //Este código é de domínio público  
   
 #include <Stepper.h>  
   
 Stepper myStepper(300, 2, 4, 3, 5);  
  //Os 4 últimos número refetem-se aos pinos conectados ao arduino  
  //Fio vermelho é 5v, os outros devem ser conectados no arduino(seguindo a ordem deles, relacionando nas portas)  
    
 void setup(){  
 }  
    
 void loop(){  
  // Ajusta a velocidade, este valor pode ser mudado  
  myStepper.setSpeed(60); // Número de passos, sentido horário  
  myStepper.step(1500); //Se colocar negativo gira no sentido anti-horário  
 }  

segunda-feira, 7 de abril de 2014

Projeto 22 - Ligando LED pelo terminal

Componentes necessários:

- Protobord
- LED de 5 mm
- Resitor de 100 ohms*



 *Verificar o resistor para o led, pois o valor pode ser diferente. 
 //Projeto 22 - Ligando LED pelo terminal  
 //Este código é de domínio público  
   
 int ledPin = 8;  
 char buffer; //Para salvar o que é digitado  
   
 void setup(){  
  Serial.begin(9600);  //Comunicação via USB  
  pinMode(ledPin, OUTPUT);  
  Serial.println("Deseja Ligar o LED(s/n)");  
 }  
   
 void loop(){  
    
  if(Serial.available()){   //Verifica se tem algo digitado, senão não entra no if  
   buffer = Serial.read();   
   if(buffer == 's'){  
    digitalWrite(ledPin, HIGH); // Liga o LED  
    delay(1000);  
    Serial.println("Deseja manter o LED ligado(s/n)");  
   }  
   else{  
    if(buffer == 'n'){  
     digitalWrite(ledPin, LOW);  // Desliga o LED  
     delay(1000);  
     Serial.println("Deseja Ligar o LED(s/n)");  
    }  
   }  
  }  
 }  

sábado, 5 de abril de 2014

Projeto 21 - Servo motor lendo valores do terminal

Componentes necessários:

- Protobord
- Servo Motor
- Fios


Insira valores entre 0 e 180 utilizando 3 caracteres por exemplo:     
Para 0, digite 000                                                                                                                                                 Para 60, digite 060                                                                                                                                                 Para 180, digite 180
Deve ser feito como foi informado a cima pelo motivo de que é passado strings pelo terminal e não números, dessa forma o programa irá converter a string e se não for passado como descrito ocorre erro.
Parte da ideia para o funcionamento do modulo RF foi retirada desse link: http://ardufc.blogspot.com.br/2012/11/tutorial-controlando-servo-motor.html
Apesar de estar parecido, houve algumas modificações e terá uma versão nova em breve.


 //Projeto 21 - Servo motor lendo valores do terminal  
 //Este código é de domínio público   
   
 #include <Servo.h>  
   
 Servo servo1; // Cria uma variavel do tipo Servo que será  
 char buffer[4]; // Array de char que irá converter para int  
   
 int received; //Usada para identificar o tamanho str  
   
 void setup(){  
  Serial.begin(9600);  
  servo1.attach(8); // Atribui o servo ao pino 8 do Arduino  
   
  received = 0;  
  buffer[received] = '\0'; //A posição 0 do array recebe '\0'  
 }  
   
 void loop(){  
   
  if(Serial.available()){ //Verifica se algo foi digitado  
   buffer[received++] = Serial.read(); //Salva os dados digitados  
   if(received >= (sizeof(buffer)-1)){  
    int numero = atoi(buffer);// Converte o valor de "char" para "int"  
    servo1.write(numero); // Envia o comando para o Servo Motor  
    received = 0;  
   }  
   Serial.flush(); // Limpa o buffer da entrada serial  
  }  
 }  

segunda-feira, 31 de março de 2014

Projeto 20 - Controle simples de um motor CC

Componentes necessários:

- Protobord
- Motor CC
- TIP 120*
- Fios



*ou equivalente para a corrente do motor 

O layout da figura a cima foi feito com o transistor NPN. Porém pode ser feito com transistor PNP, más deverá ser feito alguns alterações nas conexões e pode ser observado na figura abaixo.


 //Projeto 20 - Controle simples de um motor CC  
 //Este código é de domínio público    
     
 int motor = 3;    
      
 void setup(){    
  pinMode(motor, OUTPUT);  //Define a saída do transistor  
 }    
      
 void loop(){    
  for(int i=0; i<=255; i++){ //Apenas um comando simples, para o   
   analogWrite(motor, i); // motor ir aumentando a velocidade  
   delay(200);      // gradativamente  
  }   
 }   

quinta-feira, 27 de março de 2014

Projeto 19 - Módulo RF, ligando LED


Componentes necessários:

- Protobord;
- 2 arduinos;
- Módulo RF, descrito na imagem;
- Fios;
- LED;
Resitor de 100 ohms*;


Conexões

Transmissor:
- GND - GND do arduino
- VCC - 5V do arduino
- DATA - Porta 12 digital, é usada por default na biblioteca

Receptor:
- GND - GND do arduino
- DATA - Porta 11 digital, é usada por default na biblioteca. USAR A SAÍDA A DO LADO GND
- VCC - 5V do arduino

Arduino do receptor:
-Conectar também o LED na porta 2, junto com o resistor.

*Verificar o resistor para o led, pois o valor pode ser diferente.


Toda a ideia para o funcionamento do modulo RF foi retirada desse link:
https://docs.google.com/file/d/0B6YRUlKRU7Q-cVJuWXhTMjZ2NU0/edit

Todo o crédito para a pessoa que o criou, apenas foi colocado no blog para divulgar o funcionamento do mesmo.

Link para download da biblioteca: https://www.dropbox.com/s/chipaarcwh50kbx/VirtualWire.rar?m=

  //Projeto 19 - Módulo RF - emissor   
  //Este código é de domínio público   
   
 #include <VirtualWire.h>  
   
 void setup(){  
   Serial.begin(9600);      //Ativa Serial  
   // Initialise the IO and ISR  
   vw_set_ptt_inverted(true); //   
   vw_setup(2000);      // Taxa de transferência  
 }  
   
 void loop(){  
   if(Serial.available()>0){  
    char msg = Serial.read();  
     
    vw_send((uint8_t *)&msg, strlen(&msg)); //Envia toda a palavra com STR  
    vw_wait_tx(); //   
    delay(200);  
   }  
 }  
 //Projeto 19 - Módulo RF - receptor   
 //Este código é de domínio público   
   
 #include <VirtualWire.h>  
   
 void setup(){  
   Serial.begin(9600); //Ativa o Serial  
    
   vw_set_ptt_inverted(true); //   
   vw_setup(2000);      //Taxa de transferência  
   
   vw_rx_start();    //Inicializa o receptor  
   pinMode(2, OUTPUT); //Inicializa a porta p/ LED  
 }  
   
 void loop(){  
   uint8_t buf[VW_MAX_MESSAGE_LEN];  
   uint8_t buflen = VW_MAX_MESSAGE_LEN;  
   
   if (vw_get_message(buf, &buflen)){ //Verifica se recebe informação  
     if(buf[0]=='L'){  
      digitalWrite(2, HIGH);  
     }  
     if(buf[0]=='D'){  
      digitalWrite(2, LOW);  
     }  
   }  
 }  
Com o que foi descrito nesse post, pode-se construir vários outros projetos utilizando a mesma base. Algumas ideias a seguir:
    - Controlar um carrinho;
    - Ligando uma lâmpada;
    - Transmitindo texto para outro arduino, e ele printando no LCD;
    - Transmitindo dados como: temperatura, umidade, luminosidade, distancia e etc.

segunda-feira, 24 de março de 2014

Projeto 18 - LED 7 segmentos com CI 74HC595

Componentes necessários:

- Protobord
LED de 7 segmentos
- CI 74HC595
- 8 resistores 100 ohms*
- Fios


*Verificar o resistor para o led, pois o valor pode ser diferente.
 //Projeto 18 - LED 7 segmentos com CI 74HC595  
 //Este código é de domínio público   
   
 int latchPin = 8; //Pino connectado no Pino 12 do 74HC595 (Latch)   
 int clockPin = 12; //Pino connectado to Pino 11 do 74HC595 (Clock)   
 int dataPin = 11; //Pino connectado no Pino 14 do 74HC595 (Data)   
   
 // Cria uma matriz para os números  
 byte matriz_digits[10][7] = { { 0,0,0,0,0,0,1 }, // = 0  
             { 0,0,1,1,1,1,1 }, // = 1  
             { 1,0,0,0,0,1,0 }, // = 2  
             { 0,0,0,0,1,1,0 }, // = 3  
             { 0,0,1,1,1,0,0 }, // = 4  
             { 0,1,0,0,1,0,0 }, // = 5  
             { 0,1,0,0,0,0,0 }, // = 6  
             { 0,0,0,1,1,1,1 }, // = 7  
             { 0,0,0,0,0,0,0 }, // = 8  
             { 0,0,0,1,1,0,0 }  // = 9  
            };  
   
 void setup() {  
  pinMode(latchPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);  
  pinMode(dataPin, OUTPUT);  
 }  
   
 void loop(){  
  for (byte count = 10; count > 0; --count) {  
   digitalWrite(latchPin, LOW);  
   sevenSegWrite(10 - count);  
   digitalWrite(latchPin, HIGH);  
   delay(2000);  
  }  
 }  
   
 void sevenSegWrite(byte digito) {  
  for (byte coluna = 0; coluna < 8; ++coluna) {  
    digitalWrite(clockPin, LOW);  
    digitalWrite(dataPin, matriz_digits[digito][coluna]);  
    digitalWrite(clockPin, HIGH);  
   }   
   delay(100);  
 }