Mostrando postagens com marcador tutorial. Mostrar todas as postagens
Mostrando postagens com marcador tutorial. Mostrar todas as postagens

sábado, 9 de maio de 2015

Módulo sensor LDR




Olá pessoal! nesta vídeo aula vou ensinar pra vocês como funciona este módulo com sensor LDR de uma forma bem fácil de entender. O módulo é bem fácil de usar e implementar nos seus projetos.

Para saber mais sobre o resistor LDR e outros tipos de resistores, leia o artigo Especificação técnica dos resistores.

Esquema de ligação :


Coódigo utilizado no teste da vídeo aula

//TESTE SENSOR LDR

//ESTE PRGRAMA CONSISTE EM UM TESTE SIMPLES ONDE O ARDUINO RECEBE
//O SINAL NO PINO 8, E COPIA O ESTADO PARA O PINO 13, QUE SERÁ PERCEPTÍVEL
//NO LED DO PINO 13.

// DECLARANDO AS VARIAVEIS

const int buttonPin = 8; // DECLARA VARIAVEL QUE RECEBERA O VALOR OBTIDO NA ENTRADA DIGITAL 8
const int ledPin =  13; // DECLARA VARIAVEL PARA QUE ACENDERÁ O LED DO PINO 13


int buttonState = 0;         // variable for reading the pushbutton status

void setup() {

  // DECLARANDO A VARIAVEL RELACIONADA AO PINO 13 COMO SAIDA DIGITAL
  pinMode(ledPin, OUTPUT);    
  // DECLARANDO A VARIAVEL RELACIONADA AO PINO 8 COMO ENTRADA DIGITAL
  pinMode(buttonPin, INPUT);

}

void loop(){

  //SE RECEBER NIVEL ALTO (OU 5V) NO PINO 8
  if (  digitalRead(buttonPin) == HIGH) {    
    digitalWrite(ledPin, HIGH);   // ACENDE O LED.
  }
  else { // SE NÃO
    digitalWrite(ledPin, LOW); // LED APAGADO.
  }
}

CLIQUE AQUI PARA COMPRAR ESTE MODULO



segunda-feira, 29 de dezembro de 2014

Central de alarme com Arduino UNO ( SECURITY SYSTEM V1.0 )

   A partir de uma necessidade pessoal, desenvolvi uma central de alarme residencial com um Arduino UNO. Um sistema básico com dois setores e sem nenhum led indicador ou display, porque necessitava de algo rápido e prático.
   Analisando os componentes que eu tinha em mãos, constatei que seria possível dar inicio ao projeto.

Abaixo os componentes utilizados:

Fonte AC/DC 12V 1A:



Sirene 12V (genérica):




Controle remoto RF 4 canais + receptor <<<(clique para ver tutorial)





Shield Xbee com dois relés



Arduino UNO R3 <<<(clique para ler sobre Arduino UNO R3)



2 Interruptores para simular os sensores na prototipagem, que neste caso eu utilizei dois módulos da iriel.



A respeito do Shield Xbee, ele pode ser dissubstituído por um simples modulo relé de 1 canal, utilizei este por ser o que eu tinha disponível no momento.

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

//CENTRAL DE ALARME 1.0
//POR: MICHEL BACK
//INICIO DA PROTOTIPAGEM 29/12/2014

boolean sirene = 4; // define saida do relé que irá acionar a sirene (padrão da shield é o pino 4 para relé 1)
boolean armaset1 = A0; // define entrada que recebe comando do controle remoto (setor1)
boolean armaset2 = A1; // define entrada que recebe comando do controle remoto (setor1)
boolean setor1 = 8; // define entrada do setor 1
boolean setor2 = 7; // define entrada do setor 2
boolean x1; // variavel de entretravamento
boolean x2; // variável de entretravamento

