Pesquisar este blog

CPT

CPT - Centro de Produções Técnicas

Postagens populares

Arduino

O que é um Arduíno e o que pode ser feito com ele?


Os amantes por tecnologia certamente já pensaram em prover soluções eletrônicas que resolvessem probleminhas do dia a dia. Com o Arduíno, uma placa fabricada na Itália utilizada como plataforma de prototipagem eletrônica que torna a robótica mais acessível a todos. Projeto italiano iniciado em 2005 tinha primeiramente cunho educacional e interagia com aplicações escolares.
O sucesso nessa fase foi tão grande que mais de 50 mil placas open source foram vendidas e rendeu um documentário de 2010 sobre a trajetória de desenvolvimento da plaquinha. As unidades são constituídas por controladora Atmel AVR de 8 bits, pinos digitais e analógicos de entrada e saída, entrada USB – o que permite conexão com computadores – ou serial e possui código aberto, que quando modificado, dá origem a outros derivados “ino” – que por questões comerciais – levam nomes como Netduino, Produino e Garagino. A placa Arduino não possui recursos de rede, mas pode ser combinada com outros Arduinos criando extensões chamadas de shields.

Desenvolvido por dois noruegueses, o LED Cube levou cinco dias para ter o software finalizado (Foto: Reprodução/Kickstarter/YouTube)

A fonte de alimentação recebe energia externa por uma tensão de, no mínimo, 7 volts e máximo de 35 volts com corrente mínima de 300 mA. A placa e demais circuitos funcionam com tensões entre 5 e 3,3 volts. Embutido no Arduíno há ainda um firmware – que combina memória ROM para leitura e um programa gravado neste tipo de memória – carregado na memória da placa controladora, que aceita Windows, Linux e Mac OS X.
Em termos de software, o Arduíno pode ter funcionalidades desenvolvidas por meio da linguagem C/C++, que utiliza uma interface gráfica escrita em Java. As funções IDE do Arduíno permitem o desenvolvimento de software que possa ser executado pelo dispositivo.
É aí que entram ideias como a automação de casas, acender luzes por meio da controladora ou projetos mais ousados como o Biometric Security Toy Box, que une a biometria, mais especificamente a ideia do novo sensor de identidade digital da Apple, o Touch ID do iPhone 5S, ao Arduíno.
O projeto do designer inglês Grant Gibson consiste em trocar a fechadura convencional da caixa de brinquedos (que abriga a coleção de carrinhos do seu filho) por um acesso por impressão digital. O sistema é baseado em placa Arduíno Uno e um sensor de impressão digital óptico. Uma vez cadastrada a digital da criança, só ela consegue ter acesso a sua caixa de brinquedos.

Irei fazer uma coletânea de Experiências e postarei dia a dia.
Este link para mim é um dos melhores, boa didática e perfeita explicação.
Introdução ao Arduíno.



2ª Aula, sobre Arduíno.



3ª Aula.



4ª Aula.



5ª Aula


6ª Aula.




7ª aula




8ª Aula




9ª Aula



10ª Aula




11ª Aula




12ª Aula



13ª Aula



14ª Aula



15ª Aula.



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

Breve - mais aulas.

Um exemplo meio avançado para quem está iniciando, mas muito bem feito.


### LINKS ###
----------------------------------------------------------------
* SITE: http://www.brincandocomideias.com/mod...

* SKETCH: https://drive.google.com/file/d/0B91L...

* BIBLIOTECA VARSPEEDSERVO:
https://drive.google.com/file/d/0B91L...

* SITE DO MAURICIO DUARTE:
http://mauriciodgsantos.wixsite.com/e...

* CANAL YOUTUBE DO MAURICIO DUARTE:
https://www.youtube.com/user/mauricio...

* ESQUEMA PCB - TRILHAS: https://drive.google.com/file/d/0B91L...

* ESQUEMA PCB - COMPONENTES: https://drive.google.com/file/d/0B91L...

* VIDEO COMO FAZER UMA PLACA DE CIRCUITO IMPRESSO:
https://youtu.be/yMtIrrCM6Wg

* VIDEO COMO SOLDAR COMPONENTES ELETRÔNICOS:
https://youtu.be/KrUbLwjmwDY

