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);  
 }   

sábado, 22 de março de 2014

Projeto 17 - LED IR captando sinal

Componentes necessários:

- Protobord
- Receptor IR
- Fios




 //Projeto 17 - LED IR captando sinal  
 //Este código é de domínio público   
   
 #include <IRremote.h>  
   
 int RECV_PIN = 2;     //Declarando o pino 2 como RECV_PIN  
 IRrecv irrecv(RECV_PIN);  //  
 decode_results results;  
   
 void setup(){  
  Serial.begin(9600);  
  irrecv.enableIRIn();   // Inicializa o receptor  
 }  
   
 void loop() {  
  if (irrecv.decode(&results)) { //Se algum valor for lido, será imprimido  
   Serial.println(results.value, BIN); //Pode trocar BIN para DEC, HEX...  
   irrecv.resume();    //Limpa da memória o valor lido  
  }  
 }  
   

sexta-feira, 21 de março de 2014

Projeto 16 - Servo motor com Potenciômetro

Componentes necessários:

- Protobord
- Potenciômetro
- Servo Motor
- Fios


 //Projeto 16 - Servo motor com Potenciômetro  
 //Este código é de domínio público  
   
 #include <Servo.h>   
    
 Servo servo1; //Cria o objeto Servo  
    
 void setup(){   
  servo1.attach(5); //Envia pelo pino 5 os valores dos ângulos  
 }   
    
 void loop(){   
  int angulo = analogRead(0); //lê o valor do potenciômetro  
  angle=map(angle, 0, 1023, 0, 180); //mapeia os valores lidos, convertendo entre 0 e 180 graus  
  servo1.write(angle); // envia o ângulos para o servo  
  delay(15);  
 }   
   

quinta-feira, 20 de março de 2014

Projeto 15 - LED 7 segmentos

Componentes necessários:

- Protobord
- LED de 7 segmentos
- 8 resitores de 100 ohms*
- Fios

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

OBS: - Verificar se o LED 7 Segmentos é anodo ou catono comum;
        - Observar as saídas para não ocorrer representação nos números.


 //Projeto 15 - LED 7 segmentos  
 //Este código é de domínio público   
   
 // 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(4, OUTPUT);  
  pinMode(5, OUTPUT);  
  pinMode(6, OUTPUT);  
  pinMode(7, OUTPUT);  
  pinMode(8, OUTPUT);  
  pinMode(9, OUTPUT);  
  pinMode(10, OUTPUT);    
  pinMode(11, OUTPUT);  
 }  
    
 void numeros(byte digito) {  
  byte pin = 5;  
  for (byte coluna = 0; coluna < 7; ++coluna) {  
    digitalWrite(pin, matriz_digits[digito][coluna]); //Coloca em nivel alto ou baixo os pinos  
    ++pin;                      //Percorrendo a linha, muda apenas a coluna   
   }   
   delay(100);  
 }   
    
 void loop() {    
  for (byte count = 10; count > 0; --count) {    //Para fazer uma contagem 0 - 10  
   delay(1000);  
   numeros(10 - count);   
  }  
    
  delay(4000);  // Espera 4 segundos para recomeçar novamente  
 }  

quarta-feira, 19 de março de 2014

Projeto 14 - Deslocador de bits com 74HC595

Componentes necessários:

- Protobord
- 8 LEDs de 5 mm
- CI 74HC595
- 8 resistores 100 ohms*
- Fios

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