void setup(){
  
  pinMode(sirene, OUTPUT);
  pinMode(armaset1, INPUT);
  pinMode(armaset2, INPUT);
  pinMode(setor1, INPUT);
  pinMode(setor2, INPUT);
  
  x1 = 0 ; // iguala a zero para iniciar setor desarmado
  x2 = 0 ; // iguala a zero para iniciar setor desarmado
}
void loop() {
  
  if(digitalRead(armaset1) == HIGH & x1 == 0){ // se setor 1 estiver desarmado e pressionar botao A
    digitalWrite(sirene, HIGH); // sinal sonoro 1 beep
    delay(150);
    digitalWrite(sirene, LOW);
    x1 = 1; // arma setor 1
    
    }
    
   if(digitalRead(armaset1) == HIGH & x1 == 1){ // se setor 1 estiver armado e pressionar botao A
    digitalWrite(sirene, HIGH); // sinal sonoro 2 beep
    delay(150);
    digitalWrite(sirene, LOW);
    delay(150);
    digitalWrite(sirene, HIGH);
    delay(150);
    digitalWrite(sirene, LOW);
    x1 = 0; // desarma setor 1
    }
    
  if(digitalRead(armaset2) == HIGH & x2 == 0){ // se setor 2 estiver desarmado e pressionar botao B
    digitalWrite(sirene, HIGH); // sinal sonoro 1 beep
    delay(150);
    digitalWrite(sirene, LOW);
    x2 = 1; // arma setor 2
   }
     if(digitalRead(armaset2) == HIGH & x2 == 1){ // se setor 2 estiver armado e pressionar botao B
    digitalWrite(sirene, HIGH);// sinal sonoro 2 beep
    delay(150);
    digitalWrite(sirene, LOW);
    delay(150);
    digitalWrite(sirene, HIGH);
    delay(150);
    digitalWrite(sirene, LOW);
    x2 = 0; // desarma setor 2
   }
if( x1 == 1 & digitalRead(setor1 ) == LOW){ // se setor 1 estiver armado e setor 1 estiver aberto
 digitalWrite(sirene, HIGH); //dispara alarme. Para silenciar basta desarmar setor
}

if( x2 == 1& digitalRead(setor2 ) == LOW ){ // se setor 1 estiver armado e setor 1 estiver aberto
   digitalWrite(sirene, HIGH); //dispara alarme. Para silenciar basta desarmar setor
}

}
--------------------------------------------------------------------------------------------------------------------------
Ligação do receptor RF


Como utilizei apenas 2 setores, será necessário ligar apenas os pinos D0 e D1 do receptor nas entradas A0 e A1 respectivamente.


Ligação de sensores de presença



Ligação de sensores magnéticos ( reed switch )



Setor 1 = Pino 8
Setor 2 = Pino 7


CONTINUA....

quarta-feira, 23 de julho de 2014

Shield LCD KeyPad



   A Shield LCD KeyPad, foi desenvolvida para placas Arduino, para oferecer uma interface de fácil utilização que permite aos usuários criarem menus, fazer seleções, etc. Composto por um LCD branco de 16x2 (Caractere x Linha) com luz de fundo azul, e um teclado de cinco teclas: Selecione (select), Acima (up), direita (rigth), abaixo (down), e esquerda (left). Para otimizar o uso dos pinos digitais I/O, a interface do teclado usa apenas uma entrada analógica. Os valores da chave são lidos através de um divisor de tensão de cinco estágios.

 Na imagem abaixo veja quais as entradas e saidas necessárias pra conectar ao arduino.


na tabela abaixo veja as funções de cada pino usado.

Dimensões da placa.





   Todas as informações citadas acima, foram disponibilizadas pelo fabricante da shield.

  Identificando valores dos botões do keypad:


  Como citado acima, os comandos do keypad são recebidos pelo arduino por apenas uma entrada analógica. Isso é possível porque cada botão fornece um nível de tensão que lhe corresponde.

   Como no datasheet do fabricante não contém esses  valores, foi necessário mensurá-los usando a própria entrada analógica do arduino. Para isso é necessário programar o arduino de forma que ele amostre os valores da entrada analógica no monitor serial. veja o código abaixo:

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