----------------------------------------------------------------
### LISTA DOS COMPONENTES ###
----------------------------------------------------------------
1 Braço Robótico FoamArmDS
1 Placa de Circuito Impresso Confeccionada
1 Arduino Uno
3 Potenciômetros Giratórios de 1 KOhm
3 Knobs para Potenciômetros Giratórios
3 Potenciômetros Deslizantes de 10 KOhm
3 Knobs para Potenciômetros Deslizantes
2 Push Buttons Grandes
1 Conector Jack DC P4 Fêmea
3 LEDs de 3mm (1 Vermelho, 1 Amarelo e 1 Verde)
3 Resistores de 220 Ohms
6 Barras de Terminal com 3 Pinos
4 Barras de Terminal Fêmea para Shield Arduino com 8 Pinos
1 Fonte de 5V 2A
****************************************************************************************************

Projeto Led´s sequenciais ( 11 Efeitos )


O esquema


Explicação previa.
Relação de material.

1 Arduino Uno
1 Botão
2 Placas Lab.
10 Led - Coloridos 
1 Led Branco 
11 Resistores 330 Ohm´s 
     Fios Diversos

O Maior problema é ter cuidado nas ligações, qualquer falha pode complicar o projeto ou até a queima do Arduino, 

Polaridade do led tem que ser bem observada.

Todos os Led estão com Anodo do lado esquerdo.

As Resistências de 330 Ohms, estão colocadas nos terminais do Anodo.
Laranja - Laranja - Marrom a quarta cor é tolerância.

Agora a parte principal - O programa.

/*------------------------
 SEQUENCIAL LEDS
 Fellipe Couto
 16/07/2011
 ------------------------*/
#include <EEPROM.h>
int qtd = 10; //Quantidade de leds.
int qtdSequencia = 11; //Quantidade de sequencias;
int led[] = { 
  2,3,4,5,6,7,8,9,10,11}; //Pinos dos leds.
int ledControle = 12; //Pino do led de controle. Indica se a variável controle for 0 (sequencia automática).
int controle = 0;

void setup(){
  for (int i=0; i<qtd; i++){ //Configura os pinos dos leds como saída.
    pinMode(led[i],OUTPUT);
  }
  pinMode(ledControle,OUTPUT); //Configura o pino do led controle como saída.
  LeEEPROM();
}

void loop(){
  delay(10);
  VerificaBotaoControle();
  if (controle == 0){
    //AUTOMÁTICO
    for (int j=1; j<=qtdSequencia; j++){
      for (int i=0; i<5; i++){
        sequencia(j);
        if (controle != 0) break;
      }
      if (controle != 0) break;  
    }
  }
  else{
    sequencia(controle);
  }
}

void VerificaBotaoControle(){
  //Botão controle ligado ao pino analógico 5. Com resistor de pull down 10k.
  if (analogRead(5) > 1000){
    ApagaTodos();
    delay(1000);
    controle++;
    if (controle > qtdSequencia){
      controle = 0;
    }
  }
  if (controle == 0){
    digitalWrite(ledControle,HIGH);
  }
  else{
    digitalWrite(ledControle,LOW);
  }
  GravaEEPROM();
}

void LeEEPROM(){
  controle = EEPROM.read(0);
}

void GravaEEPROM(){
  EEPROM.write(0,controle);
}

void AcendeTodos(){
  for (int i=0; i<qtd; i++){
    digitalWrite(led[i],HIGH);
  }
}

void ApagaTodos(){
  for (int i=0; i<qtd; i++){
    digitalWrite(led[i],LOW);
  }
}

void sequencia(int s){
  switch (s){
  case 1:
    s1();
    break;
  case 2:
    s2();
    break;
  case 3:
    s3();
    break;
  case 4:
    s4();
    break;
  case 5:
    s5();
    break;
  case 6:
    s6();
    break;
  case 7:
    s7();
    break;
  case 8:
    s8();
    break;
  case 9:
    s9();
    break;
  case 10:
    s10();
    break;
  case 11:
    s11();
    break;
  }
}

