Arduino Leonardo 36

O Arduino Leonardo é uma placa com microcontrolador ATmega32u4 e comunicação USB embutida no microcontrolador. Possui 20 pinos de entrada/saida, dos quais 7 podem ser usados como saídas PWM (Portas 3,5,6,9,10,11 e 13) e 12 como portas analógicas (A0 – A5, mais os pinos 4,6,8,9,10 e 12, A6 a A11, respectivamente). Tem 32 Kb de memória, sendo que 4 são usados pelo bootloader.

Arduino Leonardo R3

É uma placa muito parecida com o Arduino Uno (o tamanho (aprox. 70 x 54mm) e as furações são as mesmas), principalmente na disposição dos conectores na placa. Na parte superior, podemos ver as portas digitais de 0 a 13,e os pinos GND, AREF, SDA e SCL, na parte superior esquerda. Abaixo, os conectores reset, 5v, gnd, 3.3v, etc, e as portas analógicas de 0 a 5 :

Arduino Leonardo

No lado esquerdo da placa, temos o botão de reset e também os conectores de força (7 à 12 V recomendados), além do conector USB, que diferentemente do Arduino UNO, tem o padrão micro-USB e usa o cabo de conexão mostrado abaixo. Nesse lado da placa também ficam os leds Tx, RX, ON (Ligado), e o led ligado à porta 13.

Conector Micro-USB

A instalação do Arduino Leonardo é feita de maneira praticamente automática no computador. Nos nossos testes, não foram necessários drivers específicos, e a placa foi reconhecida normalmente. Foram instalados 3 dispositivos : Arduino Leonardo na porta serial COM13, USB Composite Device e USB Input Device :

Arduino Leonardo - USB Drivers

Para acessar o Arduino Leonardo à partir da IDE, não houve alteração, basta selecionar, no menu ferramentas, o Arduino Leonardo, e na porta serial a porta detectada pelo computador :

Arduino IDE - Leonardo

Uma das características do Arduino Leonardo é que o chip de comunicação USB já vem embutido no microcontrolador ATmega32u4, eliminando a necessidade de um chip controlador separadamente. Isso também faz com que o Arduino Leonardo possa ser configurado, no computador, como um dispositivo de entrada, como um mouse ou um teclado.

E para mostrar essa funcionalidade, vamos montar um circuito para enviar uma string para o computador quando um botão for pressionado, “imprimindo” essa string no Bloco de Notas ou em outro programa qualquer. A chave para o disparo do envio da string é um push button ligado à porta 3 do Arduino Leonardo.

Arduino Leonardo - Circuito push-button teclado O programa não usa nenhuma biblioteca adicional para enviar a string ao computador, e os comandos são parecidos com os que usamos para enviar dados ao serial monitor. Lá, usamos Serial.print e Serial.println, por exemplo. Para o teclado, usamos os comandos Keyboard. print e Keyboard.println :

//Programa : Envio de string usando Arduino Leonardo
//Alteracoes : Adaptacoes : MakerHero
//
//Baseado no programa Keyboard Message test
//de Tom Igoe e Scott Fitzgeral

const int buttonPin = 3;          //Pino ligado ao push-button
int previousButtonState = HIGH;   //Variavel para checar o estado do botao

void setup() {
  //Define o pino do botao como entrada
  pinMode(buttonPin, INPUT);
  //Inicializa o teclado
  Keyboard.begin();
}

void loop() {
  //Le o valor do pushbutton
  int buttonState = digitalRead(buttonPin);
  //Verifica se o estado do botao foi alterado
  if ((buttonState != previousButtonState)
  //Se o botao for pressionado, imprime a mensagem
  && (buttonState == HIGH)) {
    Keyboard.println("MakerHero - Tudo para o seu projeto !");
  }
  //Salva o estado do botao para comparacao no proximo loop
  previousButtonState = buttonState;
}

Carregue o programa no Arduino Leonardo e, para testá-lo, abra o bloco de notas do seu computador. Pressione o botão do circuito e a string será enviada para o bloco de notas, como se tivesse sido digitada no teclado :

Arduino Leonardo - Teste notepad

O bloco de notas foi só um exemplo. O Arduino vai se comportar como se fosse um teclado normal, enviando caracteres para o Word, Excel, Powerpoint e qualquer outro programa que aceite entradas via teclado. As possibilidades para este tipo de projeto são imensas.

 Gostou? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