void loop() {
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue, DEC);
}

   Depois de carregado o código no arduino, é necessário abrir o monitor serial ( Ctrl + Shift + M ) para poder visualizar os valores.

Abaixo os resultados obtidos no teste.

Nenhum botão pressionado = 1023


Botão select = 640


Botão left = 410


Botão rigth = 0


Down = 258


Up = ficou variando entre 100 e 101



Código teste.




   Este código foi desenvolvido com objetivo didático e para testar o funionamento do display. Na primeira linha ele exibe apenas um texto simples. Na segunda linha à esquerda exibe qual o botão está sendo pressionado. À esquerda da segunda linha, exibe um contador em segundos que mostra a quanto tempo o arduino está ligado.

/*******************************************************

Este teste irá testar o LCD e os botões

********************************************************/

#include <LiquidCrystal.h> // carrega biblioteca do display

// selecionar os pinos utilizados no painel LCD

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// definir alguns valores utilizados pelo painel e botões
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

// ler os botões
int read_LCD_buttons()
{
 adc_key_in = analogRead(0);      // Ler o valor da entrada analógica 0
 // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
 // we add approx 50 to those values and check to see if we are close
 if (adc_key_in > 1000) return btnNONE; // Fazemos esta a opção 1, por razões de velocidade, uma vez que irá ser o resultado mais provável
 if (adc_key_in < 50)   return btnRIGHT;
 if (adc_key_in < 195)  return btnUP;
 if (adc_key_in < 380)  return btnDOWN;
 if (adc_key_in < 555)  return btnLEFT;
 if (adc_key_in < 790)  return btnSELECT;  
 return btnNONE;  // quando todas as outras falham, devolva este ...
}

void setup()
{
 ini ();  // inicia a sub rotina da tela de apresentação

 lcd.begin(16, 2);              // start the library
 lcd.setCursor(0,0);
 lcd.print("  Arduino Mais "); // texto a ser exibido no display

}
void loop()
{
 lcd.setCursor(9,1);            // move cursor to second line "1" and 9 spaces over
 lcd.print(millis()/1000);      // Segundos decorridos desde que o display foi ligado


 lcd.setCursor(0,1);            // move to the begining of the second line
 lcd_key = read_LCD_buttons();  // read the buttons

 switch (lcd_key)               // depending on which button was pushed, we perform an action
 {
   case btnRIGHT:
     {
     lcd.print("RIGHT ");
     break;
     }
   case btnLEFT:
     {
     lcd.print("LEFT   ");
     break;
     }
   case btnUP:
     {
     lcd.print("UP    ");
     break;
     }
   case btnDOWN:
     {
     lcd.print("DOWN  ");
     break;
     }
   case btnSELECT:
     {
     lcd.print("SELECT");
     break;
     }
     case btnNONE:
     {
     lcd.print("NONE  ");
     break;
     }
 }

}
void ini (){  /// tela de apresentação

 lcd.begin(16, 2);             // inicia biblioteca da tela
 lcd.setCursor(0,0);
 lcd.print("  Arduino Mais  ");  // exibe texto na tela na primeira linha
 lcd.setCursor(0,1);
 lcd.print("   Apresenta:   ");// exibe texto na tela na segunda linha
 lcd.setCursor(0,0);
 delay(2000);
 lcd.print("   LCD Keypad   ");  // exibe texto na tela na primeira linha
 lcd.setCursor(0,1);
 lcd.print("      Test      ");// exibe texto na tela na segunda linha
 delay(2000);  // segura informação na tela por 2 segundos
}

sexta-feira, 18 de julho de 2014

Display LCD Gráfico Touchscreen TW12864