void s1(){
  int t1 = 40;
  VerificaBotaoControle();
  ApagaTodos();
  //Acende um por um.
  for (int i=0; i<qtd; i++){
    digitalWrite(led[i],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
  //Apaga um por um.
  for (int i=0; i<qtd; i++){
    digitalWrite(led[i],LOW);
    delay(t1);
    VerificaBotaoControle();
  }
}

void s2(){
  int t1 = 40;
  VerificaBotaoControle();
  ApagaTodos();
  //Acende um por um.
  for (int i=0; i<qtd; i++){
    digitalWrite(led[i],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
  //Apaga um por um.
  for (int i=0; i<qtd-1; i++){
    digitalWrite(led[i],LOW);
    delay(t1);
    VerificaBotaoControle();
  }
  //Acende um por um. (inverso)
  for (int i=qtd-1; i>=0; i--){
    digitalWrite(led[i],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
  //Apaga um por um. (inverso)
  for (int i=qtd-1; i>0; i--){
    digitalWrite(led[i],LOW);
    delay(t1);
    VerificaBotaoControle();
  }
}

void s3(){
  //ABRE E FECHA.
  int t1 = 50;
  VerificaBotaoControle();
  ApagaTodos();
  for (int i=0; i<qtd/2; i++){
    digitalWrite(led[i],HIGH);
    digitalWrite(led[qtd-1-i],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<(qtd/2)-1; i++){
    digitalWrite(led[i],LOW);
    digitalWrite(led[qtd-1-i],LOW);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=(qtd/2)-2; i>=0; i--){
    digitalWrite(led[i],HIGH);
    digitalWrite(led[qtd-1-i],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=(qtd/2)-1; i>0; i--){
    digitalWrite(led[i],LOW);
    digitalWrite(led[qtd-1-i],LOW);
    delay(t1);
    VerificaBotaoControle();
  }
}

void s4(){
  //POLÍCIA 01
  int t1 = 50;
  VerificaBotaoControle();
  //Lado 1 acesso. (piscando)
  ApagaTodos();
  for (int j=0; j<qtd/2; j++){
    for (int i=0; i<qtd/2; i++){
      digitalWrite(led[i],HIGH);
    }
    delay(t1);
    for (int i=0; i<qtd/2; i++){
      digitalWrite(led[i],LOW);
    }
    delay(t1);
    VerificaBotaoControle();
  }
  //Lado 2 acesso. (piscando)
  ApagaTodos();
  for (int j=0; j<qtd/2; j++){
    for (int i=qtd/2; i<qtd; i++){
      digitalWrite(led[i],HIGH);
    }
    delay(t1);
    for (int i=qtd/2; i<qtd; i++){
      digitalWrite(led[i],LOW);
    }
    delay(t1);
    VerificaBotaoControle();
  }
}

void s5(){
  //POLÍCIA 02
  int t1 = 50;
  int t2 = 300;
  VerificaBotaoControle();
  for (int i=0; i<qtd-1; i++){
    AcendeTodos();
    delay(t1);
    ApagaTodos();
    delay(t1);
    VerificaBotaoControle();
  }
  delay(t2);
}

void s6(){
  //FLASHS UM POR UM
  int t1 = 10;
  int t2 = 100;
  VerificaBotaoControle();
  ApagaTodos();
  for (int i=0; i<qtd; i++){
    digitalWrite(led[i],HIGH);
    delay(t1);
    digitalWrite(led[i],LOW);
    delay(t2);
    VerificaBotaoControle();
  }
}

void s7(){
  //FLASHS RANDOMICOS
  randomSeed(analogRead(0));  //Para o random ficar aleatorio, sem repetir a sequencia.
  int t1 = 10;
  int t2 = 100;
  int p = random(qtd);
  VerificaBotaoControle();
  ApagaTodos();
  for (int i=0; i<15; i++){
    digitalWrite(led[p],HIGH);
    delay(t1);
    digitalWrite(led[p],LOW);
    delay(t2);
    p = random(qtd);
    VerificaBotaoControle();
  }
}

void s8(){
  int t1 = 10;
  VerificaBotaoControle();
  for (int i=0; i<2; i++){
    AcendeTodos();
    delay(t1);
    ApagaTodos();
    for (int x=0; x<100; x++){
      VerificaBotaoControle();
      delay(t1);
    }
  }
}

void s9(){
  //CORRE NUM EFEITO MEIO 3D. :P
  int t1 = 60;
  VerificaBotaoControle();
  ApagaTodos();
  for (int i=1; i<qtd; i++){
    digitalWrite(led[i-2],LOW);
    digitalWrite(led[i-1],LOW);
    digitalWrite(led[i],HIGH);
    delay(t1);
    digitalWrite(led[i],LOW);
    digitalWrite(led[i-1],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
}

void s10(){
  int t1 = 150;
  VerificaBotaoControle();
  ApagaTodos();
  for (int x=0; x<3; x++){
    for (int i=0; i<qtd; i++){
      if (i%2 == 0){
        digitalWrite(led[i],HIGH);
      }
      else{
        digitalWrite(led[i],LOW);
      }
    }
    VerificaBotaoControle();
    delay(t1);
    for (int i=0; i<qtd; i++){
      if (i%2 == 0){
        digitalWrite(led[i],LOW);
      }
      else{
        digitalWrite(led[i],HIGH);
      }
    }
    VerificaBotaoControle();
    delay(t1);
  }
}

void s11(){
  int t1 = 40;
  int t2 = 300;
  VerificaBotaoControle();
  ApagaTodos();
  delay(t2);
  for (int i=0; i<qtd; i++){
    if (i != 0){
      digitalWrite(led[i-1],LOW);
    }
    digitalWrite(led[i],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-1; i++){
    if (i != 0){
      digitalWrite(led[i-1],LOW);
    }
    digitalWrite(led[i],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-2; i++){
    if (i != 0){
      digitalWrite(led[i-1],LOW);
    }
    digitalWrite(led[i],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-3; i++){
    if (i != 0){
      digitalWrite(led[i-1],LOW);
    }
    digitalWrite(led[i],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-4; i++){
    if (i != 0){
      digitalWrite(led[i-1],LOW);
    }
    digitalWrite(led[i],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-5; i++){
    if (i != 0){
      digitalWrite(led[i-1],LOW);
    }
    digitalWrite(led[i],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-6; i++){
    if (i != 0){
      digitalWrite(led[i-1],LOW);
    }
    digitalWrite(led[i],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-7; i++){
    if (i != 0){
      digitalWrite(led[i-1],LOW);
    }
    digitalWrite(led[i],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-8; i++){
    if (i != 0){
      digitalWrite(led[i-1],LOW);
    }
    digitalWrite(led[i],HIGH);
    delay(t1);
    VerificaBotaoControle();
  }
  delay(t1);
  VerificaBotaoControle();
  digitalWrite(led[0],HIGH);
  delay(t2);
  for (int i=0; i<qtd; i++){
    if (i != 0){
      digitalWrite(led[i-1],HIGH);
    }
    digitalWrite(led[i],LOW);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-1; i++){
    if (i != 0){
      digitalWrite(led[i-1],HIGH);
    }
    digitalWrite(led[i],LOW);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-2; i++){
    if (i != 0){
      digitalWrite(led[i-1],HIGH);
    }
    digitalWrite(led[i],LOW);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-3; i++){
    if (i != 0){
      digitalWrite(led[i-1],HIGH);
    }
    digitalWrite(led[i],LOW);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-4; i++){
    if (i != 0){
      digitalWrite(led[i-1],HIGH);
    }
    digitalWrite(led[i],LOW);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-5; i++){
    if (i != 0){
      digitalWrite(led[i-1],HIGH);
    }
    digitalWrite(led[i],LOW);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-6; i++){
    if (i != 0){
      digitalWrite(led[i-1],HIGH);
    }
    digitalWrite(led[i],LOW);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-7; i++){
    if (i != 0){
      digitalWrite(led[i-1],HIGH);
    }
    digitalWrite(led[i],LOW);
    delay(t1);
    VerificaBotaoControle();
  }
  for (int i=0; i<qtd-8; i++){
    if (i != 0){
      digitalWrite(led[i-1],HIGH);
    }
    digitalWrite(led[i],LOW);
    delay(t1);
    VerificaBotaoControle();
  }
  delay(t1);
  VerificaBotaoControle();
  digitalWrite(led[0],LOW);
  delay(t1);
}
------------------------------------------------------------------------------
Caso tenha alguma dúvida, entre em contato.




Nenhum comentário :

Postar um comentário