36 Comentários

  1. Olá boa tarde , por acaso como eu conseguiria controlar o loop do comando keyboarde-write…logo depois de enviar um código ascii.

    1. Olá Rosimar,

      Você poderia, por exemplo, utilizar o comando while, e acrescentar um condicional que seja atualizado após o envio do código. Dessa forma você terá controle do loop, transmitindo quantas vezes desejar, ou desde que determinada condição que você determinar seja cumprida.

      Abraços!
      Vinícius – Equipe MakerHero

  2. Bom dia! Ate quantos motores de passo podem ser ligados no arduino Leonardo? Sou estudante de automação e tenho um projeto em mente com uso de dois motores Nema 23 de 8 kgf e um motor vibratorio. Podem me judar?

    1. Moacir,

      Você pode usar algum shield como o L293D, assim você consegue controlar 2 motores de passo.

      Abraços!
      Diogo – Equipe MakerHero

  3. Reconhece tambem pelo Android Automaticamente a placa,obrigado desde ja!

  4. uma dúvida: tem limite de quantos botões dá para colocar?
    tipo, eu queria fazer uma réplica de um teclado comum de pc, algo em torno de uns 80 botões. cada botão iria emular o equivalente a uma tecla o teclado.
    daria para fazer, ou o limite de botões é o de quantidade de contatos na placa?

    1. Enio,

      Exatamente isso,

      O número de botões equivalem a quantidade de pinos disponíveis.

      Att

  5. Será que no início desse cód. não faltou um #include não??? Outra coisa, como faz para o Arduino enviar uma barra ao contrário “\”? Se colocamos um sinal destes no Keyboard.println dá erro na hora da compilação, se colocamos Keyboard.write(92) sai um “Ç”. Será que não é possível enviar uma barra inclinada para a esquerda “\”do Arduino para o PC?

    1. Eduardo,

      Você já tentou usar “\\” em vez de uma barra invertida só? A barra invertida é uma tecla de “escape”, então se usar ela duplicada, você escapa do escape haha! Assim o compilador converte para uma barra invertida só 😉

      Abraços!
      Diogo – Equipe MakerHero

  6. porque algumas sketch nao funciona o controlador de jogo ???

    1. Luan

      Sugiro você levar sua dúvida, com o maior nível de detalhes possível, para o nosso fórum! Lá sempre tem como ajudar melhor 😀

      Abraços!
      Diogo – Equipe MakerHero

  7. Excelente artigo. Ficou uma dúvida… Como fazer para o arduíno escolher um programa específico, que esteja aberto ou não, para fazer a inserção do texto? Grande abraço!

    1. Olá William,

      Acredito que o texto será inserido em qualquer editor de texto que você abrir.

      Abraço!
      Rosana – Equipe MakerHero

      1. Minha intenção é que, uma vez pressionado o botão, o Arduino abra, digamos, Word ou o Chrome e, somente então, insira um texto. Já tenho um Arduino Leonardo e estou trabalhando num projeto que deverá se comportar dessa maneira, abrindo o navegador e indo a um site específico para, em seguida, fazer login, etc etc

        1. Olá Wilian,

          Já avaliou a possibilidade de usar uma Raspberry Pi (talvez a Raspberry Pi Zero W mesmo) para fazer o seu projeto?
          Acho que uma Raspberry seja mais adequada para fazer seu projeto.

          Abraço!
          Rosana – Equipe MakerHero

        2. Wilian, dá uma olhada neste cód que abre o youtube e chama um vídeo sozinho. Ah, no inicio do cód. você precisa colocar Keyboard.h entre sinal de menor que e maior que (por aqui não permite essa grafia).

          #include Keyboard.h

          void setup() {

          Keyboard.begin();
          delay(1000);

          Keyboard.press(KEY_LEFT_GUI);
          Keyboard.press(‘r’);
          delay(10);
          Keyboard.releaseAll();
          delay(200);

          Keyboard.print(“chrome https://www.youtube.com/channel/UCb0Br0W2JqzNzPLCi_XmoEw?sub_confirmation=1“);
          Keyboard.press(KEY_RETURN);
          delay(10);
          Keyboard.releaseAll();
          delay(5000);
          Keyboard.press(KEY_TAB);
          delay(10);
          Keyboard.releaseAll();
          Keyboard.press(KEY_TAB);
          delay(10);
          Keyboard.releaseAll();
          Keyboard.press(KEY_RETURN);
          delay(10);
          Keyboard.releaseAll();
          delay(500);
          Keyboard.press(KEY_LEFT_ALT);
          delay(10);
          Keyboard.press(KEY_F4);
          delay(10);
          Keyboard.releaseAll();
          Keyboard.end();

          }

          void loop() {

          }

  8. Estou com uma placa esp8266-01 para comunicar o Arduino Leonardo no WI-FI, usei vários exemplos do Uno, código e esquema elétrico mas não tive sucesso… Alguém conseguiu comunicar, e pode dar uma dica do código e do esquema elétrico.

  9. Ola boa noite estou com um projeto em andamento, já comprei os componentes na felipflop, tenho alguns conhecimentos em programação, mas preciso de uma programação especifica para o meu projeto.
    Preciso de ajuda com o arduino Leonardo para esta programação, gostaria de saber qual o custo, para programar um arduino com uma programação especifica.

  10. Olá Filipe,
    SOU ARTISTA PLÁSTICO-ESCULTOR E DIRIJO A OFICINA DE ESCULTURA DO MUSEU DO INGÁ-NITEROI-RJ]
    TEM UM TRABALHO DE UMA ALUNA QUE RESOLVI USAR UMA PLACA “ARDUINO UNO R3” PARA CONTROLAR UM MOTOR 12V CC COM UM PROGRAMA TIPO ELEVADOR (SOBE E DESCE) COM SENSORES TIPO INTERRUPTORES MICRO SWITCH >
    MINHA DUVIDA SERIA COMO RESETAR O PROGRAMA QUE PODE TER SIDO COLOCADO DE MANEIRA ERRADA E COLOCAR NOVAMENTE O MESMO PROGRAMA NA PLACA.
    O RESETE DEVE SER FEITO COM A PLACA LIGADA NO LEPTOP?..
    POR FAVOR ME ORIENTE!!!
    ATENCIOSAMENTE,
    CARLOS VAN DER LEY

  11. Caso eu precise somente gravar um programa ja feito, quais sao os caminhos a seguir.

  12. Pessoal, tive muita dificuldade em usar a placa pois os drivers para Windows 7-64bit não eram encontrados em um laptop HP.

    Só consegui que a placa funcionasse quando liguei em uma porta puramente USB2.0.

  13. Preciso da seguinte funcionalidade – Conectar vários “piezos” no arduino , de forma que ao golpeá-los, o comando seja como se estivesse teclando as letras do teclado do computador.È possivel com este modelo leonardo ?
    Agradeço antecipadamente .

  14. olá será que voçê poderia fazer um programa como o do exemplo de cima mas de envez de ser só com 1 botáo podia por 2 botões

  15. Olá, qual drive você usa para configurar a placa?

    1. Boa tarde Claudio,

      Você diz, para que ela seja reconhecida pelo Windows ?

      Abraço

      Adilson – Equipe MakerHero

  16. Esse código funciona para o arduino uno?

    1. Boa noite Rafael,

      Não, as funções Keyboard. print e Keyboard.println funcionam apenas com o Leonardo.

      Abraço.

      Adilson – Equipe MakerHero

  17. MakerHero…

    será que você poderia me ajudar uma duvida, estou com uma dificuldade em medir o fluxo de agua com um sensor de fluxo de 1/2 polegada.

    assim estamos usando um display onde deve marcar quanto de litro de agua esta passando pelo sensor, mas esta dando uma diferença na marcação porque nao sabemos em quanto deve estar vazao = contaPulso / ?; //Converte para L/min

    onde esta o ponto de interrogação é o problema a gente ja estamos testando muitas formas mais estamos meio que perdidos.

    pode ajudar?

  18. esse Arduíno vou poder colocar um display e um modulo micro SD?
    aguardo resposta …

    1. Boa tarde Raphael,

      Pode sim, sem problemas.

      abraço.

      Adilson – Equipe MakerHero

  19. Como faço para configurar e usar as portas a6-a11 como entrada analogica??

    1. Boa noite,

      No Arduino Uno você pode usar as portas 3, 5, 6, 9, 10 e 11 como saídas PWM.

      Adilson – Equipe MakerHero

  20. Ola, gostaria de montar uma cabine de fotos e não estou conseguindo criar o botão de start.
    Por gentileza pode me ajudar?

    1. Oi Daiane,

      Pode nos dar mais detalhes do seu projeto ? Utiliza Arduino ?

      Grato.

      Adilson – Equipe MakerHero

  21. Por favor, voltagem não existe, a diferença de potencial é chamada de tensão.
    Volts é a unidade de medida.

    1. Boa noite,

      Agradecemos a sua contribuição.

      Abraço !

      Adilson – Equipe MakerHero