Marca: TATO
Modelo: TW12864
Site: http://tato.ind.br/  
 
   O display gráfico serial TW-12864 combina um módulo serial com um display gráfico de 128x64 pontos, de fundo branco e letras pretas. Este conjunto recebe dados serialmente a velocidade de 2400 a 15200bps e mostra no display textos ou gráficos. No modo texto ele pode apresentar diferentes tamanhos de fontes.  
  Códigos especiais em ASCII são utilizados para enviar comandos ao display. Instruções adicionais permitem o controle do tamanho de fonte e posicionamento do cursor. As instruções gráficas traçam linhas, retângulos, círculos e pontos.
   O display TW-12864possui uma memória EEPROM que permite armazenar até 30 telas completas que podem ser criadas em qualquer computador PC rodando Windows e armazenadas no display. Com um simples comando as telas podem ser exibidas no display.

O conector do display TW-12864 é do tipo barra de pinos com espaçamento padrão de 0.1”.

ATENÇÃO: Não inverta o 5V e o terra, nem por um instante. Fazendo isto irá destruir o display. Não aplique mais de 5V. Isto pode queimar o display.

Controle de Contraste


   O contraste do display pode ser ajustado através de um trimpot localizado na parte trazeira.



Backlight LED


   O display TW-12864 possui um backlight de LED que possui um baixo consumo de corrente. A intensidade do backlight pode ser ajustada por controle do software.

Selecionando o Baud Rate


   O baud rate padrão do display é 9600bps e ele retornará a esta velocidade sempre que for ligado. A velocidade pode então ser alterada através de comandos de software.

Ligação de Uso


   O display TW-12864 necessita de 5Vx100mA para o funcionamento. Os dois pinos de comunicação são para ligar na UART de um microcontrolador. Para ligação a um PC é necessário um MAX232.

Operação Básica


   Uma vez que o TW-12864 esteja corretamente ligado e configurado para o baud rate do microcontrolador, comandos podem ser enviados para o display. Todos os comandos são em código ASCII e terminador por um <ENTER>.

Tempo de Inicialização


   O display TW-12864 necessita de 200ms para inicializar e estar pronto para receber comandos.

Comandos do Display

------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   Nos comandos abaixo, sempre que o simbolo « aparecer, significa que um <ENTER> foi digitado.

Draw line - Desenha linha - l x0 y0 x1 y1
Desenha uma linha
Exemplo: l 10 20 40 50«
Resultado: Desenha uma linha entre os pontos 10,20 e 40,50 com a cor de frente
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Draw Point - Desenha um ponto - po x y
Desenha um ponto
Exemplo: po 20 30«
Resultado: Desenha um ponto na posição 20,30 com a cor de frente.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Set Font - Seleciona a fonte - f <tipo>
Seleciona o tipo de fonte
Exemplo: f “13”«
Resultado: Seleciona a fonte tamanho 13
As opções de fonte são:
5, 11, 13, 17
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Text Display - Mostra um texto - t
Mostra um texto no display
Exemplo: t “texto de exemplo”«
Resultado: Escreve texto de exemplo no display
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Draw Rectangle - Desenha um retângulo - r x0 y0 x1 y1
Desenha um retângulo entre os pontos x0,y0 e x1,y1
Exemplo: r 10 20 40 50«
Resultado: Desenha um retângulo entre 10,20 e 40,50
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Draw Rectangle Filled - Desenha um Retângulo Preenchido - rf x0 y0 x1 y1
Desenha um retângulo preenchido
Exemplo: rf 10 20 40 50«
Resultado: Desenha um retângulo preenchido com a cor de frente.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Rectangle Erase - Apaga Retângulo - re x0 y0 x1 y1
Apaga uma área retangular do display
Exemplo: re 10 20 40 50«
Resultado: Apaga a área entre 10,20 e 40,50
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Rectangle Invert - Inverte Retângulo - ri x0 y0 x1 y1
Inverte uma área retangular do display
Exemplo: ri 10 20 40 50«
Resultado: Inverte a área entre 10,20 e 40,50
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Draw Circle - Desenha um Círculo - c x y r
Desenha um círculo
Exemplo: c 50 60 10«
Resultado: Desenha um círculo no ponto 50,60 com raio 10
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Draw Circle Filled - Desenha um Círculo Preenchido - cf x y r
Desenha um círculo
Exemplo: cf 50 60 10«
Resultado: Desenha um círculo preenchido no ponto 50,60 com raio 10
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Clear Screen - Apaga a Tela - z
Preenche a tela toda com a cor de fundo
Exemplo: z«
Resultado: A tela é preenchida com a cor de fundo.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BackLight - bk 0|1|2|3|4|5
Ajusta a intensidade do backlight
Exemplo: bk 1«
Resultado: Liga o backlight na intensidade mínima
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Baud Rate - b 2400|9600|19200|38400|115200
Determina a velocidade de comunicação
Exemplo: b 19200«
Resultado: Muda a velocidade para 19200bps
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Mostra Tela - T n
Mostra uma tela armazenada na memória
Exemplo: T 12«
Resultado: Mostra a tela número 12
O valor de ‘n’ pode ser de 1 a 30