Explicação sobre o funcionamento do CI.

     Para ativar o registrador de deslocamento, o pino latch deve estar em LOW para receber os bits e ai depois deve ser colocado como HIGH para ativar as suas saídas.
     Nesse meio tempo entre a passagem do pino latch LOW para HIGH, observa-se que se possui os pinos clock e data, e são com esses pinos que são ativados em nível alto ou baixo cada saída. O clock deve ficar em LOW e o data (aqui aonde que se envia os dados para as portas Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7) e é definada como LOW ou HIGH e após de ser escolhido o estado da data o pino clock deve ser colocado como HIGH. Um ponto para ser observado é o seguinte, cada vez que o pino clock é colocado como LOW e depois como HIGH a saida é mudada, se estava na porta Q0 ele muda para Q1 e assim por diante.

 //Projeto 14 - Deslocador de bits com 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)  
   
 void setup() {  
  pinMode(latchPin, OUTPUT);  
  pinMode(clockPin, OUTPUT);  
  pinMode(dataPin, OUTPUT);  
 }  
   
 void loop(){  
  digitalWrite(latchPin, LOW);  
  liga();  
  desliga();  
 }  
   
 void liga(){  
  for (int i=0; i<=7; i++){  
   digitalWrite(clockPin, LOW);  
   digitalWrite(dataPin, HIGH);   
   digitalWrite(clockPin, HIGH);  
   digitalWrite(latchPin, HIGH);  
   delay(1000);  
   digitalWrite(latchPin, LOW);  
  }  
 }  
   
 void desliga(){  
  for (int i=0; i<=7; i++){  
   digitalWrite(clockPin, LOW);  
   digitalWrite(dataPin, LOW);   
   digitalWrite(clockPin, HIGH);  
   digitalWrite(latchPin, HIGH);  
   delay(1000);  
   digitalWrite(latchPin, LOW);  
  }  
 }  

terça-feira, 4 de março de 2014

Projeto 13 - Sensor ultrasônico e LCD

Componentes necessários:

- Protobord
- Potenciômetro
- LCD 12 x 2
- Sensor Ultrasônico HC-SR04
- Fios




 //Projeto 13 - Sensor ultrasônico e LCD  
 //Este código é de domínio público  
   
 #include <LiquidCrystal.h> //Inclui a biblioteca do LCD  
 #include "Ultrasonic.h"  
   
 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Configura os pinos do Arduino para se comunicar com o LCD  
   
 int trig = 9;  
 int echo = 8;  
 Ultrasonic ultrasonic(trig,echo);  
   
 void setup() {  
  lcd.begin(16, 2);        //Inicia o LCD com dimensões 16x2(Colunas x Linhas)  
  lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD  
  lcd.print("Distancia");  
  lcd.setCursor(14,0);  
  lcd.print("CM");  
 }  
   
 void loop(){  
  lcd.begin(16, 2);        //Inicia o LCD com dimensões 16x2(Colunas x Linhas)  
  lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD  
  lcd.print("Distancia");  
  lcd.setCursor(14,0);  
  lcd.print("CM");  
  lcd.setCursor(10, 0); //Posiciona o cursor na décima primeira coluna(13) e na primeira linha(0) do LCD  
  lcd.print(ultrasonic.Ranging(CM));  
  delay(1000);  
  lcd.clear();  
 }  

Projeto 12 - Sensor ultrasônico

Componentes necessários:

- Protobord
- Sensor Ultrasônico HC-SR04
- Fios




 //Projeto 12 - Sensor ultrasônico  
 //Este código é de domínio público  
   
 #include "Ultrasonic.h"  
 int trig = 8;  
 int echo = 9;  
 Ultrasonic ultrasonic(trig,echo);  
 void setup() {  
  Serial.begin(9600);  
 }  
   
 void loop(){  
  Serial.print("Distance CM:");  
  Serial.println(ultrasonic.Ranging(CM));  
  delay(1000);  
 }  

segunda-feira, 3 de março de 2014

Projeto 11 - Print dos dados sensor DHT11 no LCD

Componentes necessários:

- Protobord
- Potenciômetro
- LCD 12 x 2
- Sensor de umidade e temperatura DHT11
- Fios




 //Projeto 11 - Print dos dados sensor DHT11 no LCD  
 //Este código é de domínio público  
   
 #include <LiquidCrystal.h> //Inclui a biblioteca do LCD  
 #include <dht.h>  
 #define dht_dpin A1 //Pino DATA do Sensor ligado na porta Analogica A1  
   
 dht DHT; //Inicializa o sensor   
 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Configura os pinos do Arduino para se comunicar com o LCD  
   
 void setup(){  
  lcd.begin(16, 2);        //Inicia o LCD com dimensões 16x2(Colunas x Linhas)  
  lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD  
  lcd.print("Umidade");  
  lcd.setCursor(0, 1); //Posiciona o cursor na primeira coluna(0) e na segunda linha(1) do LCD  
  lcd.print("Temperatura");  
 }  
    
 void loop(){  
  DHT.read11(dht_dpin); //Lê as informações do sensor  
    
  lcd.setCursor(12, 0); //Posiciona o cursor na décima quarta coluna(13) e na primeira linha(1) do LCD  
  lcd.print(DHT.humidity); //Escreve o valor atual da variável de contagem no LCD  
    
  lcd.setCursor(12, 1); //Posiciona o cursor na décima quarta coluna(13) e na segunda linha(1) do LCD  
  lcd.print(DHT.temperature); //Escreve o valor atual da variável de contagem no LCD   
  delay(2000);  
 }  

domingo, 2 de março de 2014

Projeto 10 - Sensor de umidade e temperatura DHT11

Componentes necessários:

- Protobord
- Sensor de umidade e temperatura DHT11
- Fios


 //Projeto 10 - Sensor de umidade e temperatura DHT11  
 //Este código é de domínio público  
   
 #include <dht.h>  
 #define dht_dpin A1 //Pino DATA do Sensor ligado na porta Analogica A1  
   
 dht DHT; //Inicializa o sensor  
   
 void setup(){  
  Serial.begin(9600);  
 }  
   
 void loop(){  
   DHT.read11(dht_dpin); //Lê as informações do sensor  
   
   Serial.print("Umidade ");  
   Serial.print(DHT.humidity);  
   Serial.print("  I  ");  
   Serial.print("Temperatura ");  
   Serial.print(DHT.temperature);   
   Serial.println(" Celsius ");  
  delay(2000); //Não diminuir muito este valor, pois pode ocorrer perda de dados  
 }  

sábado, 1 de março de 2014

Projeto 9 - Usando LCD

Componentes necessários:

- Protobord
- Potenciômetro
- LCD 12 x 2
- Fios





 //Projeto 9 - Usando LCD  
 //Este código é de domínio público  
   
 #include <LiquidCrystal.h> //Inclui a biblioteca do LCD  
    
 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Configura os pinos do Arduino para se comunicar com o LCD  
    
 int temp=0; // Utilizado para escrever no LCD, vai 0 - 9 e depois zera  
 int cont=0; // Depois que o temp passa do 9 o cont incrementa  
   
 void setup(){  
  lcd.begin(16, 2);        //Inicia o LCD com dimensões 16x2(Colunas x Linhas)  
  lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD  
  lcd.print("Bem vindo!");  
  lcd.setCursor(0, 1); //Posiciona o cursor na primeira coluna(0) e na segunda linha(1) do LCD  
  lcd.print("Grupo ARmix");  
   
  lcd.setCursor(14, 0);  
  lcd.print(cont);  
 }  
    
 void loop(){  
  lcd.setCursor(13, 1); //Posiciona o cursor na décima quarta coluna(13) e na segunda linha(1) do LCD  
  lcd.print(temp); //Escreve o valor atual da variável de contagem no LCD  
  delay(1000);  
  temp++; //Incrementa variável de contagem  
    
  if(temp == 10){  
   cont++;   
   lcd.setCursor(14, 0); //Posiciona o cursor na décima quinta coluna(14) e na segunda linha(0) do LCD  
   lcd.print(cont); //Escreve o valor atual da variável cont no LCD, a cada 10 incrementos no temp  
   temp = 0; //...zera a variável de contagem  
  }  
 }  

sexta-feira, 28 de fevereiro de 2014

Projeto 8 - Brincando com LED RGB

Componentes necessários:

Modelo 1

