Para conectar o Arduino Leonardo no computador, você vai
precisar de um cabo USB tipo Micro-B.
Este cabo fornecerá energia e conectividade para a placa. Ao
programar o Leonardo, você deve escolher “Arduino Leonardo” no menu Tools
> Boards a partir do Arduino IDE.
Diferenças do Arduino Uno
Em geral, você programa e usa o Leonardo como qualquer outra
versão do Arduino. Existem, entretanto, algumas diferenças muito importantes.
Microcontrolador único para sketches e comunicação USB
O Leonardo difere de versões do Arduino na maneira em que usa
o microcontrolador para ambas as tarefas: rodar os sketches e se comunicar
com o computador, através de USB. O UNO e outras versões do Arduino usam
microcontroladores separados para essas duas funções, ou seja, a conexão USB
com o computador permanece aberta, independente do estado do microcontrolador
principal. Combinando essas duas funcionalidades em um único microcontrolador,
o Leonardo nos permite maior flexibilidade, na forma em que ele se comunica com
o computador. Isto também ajuda a reduzir o custo da placa, removendo a
necessidade de um microcontrolador adicional.
Re-enumeração da Serial no Reset
Considerando que o Leonardo não possui um chip dedicado para
lidar com a comunicação serial, significa que a porta serial é virtual – uma
rotina do programa. Assim como o computador cria uma instância da porta serial quando
você conecta um Arduino qualquer na porta USB, o Leonardo cria uma instância de
porta serial toda vez que roda seu bootloader. A placa, quando conectada na
porta USB do computador, é instanciada como um Connected Device Class (CDC).
Isso significa que toda vez que você reinicia a placa, a
conexão serial USB também é reiniciada. A placa vai desaparecer da lista de
portas seriais, e a lista será re-enumerada. Qualquer programa que tentar abrir
uma conexão serial com o Leonardo perderá sua conexão. Em contraste com o
Arduino UNO, que você pode reiniciar o microcontrolador principal (o
ATMega328P), sem terminar a conexão USB (que é mantida por um ATMega8U2 ou um
ATMega16U2). Essa diferença tem implicações na instalação do driver, no upload,
e na comunicação; que serão discutidos abaixo.
Não reinicia quando a abre a Serial
Ao contrário do Arduino UNO, o Leonardo não reinicia o sketch
quando você abre uma porta serial no computador. Isso significa que você não
verá os dados que já foram enviados pela serial para o computador, incluindo,
por exemplo, a maioria dos dados enviados na função setup().
Esta mudança significa que, se você está usando qualquer
instrução Serial print(), println() ou write() no seu setup(), elas não serão
exibidas quando você abrir o monitor da serial. Para contornar isso, você pode
verificar se a porta serial está aberta antes de chamar a função
Serial.begin(), da seguinte forma:
Serial.begin(9600);
// enquanto serial nao esta
aberta, nao faca nada!
while (!Serial) ;
while (!Serial) ;
Emulação de Teclado e Mouse
Uma vantagem de usar um único chip para seus sketches, e para
a USB, é de aumentar a flexibilidade na comunicação com o computador. Enquanto
a placa aparece como uma porta virtual (também chamado CDC) serial, aos olhos
do seu sistema operacional para programação e comunicação (com a feita pelo
Arduino UNO), este também pode se comportar com um teclado ou mouse (HID). Veja
a sessão de “Boas Práticas de Codificação” abaixo para dicas sobre como usar
essa funcionalidade.
Separação da USB e da Comunicação Serial
No Leonardo, a classe principal Serial refere-se ao driver serial da conexão USB da sua placa. E
não está conectada diretamente (fisicamente) aos pinos 0 e 1. Para usar o
hardware da porta serial (pinos 0 e 1, RX e TX), utilize Serial1. (Veja Serial
Reference Pages para maiores informações)
Diferenças entre Mapeamento de Pinos
O Leonardo possui algumas pequenas diferenças na sua
capacidade de atribuição de vários pinos (especialmente para SPI e TWI). Estes
são detalhados na Hardware
Page.
Instalando os Drivers para o Leonardo
OSX
·
A primeira vez que você conecta um Leonardo em
um Mac, o "Keyboard Setup Assistant" será lançado. Não existe nada
para ser configurado com o Leonardo, então você pode fechar a caixa de diálogo
clicando no botão vermelho, no canto superior esquerdo da janela.
Instruções para Windows
As instruções a seguir são para o Windows 7. Elas são válidas
também para o Windows XP, considerando algumas pequenas diferenças entre as
janelas de diálogo.
·
Conecte a sua placa e espere pelo Windows
começar o processo de instalação dos drivers. Caso o instalador não inicie
automaticamente, navegue até o “Windows Device Manager” (Start > Control
Panel > Hardware) e encontre o Arduino Leonardo na listagem de dispositivos.
Clique com o botão direito e escolha Update
driver.
·
Na próxima tela, escolha "Browse my
computer for driver software", e clique em Next.
·
Clique no botão Browse... . Outra caixa de
diálogo aparece: navegue até a pasta do Arduino que você acabou de fazer o
download. Selecione a pasta drivers e clique OK, então clique em Next.
·
Você receberá uma notificação de que a placa não
passou no teste Windows Logo. Clique no botão Continue Anyway.
·
Depois de alguns momentos, uma janela irá te
informar que o wizard terminou a instalação do Arduino Esplora. Pressione o
botão Close.
Instruções para Linux
Não existe a necessidade de instalar drivers para Ubuntu
12.04.
Carregando Código no Leonardo
No geral, você carrega o código no Leonardo como faria em
qualquer outra versão do Arduino. Clique no botão upload, no Arduino IDE, e seu
sketch será automaticamente carregado na placa; e então iniciado. Isso funciona
mais ou menos da mesma forma que no UNO: o software do Arduino comanda um reset
na placa, lançando um bootloader – que é responsável por receber, armazenar, e
iniciar o novo sketch.
Entretanto, em razão da porta serial ser virtual, ela
desaparece quando a placa efetua um reset, então o software do Arduino usa uma
estratégia diferente para coordenar o upload, tanto com o UNO, quanto com
outras versões. Assim, após iniciar o auto-reset do Leonardo (usando a porta
serial selecionada no menu Tools > Serial Port), o software do Arduino
espera por uma nova porta virtual (CDC) serial / COM aparecer – a qual ele
assume representar o bootloader. Então ele efetua o upload para esta nova porta
COM que apareceu.
Essas diferenças afetam a forma que você utiliza o botão de
reset para efetuar um upload, se o auto-reset não estiver funcionando.
Pressione e segure o botão do Leonardo, então clique no botão de upload no
software do Arduino. Apenas solte o botão de reset após você ver a mensagem
“Uploading...” aparecer na barra de status do software. Quando você fizer isso,
o bootloader iniciará, criando uma nova porta virtual (CDC) serial no
computador. O software verá a porta aparecer e efetuará o upload através dela.
Novamente, isso é apenas necessário se a forma normal de upload (i.e. apenas
clicando no botão de upload) não funcionar. (note que o auto-reset é iniciado
quando o computador abre a porta serial na velocidade de 1200 bauds; e então a
fecha; isso não funciona se algo interfere com a comunicação USB da placa – por
exemplo, desabilitando as interrupções).
Boas Práticas de Codificação com o Leonardo
Atenção ao utilizar bibliotecas de teclado e mouse USB: se
as bibliotecas de Mouse ou Keyboard estão constantemente habilitadas, será
difícil programar sua placa. Funções como Mouse.move() e Keyboard.print(), que
movem o cursor do mouse ou enviam teclas digitadas para um computador
conectado, devem apenas ser chamadas quando você estiver pronto para atendê-las.
É recomendável usar um sistema de controle que possa ligar essa funcionalidade,
assim como um interruptor, ou apenas respondendo a dispositivos que você possa
controlar. Quando usando bibliotecas Mouse e Keyboard, é melhor testar antes o
resultado, através de Serial.print(). Dessa forma, você pode garantir que os
resultados são razoáveis. Mais informações de como lidar com isso, veja
exemplos nas bibliotecas Mouse e Keyboard.
Usando o monitor de serial de forma efetiva: como a
serial está compartilhando o microcontrolador com o processamento principal, a
capacidade do seu computador de preencher o buffer da serial será tão rápido
como em versões do UNO ou anteriores. Você vai reparar que se você continuar
enviando dados pela serial repetidamente, por exemplo, assim:
void loop() {
int sensorReading = analogRead(A0);
Serial.println(sensorReading);
}
int sensorReading = analogRead(A0);
Serial.println(sensorReading);
}
O monitor da serial vai ficar extremamente lento, enquanto
ele tenta acompanhar a velocidade. Se você se deparar com essa situação,
adicione um pequeno atraso ao seu loop de forma que o buffer da serial do
computador não seja preenchido tão rápido até um atraso de um milissegundo
ajudará:
void loop() {
int sensorReading = analogRead(A0);
Serial.println(sensorReading);
delay(1);
}
int sensorReading = analogRead(A0);
Serial.println(sensorReading);
delay(1);
}
Aplicações seriais que utilizam as bibliotecas nativas, que
não seja a biblioteca RXTX, lêem o buffer da serial mais rapidamente, assim você
não deve encontrar este erro, fora do monitor da serial, processing, ou outra
aplicação baseada na biblioteca RXTX.
Traduzido por Renato Aloi do original “Guide to the Arduino
Leonardo and Micro” (link).
Adquira já o seu Arduino Leonardo na Loja do Curso Arduino!
Parabéns! Ótimo guia, ajudou muito!
ResponderExcluirGrande Renato Aloi! COmo sempre ajudando os iniciantes e quem jpa está a um tempo no "Mundo Arduino"! Me salvou com a parte que fala do Carregando Código no Leonardo!!!
ResponderExcluirMuito obrigado!!!