================================================================================================================

Comandos do Touch Screen


Operação do Touch Screen


   O touch screen funciona de forma totalmente independente do display em dois modos diferentes:

Botão e Hotspot ou modo xy. 

  • No modo xy, os valores de x e y são retornados enquanto tiver um toque no display. Os valores são retornados em ASCII no formato xxx,yyy«
  • No modo Botão, até 20 botões podem ser definidos e são tratados automaticamente pelo display, se um botão for tocado, sua imagem é invertida no display e o código Bn«, onde n é o número do botão é enviado pela serial. Assim que o botão for solto o código bn« é enviado.
  • O modo HotSpot é similar ao modo Botão, a diferença é que a área sensível não é invertida e os códigos enviados são Hn« e hn« para o toque e quando é solto respectivamente.

Touch Calibrate - Calibra o Touch Screen - tc
Calibra o touch screen
Exemplo: tc«
Resultado: A tela de calibração é mostrada

Button Define - Define Botão - bd n x y "texto"
Cria um botão
Exemplo: bd 1 50 20 “Teste”«
Resultado: Desenha um botão com centro no ponto 50,20

Criando telas gráficas


   As telas para o display podem ser criadas em qualquer programa gráfico disponível para Windows. Crie a tela com 128x64 pontos ou se já tiver alguma imagem pronta, redimensione para este tamanho.

   As imagens devem ser gravadas no formato BMP do Windows e 1 bit de color ou BW.

   Clique aqui e baixe o programa que permite o teste de todos os comandos suportados pelo display assim como o envio das telas gráficas.


Dimensões do display





Providências preliminares para uso do módulo:


Temos dois modos de ligar o módulo à Arduino:

  1. Arduino como intermediaria proporcionando comunicação do PC com o módulo - TX do módulo com TX da Arduino e RX do módulo com RX da Arduino.
  2. Arduino enviando comandos para o módulo – TX do módulo no RX da Arduino e RX do módulo com TX da Arduino.
Assim para realizar testes e enviar imagens para o módulo temos de fazer as ligações no modo 1, conforme o diagrama:



TECLADO MUSICAL

Circuito.



 #include <SoftwareSerial.h>

SoftwareSerial mySerial(4, 5); // RX, TX

char code[2]={0,0};
int bytesread = 0;
int  val = 0;
String codigoObtido="";