- Protobord
- LED RGB de 5 mm
- 3 resitores de 100 ohms*
- Fios

Modelo  2

Trocamos o LED RGB por:
- LED vermelho de alto brilho 5 mm
- LED verde de alto brilho 5 mm
- LED azul de alto brilho 5 mm


Modelo 1

ATENÇÂO!!! Verificar as conexões


Modelo 2


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




 //Projeto 8 - Brincando com LED RGB  
 //Este código é de domínio público  
   
 int greenPin = 3;  
 int redPin = 6;  
 int bluePin = 5;  
   
 void setup(){  
  pinMode(redPin, OUTPUT);  
  pinMode(bluePin, OUTPUT);  
  pinMode(greenPin, OUTPUT);  
 }  
   
 void loop(){  
  //---------------------------------   
  for(int i=0; i<=255; i++){  
   analogWrite(bluePin, i);  
   analogWrite(redPin, 255-i);  
  delay(30);   
  }   
  //---------------------------------   
  for(int i=0; i<=255; i++){  
   analogWrite(bluePin, 255-i);  
   analogWrite(redPin, i);  
  delay(30);   
  }   
  //---------------------------------   
  for(int i=0; i<=255; i++){  
   analogWrite(greenPin, i);  
   analogWrite(redPin, 255-i);  
  delay(30);   
  }   
  //---------------------------------   
  for(int i=0; i<=255; i++){  
   analogWrite(bluePin, i);  
   analogWrite(greenPin, 255-i);  
  delay(30);   
  }   
  //---------------------------------  
   for(int i=0; i<=255; i++){  
   analogWrite(bluePin, 255-i);  
   analogWrite(greenPin, i);  
  delay(30);   
  }   
  //---------------------------------  
   for(int i=0; i<=255; i++){  
   analogWrite(greenPin, 255-i);  
   analogWrite(redPin, i);  
  delay(30);   
  }   
  //---------------------------------  
 for(int i=0; i<=255; i++){  
   analogWrite(greenPin, 255-i);  
   analogWrite(redPin, i);  
   analogWrite(bluePin, i);  
  delay(30);   
  }   
 //---------------------------------  
 for(float i=0; i<=255; i++){  
   analogWrite(greenPin, i);  
   analogWrite(redPin, 255-i);  
   analogWrite(bluePin, 255-(i/3));  
  delay(30);   
  }   
 //---------------------------------  
   
 for(int i=0; i<=255; i++){  
   analogWrite(greenPin, 255-i);  
   analogWrite(redPin, i);  
   analogWrite(bluePin, 255-i);  
  delay(30);   
  }   
 //---------------------------------   
  delay(1000);           
 }  



quarta-feira, 26 de fevereiro de 2014

Projeto 7 - Precionando button para ligar o LED







 //Projeto 7 - Precionando button para ligar o LED  
   
 int ledPin = 8;  
 int button = 3; //Botão  
   
 void setup(){  
  pinMode(ledPin, OUTPUT); // Inicializa o pino de saída do arduino  
  pinMode(button, INPUT); // Inicializa o pino entrara para receber sinal  
 }  
   
 void loop(){  
  int state = digitalRead(button); // Recebe sinal do botão  
    
  if(state == HIGH){ // Se o botão estiver precionado liga o LED  
   digitalWrite(ledPin, HIGH);  
  }  
  else{       // Senão o LED apaga  
   digitalWrite(ledPin, LOW);  
  }  
 }  

terça-feira, 25 de fevereiro de 2014

Projeto 6 - Efeito interativo de iluminação sequencial com LEDs

Componentes necessários:

-  Protobord
- 10 LEDs de 5 mm
- 10 resitores de 100 ohms*
- Fios
-Potenciômetro


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



 //Projeto 6 - Efeito interativo de iluminação sequencial com LEDs  
 //Este código é de domínio público  
   
 byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // Cria um array para os pinos dos LEDs  
 int ledDelay;                       // intervalo entre as alterações  
 int direction = 1;  
 int currentLED = 0;  
 unsigned long changeTime;  
 int potPin = 2;             // seleciona o pino de entrada para o potenciômetro  
   
 void setup(){  
  for (int x=0; x<10; x++) {              // define todos os pinos como saída  
   pinMode(ledPin[x], OUTPUT);  
  }  
  changeTime = millis();  
 }  
   
 void loop(){  
  ledDelay = analogRead(potPin);               // lê o valor do potenciômetro  
  if ((millis() - changeTime) > ledDelay) { // verifica se transcorreram ledDelay ms desde a  
   changeLED();                             // última alteração  
   changeTime = millis();  
   }  
 }  
   
 void changeLED() {  
  for (int x=0; x<10; x++) {                     // apaga todos os LEDs  
   digitalWrite(ledPin[x], LOW);  
  }  
  digitalWrite(ledPin[currentLED], HIGH);               // acende o LED atual  
  currentLED += direction;         // incrementa de acordo com o valor de direction  
                        // altera a direção se tivermos atingido o fim  
  if (currentLED == 9) {direction = -1;}  
  if (currentLED == 0) {direction = 1;}  
 }  

Projeto 5 - Efeito de iluminação sequencial com LEDs

Componentes necessários:

-  Protobord
- 10 LEDs de 5 mm
- 10 resitores de 100 ohms*
- Fios



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



 //Projeto 5 - Efeito de iluminação sequencial com LEDs  
 //Este código é de domínio público  
   
 byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // cria um array para os pinos dos LEDs  
 int ledDelay(65);                     // intervalo entre as alterações  
 int direction = 1;  
 int currentLED = 0;  
 unsigned long changeTime;  
   
 void setup(){  
  for (int x=4; x<14; x++) {              // define todos os pinos como saída  
   pinMode(ledPin[x], OUTPUT);   
  }  
  changeTime = millis();  
 }  
   
 void loop() {  
  if ((millis() - changeTime) > ledDelay) {    // verifica se já transcorreram ledDelay   
   changeLED();                       // ms desde a última alteração  
   changeTime = millis();  
  }  
 }  
   
 void changeLED() {  
  for (int x=4; x<14; x++) {                     // apaga todos os LEDs  
   digitalWrite(ledPin[x], LOW);  
  }  
  digitalWrite(ledPin[currentLED], HIGH);               // acende o LED atual  
  currentLED += direction;         // incrementa de acordo com o valor de direction  
                        // altera a direção se tivermos atingido o fim  
  if (currentLED == 13) {direction = -1;}  
  if (currentLED == 4) {direction = 1;}  
 }  
 //Projeto 6 - Efeito interativo de iluminação sequencial com LEDs  
 //Este código é de domínio público  
   
 byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // Cria um array para os pinos dos LEDs  
 int ledDelay;                       // intervalo entre as alterações  
 int direction = 1;  
 int currentLED = 0;  
 unsigned long changeTime;  
 int potPin = 2;             // seleciona o pino de entrada para o potenciômetro  
   
 void setup(){  
  for (int x=0; x<10; x++) {              // define todos os pinos como saída  
   pinMode(ledPin[x], OUTPUT);  
  }  
  changeTime = millis();  
 }  
   
 void loop(){  
  ledDelay = analogRead(potPin);               // lê o valor do potenciômetro  
  if ((millis() - changeTime) > ledDelay) { // verifica se transcorreram ledDelay ms desde a  
   changeLED();                             // última alteração  
   changeTime = millis();  
   }  
 }  
   
 void changeLED() {  
  for (int x=0; x<10; x++) {                     // apaga todos os LEDs  
   digitalWrite(ledPin[x], LOW);  
  }  
  digitalWrite(ledPin[currentLED], HIGH);               // acende o LED atual  
  currentLED += direction;         // incrementa de acordo com o valor de direction  
                        // altera a direção se tivermos atingido o fim  
  if (currentLED == 9) {direction = -1;}  
  if (currentLED == 0) {direction = 1;}  
 }  