void setup()
{


  // Inicia comunicação Serial
  mySerial.begin(9600);

mySerial.println("z");
delay(300);
//desenha retangulo

//desenha botão Dó
mySerial.print("bd 1 8 10 ");
mySerial.write(34);
mySerial.print("D");
mySerial.write(34);
mySerial.println();
//desenha botão Ré
delay(200);
mySerial.print("bd 2 26 10 ");
mySerial.write(34);
mySerial.print("R");
mySerial.write(34);
mySerial.println();
//desenha botão Mi
delay(200);
mySerial.print("bd 3 46 10 ");
mySerial.write(34);
mySerial.print("M");
mySerial.write(34);
mySerial.println();
//desenha botão Fá
delay(200);
mySerial.print("bd 4 66 10 ");
mySerial.write(34);
mySerial.print("F");
mySerial.write(34);
mySerial.println();
//desenha botão Sol
delay(200);
mySerial.print("bd 5 83 10 ");
mySerial.write(34);
mySerial.print("S");
mySerial.write(34);
mySerial.println();
//desenha botão Lá
delay(200);
mySerial.print("bd 6 100 10 ");
mySerial.write(34);
mySerial.print("L");
mySerial.write(34);
mySerial.println();
//desenha botão Si
delay(200);
mySerial.print("bd 7 118 10 ");
mySerial.write(34);
mySerial.print("S");
mySerial.write(34);
mySerial.println();
  

}

void loop() {
  if (mySerial.available()) {
   //Havendo qualquer entrada na porta serial desvia para a função LeBotoes
    leBotoes(); 
  }
  
  

}


void leBotoes(){
 // Recebe as string do Touch screen
  
     if( mySerial.available() > 0) {

        val = mySerial.read();
        if(val!=13){
          //le todos os caracteres recebidos na porta serial até receber o caracter 13
          code[bytesread]=val;
          codigoObtido+=code[bytesread];
          //conta bytes lidos e monta string
          bytesread++;

        }else{
          //ao terminar de obter caracteres, desvia para função de comparação de String Recebida
          comparaStringRecebida();
          //Limpa variáveis
          bytesread=0;
          codigoObtido="";
        }
     
  }

}



void comparaStringRecebida(){
        Serial.print("Valor recebido do display : ");   
        Serial.println(codigoObtido);
        //compara Strings e toca nota correspondente
        if(codigoObtido.equals("B1")){tone(8,261,50);}
        if(codigoObtido.equals("B2")){tone(8,293,50);}
        if(codigoObtido.equals("B3")){tone(8,329,50);}
        if(codigoObtido.equals("B4")){tone(8,349,50);}
        if(codigoObtido.equals("B5")){tone(8,392,50);}
        if(codigoObtido.equals("B6")){tone(8,440,50);}
        if(codigoObtido.equals("B7")){tone(8,493,50);}
}

sexta-feira, 23 de maio de 2014

Ativar resistor Pull Up interno do Arduino.

    Para entender melhor este post recomendamos o post Resistor PULL UP e PULL DOWN.

   Ativar o Pull Up interno do arduino é muito simples. Não precisa definir nem um tipo de biblioteca e nem um código complexo, é praticamente igual a definir um pino de entrada digital comum. Veja no exemplo abaixo.
------------------------------------------------------------------------------------------------------------------------------------------------------

 // Exemplo de como ativar resistor pull Up interno
 // Por: Michel Back
 // Acesse : http://arduinomais.blogspot.com.br/

 boolean botao = 8;   // define pino 8 vinculado a uma variavel
                                 // booleana
                 
 boolean led = 13;   // define o pino 13 vinculado a uma variável
                              // booleana
                 

 void setup() {

  pinMode ( botao , INPUT_PULLUP);   // define que o pino botão
                                                          // será uma entra digital com
                                                          // pull up interno a tivado.
  pinMode ( led , OUTPUT);                  // define como saida digital   
}

 void loop() {

     /// por o pull Up manter a etrada sempre em nível alto, deve-se usar
     /// uma lógica inversa, ou seja, o botão ligado a entrada digital deve
     ///chavear o GND

   if ( digitalRead (botao) == 0 ){     // se a entrada botão for igual a 0
     digitalWrite (led, HIGH);            // acende o led do pino 13
     delay (1000);                            // por 1 segundo
    }
    else {                                        // se não
    digitalWrite (led, LOW);             // led apagado.
    }
 

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



                                                        compartilhe
                                                        

quarta-feira, 21 de maio de 2014

Resistor PULL UP e PULL DOWN.

    Técnica largamente utilizada em circuitos eletrônicos digitais com microcontroladores ou chaveamento de transistores, para evitar a flutuação e garantir o estado de uma porta configurada como entrada digital em nível lógico 0 ou em nível lógico 1. Esse post explica passo a passo como implementar, e também quando implementar.


   Pull Up.

   Como demonstrado na imagem acima , resume-se em um resistor de alto valor (de 10k a 50k) garantindo que sempre o valor recebido na entrada digital seja nível alto no momento em que a chave estiver aberta, e quando a chave é fechada leva o nível a zero. Caso eliminado o resistor de pull up tem-se o risco de a entrada ir a valor alto sem que a chave estiver acionada devido a flutuação.

Pull Down

   O pull Down tem o mesmo princípio do pull up, mudando apenas a lógica de funcionamento. Mantém o estado lógico da entrada em zero no instante que a chave estiver aberta. Garantido também que o estado lógico da entrada digital mude apenas quando a chave for fechada.

   Com o Arduino é possível usar essa técnica internamente via programação, sem precisar usar um resistor físico ligado ao circuito. Via programação você pode ativar um resistor de Pull Up. Veja no tutorial clicando no link abaixo.




                                         compartilhe
                                       

terça-feira, 20 de maio de 2014

Como instalar o IDE e o Driver??

    Este é um problema que a grande maioria dos usuários iniciantes do Arduino enfrentam, mas nao é nada que não possa ser solucionado. 
    O software de programação é portátil, ou seja, não precisa ser instalado, basta apenas extrair  na pasta desejada.
    Ao extrair o arquivo compactado, aparecerá uma pasta com o mesmo nome do arquivo compactado. Dentro da pasta você irá encontrar outras sub pastas e o executável do programa, é só abrir o executável e o software irá abrir.


Depois de abrir o Software é necessário selecionar qual é o modelo do seu arduino, veja abaixo:


  Para instalar o driver do seu arduino, ele deve estar conectado ao seu computador pela porta USB, depois você precisa abrir o gerenciador de dispositivos do seu computador. 

Como abrir o gerenciador:




  Como na imagem acima, clique em atualizar Driver. Escolha por procurar o dirver manualmente.


clique em procurar, selecione a pasta driver que está dentro da pasta do software do arduino que foi extraida ateriormente, e clique em avançar.


e está pronto!


Arduino + controle remoto RF.



   Teste realizado com kit RF, composto por um controle remoto RF de 433MHz com 4 canais e um módulo receptor RF também de 433MHz.



Esquema de ligação



esquema de ligação - Arduino Mais

CLIQUE NA IMAGEM PARA AMPLIAR

GND    <==>   GND         <==>    FIO PRETO
5V       <==>   5V            <==>   FIO VERMELHO
D0       <==>   PINO 8     <==>   FIO LILÁS          <==> BOTÃO A  
D1       <==>   PINO 9     <==>   FIO MARROM     <==> BOTÃO B
D2       <==>   PINO 10   <==>   FIO LARANJA    <==> BOTÃO C
D3       <==>   PINO 11   <==>   FIO AZUL           <==> BOTÃO D

Dados Técnicos


Fabricante:                            Jtron
Modelo:                                03100430
Frequência:                           315MHz
Distancia de transmissao:       120 ~ 150m (campo aberto)

CÓDIGO UTILIZADO NO TESTE.

const int buttonPin = 8;
const int buttonPin1 = 9;
const int buttonPin2 = 10;
const int buttonPin3 = 11;
const int ledPin =  13;


int buttonState = 0;      

void setup() {
 
  pinMode(ledPin, OUTPUT);    

  pinMode(buttonPin, INPUT);
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);  
}

void loop(){

 
 
  if (  digitalRead(buttonPin) == HIGH |  digitalRead(buttonPin1) == HIGH |  digitalRead(buttonPin2) == HIGH |  digitalRead(buttonPin3) == HIGH  ) {    
      digitalWrite(ledPin, HIGH);  
  }
  else {
        digitalWrite(ledPin, LOW);
  }
}

                comente compartilhe aqui