Projeto 4 - Semáforo interativo

Projeto 3 - Semáforo

Componentes necessários:

- Protobord
- LED vermelho, amarelo e verde de 5 mm
- 3 resitores de 100 ohms*
- Fios






 //Projeto 3 - Semáforo  
 //Este código é de domínio público  
   
 int redPin = 8;  
 int yellowPin = 7;  
 int greenPin = 6;  
   
 void setup(){  
  pinMode(redPin, OUTPUT);  
  pinMode(yellowPin, OUTPUT);  
  pinMode(greenPin, OUTPUT);  
 }  
   
 void loop(){  
  digitalWrite(redPin, HIGH);  // Liga LED vermelho  
  delay(1000);          // espera 1 segundo  
  digitalWrite(yellowPin, HIGH); // Liga LED amarelo  
  delay(500);          // espera 5 ms  
  digitalWrite(redPin, LOW);  
  digitalWrite(yellowPin, LOW); // Apaga LED amarelo e vermelho  
    
  digitalWrite(greenPin, HIGH); // Liga o LED verde  
  delay(1500);          // espera 1,5 segundo  
 }  
   

Projeto 2 - Sinalizador de código Morse S.O.S.

Componentes necessários:
 -Protobord
- LED de 5 mm
- Resitor de 100 ohms*
- Fios



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


 //Projeto 2 - Código Morse S.O.S.  
 //Este código é de domínio público  
   
 int ledPin = 8;         // LED conectado ao pino 8  
   
 void setup(){  
  pinMode(ledPin, OUTPUT);  
 }  
   
 void loop(){  
    
  // 3 pontos  
  for(int x=0; x<3; x++){    // Repete o processo 3 vezes  
   digitalWrite(ledPin, HIGH); // Liga o LED  
   delay(150);         // espera 150 milissegundo   
   digitalWrite(ledPin, LOW); // Desliga o LED  
   delay(100);         // espera 100 milissegundo
  }  
    
  // espera 100 ms para ter um intervalo entre as letras  
  delay(100);  
    
  // 3 traços  
  for(int x=0; x<3; x++){    // Repete o processo 3 vezes  
   digitalWrite(ledPin, HIGH); // Liga o LED  
   delay(400);         // espera 150 milissegundo
   digitalWrite(ledPin, LOW); // Desliga o LED  
   delay(100);         // espera 100 milissegundo
  }  
    
  // espera 100 ms para ter um intervalo entre as letras  
  delay(100);  
    
  // 3 pontos novamente  
  for(int x=0; x<3; x++){    // Repete o processo 3 vezes  
   digitalWrite(ledPin, HIGH); // Liga o LED  
   delay(150);         // espera 150 milissegundo
   digitalWrite(ledPin, LOW); // Desliga o LED  
   delay(100);         // espera 100 milissegundo
  }  
    
  delay(5000); // espera 5 segundos antes de repetir o sinal de SOS  
 }    

segunda-feira, 24 de fevereiro de 2014

Projeto 1 - Aprendendo ligar LED

Componentes necessários:

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



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

  //Projeto 1 - Aprendendo ligar LED   
 //Este código é de domínio público   
    
  int ledPin = 8;   
     
  void setup(){   
  pinMode(ledPin, OUTPUT);   
  }   
     
  void loop(){   
  digitalWrite(ledPin, HIGH); // Liga o LED   
  delay(500);     // espera 5 milissegundo   
  digitalWrite(ledPin, LOW); // Desliga o LED   
  delay(500);     // espera 5 milissegundo   
  }  

domingo, 23 de fevereiro de 2014

Funções

 Funções
    As funções são referências essenciais para o desenvolvimento de um projeto usando o Arduino,
principalmente para os iniciantes no assunto. Essas funções já implementadas e disponíveis em bibliotecas direcionam e exemplificam as funcionalidades básicas do microcontrolador.
Temos como funções básicas e de referências seguintes funções:

Digital I/O
      pinMode() digitalWrite() digitalRead()
Analógico I/O
     analogReference() analogRead() analogWrite() - PWM
Avançado I/O
      tone() noTone() shiftOut() pulseIn()
Tempo
      millis() micros() delay() delayMicroseconds()
Matemática
      min() max() abs() constrain() map() pow() sqrt()
Trigonométrica
      sin() cos() tan()
Números aleatórios
      randomSeed() random()
bits e Bytes
      lowByte() highByte() bitRead() bitWrite() bitSet() bitClear() bit()
Interrupções externas
      attachInterrupt() detachInterrupt()
Interrupções
      interrupts() noInterrupts()
Comunicação Serial


 Bibliotecas
O uso de bibliotecas nos proporciona um horizonte de programação mais amplo e diverso
quando comparado a utilização apenas de estruturas, valores e funções Isso e perceptível
quando analisamos os assuntos que são abordados por cada biblioteca em específico. Lembrando
sempre que, para se fazer uso de uma biblioteca, esta já deve estar instalada e disponível na
sua máquina. Temos as seguintes bibliotecas de referência:

EEPROM - para reprogramar a memória de armazenamento permanente.
Ethernet - para se conectar a uma rede Ethernet usando o Arduino Ethernet Shield.
Firmata - para se comunicar com os aplicativos no computador usando o protocolo Firmata.
LiquidCrystal - para controlar telas de cristal l quido (LCDs).
Servo - para controlar servomotores.
SPI - para se comunicar com dispositivos que utilizam a Serial Peripheral Interface (SPI).
SoftwareSerial - para a comunicação serial em qualquer um dos pinos digitais.
Stepper - para controlar motores de passo.
Wire (Two Wire Interface { TWI/I2C) - para enviar e receber dados através de uma rede
de dispositivos ou sensores.

Temos como referência também, o uso de bibliotecas mais específicas. O que é de extrema
importância quando se faz o uso do arduino com um enfoque em uma determinada área. Como
por exemplo:

Comunicação (redes e protocolos)
    Messenger - para o processamento de mensagens de texto a partir do computador.
    NewSoftSerial - uma versão melhorada da biblioteca SoftwareSerial.
    OneWire - dispositivos de controle que usam o protocolo OneWire.
    PS2Keyboard - ler caracteres de um PS2 teclado.
    Simple Message System - enviar mensagens entre Arduino e o computador.
    SSerial2Mobile - enviar mensagens de texto ou de e-mail, usando um telefone celular.
    Webduino - biblioteca que cria um servidor Web (para uso com o Arduino Ethernet Shield).
    X10 - envio de sinais X10 nas linhas de energia AC.
    XBee - para se comunicar via protocolo XBee.
    SerialControl - controle remoto atrav es de uma conexão serial.

Sensoriamento
    Capacitive Sensing - Transformar dois ou mais pinos em sensores capacitivos.
    Debounce - Leitura de ruidos na entrada digital.

Geração de Frequência e de Audio
    Tone - Gerar ondas quadradas de frequência de áudio em qualquer pino do microcontrolador.

Temporizaçãoo
    DateTime - Uma biblioteca para se manter informado da data e hora atuais do software.
    Metro - Ajuda ao programador a acionar o tempo em intervalos regulares.
    MsTimer2 - Utiliza o temporizador de 2 de interrupção para desencadear uma ação a cada N ms.

Utilidades
    TextString (String) - Manipular strings
    PString - uma classe leve para imprimir em buffers.
    Streaming - Um método para simplificar as declarações de impressão.

Curiosidade sobre blog ARmix

    Esse blog tem por objetivo compartilhar vários projetos básicos para que se tenha uma noção básica do funcionamento dos recursos que o arduino disponibiliza.
    Além de ser um tutorial sobre o arduino, esperamos que esse blog possa ser bem útil e ajude-os nos trabalhos que querem realizar.

Um pouco sobre a história do arduino

Em breve...